[1] Comentário enviado por
gzanoni em 22/02/2008 - 11:44h:
Me parece bem bacana, quando estiver em casa vou ver o que podemos melhorar nos scripts.
Parabéns!
[2] Comentário enviado por
exercitobr em 22/02/2008 - 11:49h:
Parabéns, um dos melhores que já vi. Recomendo!
Saudações!
[3] Comentário enviado por
JhoniVieceli em 22/02/2008 - 11:53h:
-----------ATENÇÃO!!!!! BUG NO SCRIPT DE BACKUP DIFERENCIAL----------
Coloquei uma variável que não existe no código do Backup Diferencial, a váriavel é a $TMP_FIND, isso pode estar causando erros como esse
"find: argumento inválido `-exec' para `-cmin'"
o código com erro é esse:
find $SRCDIR -type f -cmin $TMP_FIND -exec tar -rvf $ARQ {} ";"
Para CORRIGIR!
cole esse código a seguir com a variável correta! ($TIME_FIND) no lugar do código find anterior
find $SRCDIR -type f -cmin $TIME_FIND -exec tar -rvf $ARQ {} ";"
Peço desculpa a todos por esse erro, acabei mandando um script de versão anterior a final pro VOL que continha esse BUG sem querer.
Slackjackson quanto ao seu problema verifique lá no inicio do código se a variável $SRCDIR esta preenchida corretamente (com espaços entre os diretórios e com aspas duplas fechando). Se ainda estiver dando erro tente colocar o nome do diretório diretamente no local sem usar variavel isso pode resolver o problema.
Exemplo:
find /home/usuario -type f -cmin $TIME_FIND -exec tar -rvf $ARQ {} ";"
Obrigado e desculpa pelo pequeno erro e qualquer coisa posta de novo que vou ajudando na medida que eu puder
Abraço a todos
Valeu!
[4] Comentário enviado por
caue.garcia em 22/02/2008 - 12:47h:
Realmente funciona...
Obrigado!!
[5] Comentário enviado por
asrocha em 22/02/2008 - 13:32h:
Os scripts bons realmente, bem documentados, também já estou utilizando.
[6] Comentário enviado por
coffani em 22/02/2008 - 14:35h:
ja vai pros meus favoritos...
[7] Comentário enviado por
agimenez em 22/02/2008 - 19:12h:
muito legal cara, eu criei um esses dias, mas vou estudar o seu pra ver o q posso melhorar, uma coisa q fiz q eh bem legal, seria vc logar o bkp e enviar por email usando o mutt.
Por ex.: Crie um script que chame seu backup assim:
#!/bin/bash
LOG_BKP="/var/log/backup"
DATENAME=`date +%Y%m%d`
DATA=`date +%d/%m/%Y`
cd /etc
./bkp_sistemas.sh > $LOG_BKP/backup$DATENAME.log
/usr/bin/mutt -i $LOG_BKP/backup$DATENAME.log -s "Backup 'sistemas' de $DATA" email@dominio.com.br < /dev/null
No meu script de bkp ele tb vai soltando resultados se foi tudo bem ou nao e isso vai pro log..... a ultima linha, ele irá enviar por e-mail o log.
Parabens mais uma vez.. Abraço!
[8] Comentário enviado por
marcaoguitarra em 23/02/2008 - 06:46h:
bacana, vou testar também.
[9] Comentário enviado por
JhoniVieceli em 23/02/2008 - 09:22h:
Opa cara vou testar essa parte ai de enviar por email, qualquer duvida eu posto aqui
valeu
[10] Comentário enviado por
Gerson Raymond em 23/02/2008 - 11:15h:
Show de bola, muito bom mesmo, parabéns.
[11] Comentário enviado por
vera sucoski em 25/02/2008 - 13:17h:
Excelente! Já estou utilizando. Recomendo a todos
[12] Comentário enviado por
agimenez em 27/02/2008 - 08:35h:
Cara, tenho impressão que o comando:
#apagando arquivos mais antigos (a 7 dias que existe (-cmin +2)
find $DSTDIR -name "dif*" -ctime $TIME_DEL -exec rm -f {} ";"
if [ $? -eq 0 ] ; then
echo "Arquivo de backup mais antigo eliminado com sucesso!"
else
echo "Erro durante a busca e destruição do backup antigo!"
fi
ele não está apagando no meu, mas o comando está certinho....
Alguma diga para debugar?
valeu
[13] Comentário enviado por
JhoniVieceli em 27/02/2008 - 09:13h:
kra tenta fazer o seguinte:
Obs: supondo que onde esteja os backups esteja em /mnt/hdb
1 - escreva em um shell ai a parte o comando
find /mnt/hdb -name "dif*" -ctime +7 -exec rm -f {} ";"
ou
2 - no script escreva
echo "find $DSTDIR -name "dif*" -ctime $TIME_DEL -exec rm -f {} ";""
e verifique o que ele imprime
Confira pra ver se o codigo esta ok!
Se o código estiver ok e ele não estiver executando deve ser por que os arquivos que vc esta criando estão com a data muito recente ( menos de 7 dias de existencia), para testar isso use o comando touch para cria-los com data antiga, mais detalhes nesse link
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7772
Ou altera a data do ctime de +7 para +1 ou -1 para fazer o inverso
Abraço precisando de algo grite
flw
[14] Comentário enviado por
agimenez em 27/02/2008 - 22:52h:
Valeu cara, consegui resolver, o meu problema era o "dif*"... é o mal do ctrl+c / ctrl+v ... eu acrescentei esse trecho do seu código e não adaptei ao meu... mais uma vez.. Parabéns! Abraço!
[15] Comentário enviado por
bellafronte em 28/02/2008 - 10:25h:
Muito bom veiodruida, muito util, estava precisando de algo bem funcional como voce criou, parabéns!
[16] Comentário enviado por
f9informatica em 03/03/2008 - 19:32h:
Meu caro veiodruida, antes de qualquer coisa gostaria de parabeniza-lo pela dica e pela dedicao ao linux e interesse em ajudar a comunidade.
Me ajude por favor meu amigo. É o seguinte uso o SUSE 9.3 e estou precisando implementar uma rotina de backup e quando vi sua solucao meu olhos brilharam rsrsr é que nao tenho muita experiencia com scripts e pensei em implementar suas rotinas aqui.
Consegui com sucesso implementar a rotina de backp full inclusive pegando backups de particoes NTFS. Tudo fino e funcionando inclusive com agendamento no cron.
Mas quando tento implementar a sua rotina de backup diferencial da um erro sobre esse comando find tentei aplicar a dica que vc deu ao agimenez mais nao deu certo.
Rildo Santos
f9informatica arroba gmail com
[17] Comentário enviado por
JhoniVieceli em 04/03/2008 - 11:48h:
Opa!
Primeiro obrigado por gostar do artigo fico feliz valeu mesmo!
Antes quero saber qual extamente é o erro que esta acontecendo, mas mesmo assim vou te mostar como depurar o find.
Tente aplicar um find simples assim:
find /mnt/hdb -name "dif*"
onde mnt/hdb é a partição e dif* é todos os arquivos iniciados com essa palavra, claro só vai retornar resultado se esses paramentros forem atendidos. pode mudar dif* pra qualquer outra palavra só de teste.
deu certo?
bem se deu tente depois
find <particao> -name "<nome do arquivo>" -ctime +14
e veja se ele lista arquivos mais antigos do que 14 dias sendo que vc pode substituir por outro valor no mais (ex: +30)
deu certo?
bem se deu tente
find <particao> -name "<nome do arquivo>" -ctime +14 -exec ls -la {} ";"
Agora através da lista (ls -la) ele vai mostrar as permissões dos arquivos, 1 por 1 se deu certo até aqui jóia!
agora substituia a expressão de teste que a gente criou pela original do programa e vá depurando por partes pra ver o que acontece
Valeu
Abraço
[18] Comentário enviado por
esgol em 22/03/2008 - 11:39h:
Caro veiodruida,
No Backup diferencial tá dando o erro:
find: argumento inválido `-exec' para `-cmin'
provavelmente o mesmo do f9info mas a sintaxe parece estar ok, o que pode ser?
Abraços.
[19] Comentário enviado por
JhoniVieceli em 24/03/2008 - 13:50h:
Opa!
Cara provavelmente o teu find não deve ter alguns dos comandos que eu coloquei aqui como parâmentro.
Faz o seguinte da um "$man find" no console e veja se aparece os comandos -exec e -cmin. Verifique também se as variáveis estão corretas se você preencheu elas corretamente com valores que vc quer.
Se sim tente o seguinte. No lugar das variáveis coloque valores absolutos.
EXEMPLO:
find $DSTDIR -name "dif*" -ctime $TIME_DEL -exec rm -f {} ";"
COLOQUE NO CONSOLE ASSIM
find <dir de destino> -name "dif*" -ctime <tempo existe backup> -exec rm -f {} ";"
TRADUZINDO:
find /var/backups -name "dif*" -ctime +14 -exec rm -f {} ";"
Isso claro se vc estiver fazendo backup no diretorio /var/backups
Qualquer dúvida é só postar
vlw
Jhoni Vieceli
[20] Comentário enviado por
slackjackson em 24/03/2008 - 16:48h:
veiodruida, eu estava com o mesmo erro de "esgol", mas o meu era na seguinte linha: "find $SRCDIR -type f -cmin $TMP_FIND -exec tar -rvf $ARQ {} ";"" na hora de criar o arquivo de backup e não na hora de excluir, então eu vi q no script ñ existe a variável "TMP_FIND" e sim "TIME_FIND", fiz a substituição e parou de dá erro. ai apareceu outro problema, ele salva o arquivo de backup, mas dentro dele ñ tem nd, ele fica completamente vasio.
cara o script tah muito bom e me ajudando muito...me dá uma força ai.
vlw
[21] Comentário enviado por
JhoniVieceli em 25/03/2008 - 11:42h:
-----------ATENÇÃO!!!!! BUG NO SCRIPT DE BACKUP DIFERENCIAL----------
Coloquei uma variável que não existe no código do Backup Diferencial, a váriavel é a $TMP_FIND, isso pode estar causando erros como esse
"find: argumento inválido `-exec' para `-cmin'"
o código com erro é esse:
find $SRCDIR -type f -cmin $TMP_FIND -exec tar -rvf $ARQ {} ";"
Para CORRIGIR!
cole esse código a seguir com a variável correta! ($TIME_FIND) no lugar do código find anterior
find $SRCDIR -type f -cmin $TIME_FIND -exec tar -rvf $ARQ {} ";"
Peço desculpa a todos por esse erro, acabei mandando um script de versão anterior a final pro VOL que continha esse BUG sem querer.
Slackjackson quanto ao seu problema verifique lá no inicio do código se a variável $SRCDIR esta preenchida corretamente (com espaços entre os diretórios e com aspas duplas fechando). Se ainda estiver dando erro tente colocar o nome do diretório diretamente no local sem usar variavel isso pode resolver o problema.
Exemplo:
find /home/usuario -type f -cmin $TIME_FIND -exec tar -rvf $ARQ {} ";"
Obrigado e desculpa pelo pequeno erro e qualquer coisa posta de novo que vou ajudando na medida que eu puder
Abraço a todos
Valeu!
[22] Comentário enviado por
ricardoas30 em 20/12/2008 - 17:53h:
Olá colega, gostaria de parabeniza-lo com os scripts. Estou com um probleminha. quando ele gera o arquivo ele não está gerando correto. ele gera assim: full-17-12-2008- não coloca a extensão e me parece que não finaliza a geração do arquivo deixando corrompido.
Estou utilizando o script do backup_full.sh
Gostaria de saber se é algum tipo de BUG ou se for reporta-lo.
Obrigado !
[23] Comentário enviado por
ricardoas30 em 05/04/2009 - 08:22h:
Acredito que resolvi o problema relatado do comentário 22 do dia 20/12/2008.
Eu modifiquei o seguinte comando abaixo do scripf backup_full:
Antigo:
DATA=`date +%x-%k%M%S` #pega data atual
Atual:
DATA=`date +%x` #pega data atual
Quando estava imprimindo -%k%M%S a hora do backup ele não gerava o arquivo corretamente, e quando eu o removi, pronto agora está OK.
Valeu comunidade...
[24] Comentário enviado por
lsilveira em 21/05/2009 - 12:04h:
tar: /root/backup-full-05/21/09.tar.gz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
tar: Removing leading `/' from member names
o meu ta dando esse erro
www.hubstore.com.br
[25] Comentário enviado por
pecelo em 26/05/2009 - 09:35h:
para lucasSA
vc tem que mudar o comando date, ele esta no formato com "/", o bash esta procurando diretorios /21/09.tar.gz mas o diretorio /21 não existe, isso no seu caso!mude para "date +%d-%m-%y" e tdo funcionara bem
Marcelo
[26] Comentário enviado por
TETEU em 08/07/2009 - 21:57h:
cara, muito boa ideia !!! codigo limpo e bem comentado... é isso ai !!!
ja fiz os 4 scripts funcionar aqui com algumas adaptações para o meu uso tipo nome dos arquivo, diretórios etc... esta funcionando perfeitamente. gostaria de sua opnião quanto ao agendamento desse backup, qual a frequencia que vc acha legal de usar cada um dos scripts, essas coisas ?
no mais, parabéns mesmo pelo código !
um abraço a todos do vol !
[27] Comentário enviado por
jgama em 10/07/2009 - 00:13h:
Mesmo trocando a forma de data no script backup_diferencial para
DATA=`date +%d-%m-%y`
Quando executo o script ainda aparece estas linhas abaixo:
root@firewall1:/usr/bin# sh /usr/bin/_backup_diferencial.sh
Programa de Backup Diferencial
Data de inicio: Thu 09 Jul 2009 11:35:23 PM BRT
tar: Removing leading `/' from member names
/etc/random-seed
tar: Removing leading `/' from member names
/etc/adjtime
tar: Removing leading `/' from member names
/etc/motd
tar: Removing leading `/' from member names
/etc/gtk-2.0/gtk.immodules
tar: Removing leading `/' from member names
/etc/mtab
tar: Removing leading `/' from member names
/etc/ld.so.cache
tar: Removing leading `/' from member names
/chroot/named/var/run/named.pid
tar: Removing leading `/' from member names
/chroot/named/named.run
--------------------------------------
Backup Diferencial concluído com sucesso
Data de termino: Thu 09 Jul 2009 11:35:23 PM BRT
Log gerado em /var/log/backup_diferencial.log
Arquivo de backup mais antigo eliminado com sucesso!
Script de compactação
Data de inicio: Thu 09 Jul 2009 11:35:23 PM BRT
Compactação concluída
Data de termino: Thu 09 Jul 2009 11:35:23 PM BRT
Compactação concluída
Log gerado em /var/log/backup_compactacao.log
O script executa com sucesso, mas como faço para deixar limpo sem esta informações:
tar: Removing leading `/' from member names
Abraço
[28] Comentário enviado por
JhoniVieceli em 10/07/2009 - 10:10h:
TETEU Obrigado por ter gostado do código, sei que ele nao ta lá aquelas coisas mas ja da uma mão para quem não tem nenhum esquema de backup...
Quanto ao esquema do agendamento do backup, acho que isso é dificil de definir uma padrão, ja que isso pode mudar de cliente para cliente.
Em clientes com pouca massa de dados, eu recomendo:
Backup full seja feita uma vez por semana, na madrugada de sexta para sabado ou no sabado, ao terminar esse backup, ter uma planilha de controle e anotar a data e o nome de quem fez o backup. Em alguns casos em usei HD externo usb e embaixo do hd colei um papel com uma pequena planilha, para registros de backup. Porém nada impede de ser feito backup full todo dia como falei isso depende do nivel de dados e dos recursos que vc tem (hds, midia, storage etc...)
Gosto do backup diferencial durante a semana em lugar do incremental, pois com o incremental se for perdido um dos backups c ta ferrado.rsrsrsr mas como falei isso depende da sua politica de backup.
No backup diferencial, o agendamento dele é relativo a massa de dados movimentada na empresa, pode ser feito de hora em hora ou no fim do dia. Dependendo interessante adotar um backup as 12:00 e outro as 18:00 no fim do expediente. Esses backups podem ser gravadas em midias dvd-rw ou em hd externo mesmo, um para cada dia da semana.
O tempo que ficará quardado o backup depende também, eu geralmente deixo o full quardado por 1 mês e depois reaproveito a midia (hd externo ou outra qualquer).
Outro ponto importante é que o backup deve ficar em lugar seguro, se ficar na empresa quardar em cofre corta-fogo, de preferencia uma copia do backup deve ser levada para casa do responsavel pelos dados (dono, gerente etc...), em algumas empresas todo dia o gerente quarda uma copia do backup no cofre e outra ele leva embora, e o full durante o fim de semana também é feito o mesmo.
Como observação final recomendo ter tudo isso em historico, e que também periodicamente seja quardado os dados da empresa em midias que nao serão apagadas, caso todo o resto falhe...
Valeu pelo comentário e espero ter ajudado
Jhoni Vieceli
[29] Comentário enviado por
JhoniVieceli em 10/07/2009 - 10:23h:
A mensagem do tar: Removing leading `/' form member names é exibida porque você não está no mesmo diretorio onde os arquivos serão criados.
Eu recomendo que para a mensagem nao aparecer a saida de erro seja redirecionada através do 2> por exemplo:
$find / -name s*.jpg 2>/dev/null
Mais sobre
http://www.codecoffee.com/tipsforlinux/articles2/042.html
Valeu
Jhoni Vieceli
[30] Comentário enviado por
danueli em 08/03/2010 - 14:54h:
olá.
Sei que faz tempo este post.
mas encontrei isto agora só que não está a funcionar.
isto sao as minhas configurações (porque quando formatei os discos um deles ficou como directoria /backups e com flag de arranque)
HD_O=/dev/sdb5
HD_MTD=/backups
quando digito 1 (para restaurar o full) e depois hd
responde-me:
mount: /dev/sdb5 already mounted or /backups busy
mount: according to mtab, /dev/sdb5 is already mounted on /backups
total 8
drwxr-xr-x 2 root root 4096 2010-03-08 18:06 .
drwxr-xr-x 3 root root 4096 2010-03-08 18:06 ..
Qual a data do arquivo que quer restaurar? (dd-mm-aaaa)
digito a data que criei o fullbackup.
e responde-me novamente:
------------------------------------------------------
ATENÇÃO: FALHA na tentativa anterior tente novamente
------------------------------------------------------
alguém me consegue a "abrir os olhos" com isto?
Abraços.
[31] Comentário enviado por
danueli em 11/03/2010 - 08:58h:
já está a funcionar! :)
obrigado veiodruida
[32] Comentário enviado por
danueli em 15/03/2010 - 08:24h:
éé... outro problema.. executando o script manualmente funciona
mas em crontab no log dá erro. :| o cron esta correto.
o que será? =|
Dá-me a entender que no cron ele nao detecta que é o user root que o está a fazer. mas está, porque segundo cron ao nao definir utilizador, assume o root.
[33] Comentário enviado por
jorgeeb4 em 04/04/2010 - 18:09h:
Caro danueli, pergunto se encontrou alguma solução para execução do scrip pelo cron?
Tenho o mesmo problema, e realmente o erro ocorre por que o scrip não consegue identificar o usuário que o esta executando.
[34] Comentário enviado por
jhapa_rc em 28/07/2010 - 08:37h:
pessoal estou como mesmo problema do jorgeeb4 e danueli...
manualmente o backup funciona, mas no cron da erro....
alguem sabe a solucao??
[35] Comentário enviado por
green-tec em 25/09/2010 - 12:23h:
Estava vendo esse script de backup, muito bom por sinal... e lendo os posts de problemas e duvidas.. e sobre a questão de o backup funcionar no manual e no cron não rodar, se me permite dizer, é que o script do jhoni possui saida para tela, para vermos o andamento do backup e esse tipo de saida costuma dar problema no agendamento do cron..tira essa saida e testa para ver..
abraços
[36] Comentário enviado por
gutuffy em 27/09/2010 - 20:39h:
Mesmo tirando o comando echo, não funcionou.
Alguém tem alguma outra sugestão?
Manualmente funciona o script, porém no crontab não roda.
valeu.
[37] Comentário enviado por
sano brujah em 19/10/2010 - 13:51h:
Cara, meus parabéns, sem comentários, muito bom mesmo.
[38] Comentário enviado por
GRAO_RJ_777 em 01/09/2011 - 01:03h:
pra mim o backup full funcionou com excessão do ultimo laço if
if [ $? -eq 0 ] ; then
echo "Arquivo de backup mais antigo eliminado com sucesso!"
else
echo "Erro durante a busca e destruição do backup antigo!"
fi
}
que só esta retornando a menssagem "Arquivo de backup mais antigo eliminado com sucesso" mesmo quando ele deleta arquivos.
Alguma sugestão?
Abs.
[39] Comentário enviado por
wellingtonmg em 08/09/2011 - 23:22h:
find $Diretorio -name "f*" -atime +20 -exec rm -f {} ";"
No meu funcionou com este comando....muito bom!!!
Vlw
[40] Comentário enviado por
cainf em 10/11/2011 - 16:10h:
No meu funcionou e gostaria de fazer a seguinte pergunta
Sempre crio pastas para cada usuário /home/nome_usuario
Gostaria de fazer um backup de cada pasta de cada usuario por exemplo
/arquivo/backup/joao.tar.gz /home/joao
/arquivo/backup/maria.tar.gz /home/maria
Porém ao excluir um usuário que é o caso de um desligamento da empresa o sistema verificar quais pastas estão dentro do home sendo assim não preciso realizar um backup geralzao do home e cada usuario ter a sua pasta compactada diminuindo e muito o tempo de restauração e tb não vou precisar acrescentar ou deletar pastas que forem criadas ou deletadas dentro do home
um grande abraço a todos
[41] Comentário enviado por
splendide em 26/12/2011 - 14:36h:
Primeiro parabéns pelo script e contribuição!
Tenho uma dúvida, esse tipo de backup feito não seria incremental ?
Pois é feito backup só dos arquivos que mudaram em relação ao dia anterior.
Pelo que sei o diferencial é feito em relação ao "backup full".
[42] Comentário enviado por
luizquerino em 03/02/2012 - 09:25h:
Bom dia primeiro post no VOL kk'
Preciso de uma dica, o script é incrível consigo usar normalmente manualmente, mais eu gostaria de alguma dica de como automatizar essa função para que seja feita todos os dias as 7:00 ao 12:00 as 19:00 e as 00:00.
Eu tentei usar o Cron mais não funcionou esta dando um erro.
Se alguém puder me ajudar agradeço muito.
[43] Comentário enviado por
joserf em 04/03/2012 - 14:06h:
ja tem alguma versao mais nova para postar pra gente ? belo artigo.