Ajuda com o RSYNC [RESOLVIDO]

1. Ajuda com o RSYNC [RESOLVIDO]

Diogo Adzgauskas Perucio
perucio

(usa Debian)

Enviado em 20/09/2010 - 13:57h

Pessoal boa tarde,


seguinte uso o RSYNC para fazer backup das pastas de servidores da minha VPN, queria saber se tem como eu fazer uma copia somente dos arquivos que tiveram alteração para uma pasta, exemplo:

uso a seguinte sintaxe:

rsync -vaz --progress IP::ORIGEM /home/backup/DESTINO

ele copia somente as alterações dos arquivos para a pasta /home/backup/DESTINO , assim aumentando meu backup diariamente, mas se o usuário depois de 2 dias por exemplo sobreescrever um arquivo eu não tenho como buscar o arquivo de 2 dias atás.
queria +- assim, que ele fizesse o backup normalmente para a pasta /home/backup/DESTINO e queria que fazer um histórico dos ultimos 30 dias, ele cria uma pasta por exemplo no /tmp/dia_01 e ele só gravaria os arquivos que tivessem sidos alterados, no dia seguinte ele faz no /tmp/dia_02 e assim por diante, desde já agreço!


  


2. MELHOR RESPOSTA

Guilherme Domingues de Oliveira
korvoman

(usa Debian)

Enviado em 20/09/2010 - 23:44h

O find pode tratar disto.

find -mtime -1 /home

Neste exemplo ele irá procurar arquivos que foram alterados em menos de 1 dia. Logo já pode fazer um pipe compactando e com log.

find -mtime -1 /home -type f -print | tee /var/log/backup.log |tar -cjf arquivododia.tar.bz2 -T -


3. Re: Ajuda com o RSYNC [RESOLVIDO]

Diogo Adzgauskas Perucio
perucio

(usa Debian)

Enviado em 21/09/2010 - 15:36h

Boa tarde meu caro, korvoman, muito interessante esse comando, porém aqui ele está copiando todo o conteúdo da pasta /home/backup/ e não o que foi alterado de ontem para hoje.


Sintaxe:

find -mtime -1 /home/backup/ -type f -print |tee /var/log/backup.log |tar -cjf teste.tar.bz2 -T -



4. teste

Guilherme Domingues de Oliveira
korvoman

(usa Debian)

Enviado em 21/09/2010 - 21:03h

Fiz os teste, e acompanhei o que me falou. Sempre utilizando o utilitário man "comando".

Criei os arquvos de testes, com touch, a seguir crio o arquivo com data retroativa :
touch -d "09/18/2010" pasta/ontem.txt

ls -la /tmp/pasta

2010-09-18 00:00 ontem.txt
2010-09-21 20:52 outroarquivo
2010-09-21 20:51 teste

find /tmp/pasta/ -mtime -1

/tmp/pasta/
/tmp/pasta/outroarquivo
/tmp/pasta/teste

Enfim, da listagem foi passado arquivos que estão modificados de menos de 24 horas. Dâ uma consultada no man find, na tag mtime, também.

" -mtime n
File's data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
"





5. Re: Ajuda com o RSYNC [RESOLVIDO]

Tadzio Buscácio
Tadzio

(usa Linux Mint)

Enviado em 21/09/2010 - 21:56h

lembro de ter lido um ótimo artigo sobre isso, achei que fosse aqui no vol mas não achei.
o cara fez um script para backups full e incrementais por data/semana/mês separados em pastas... criava diversos símbolos para inodes repetidos inalterados e novas referencias para arquivos alterado, estes incrementais.
muito bom mesmo, genial. um dia eu acho de novo...


mas achei isso aqui na net, acho que é por aí que você quer né?
aqui no trabalho não tem rdiff e por isso não posso te ajudar mais.

8.4.1 Backup diferencial com rdiff
O rdiff-backup oferece backup legal e simples com histórico diferencial para quaisquer tipos de arquivos incluindo ligações simbólicas. Para fazer backup da maioria de ~/ para /mnt/backup:
$ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/backup
Para restaurar dados de três dias atrás do arquivo para ~/old:
$ rdiff-backup -r 3D /mnt/backup ~/old
Consulte rdiff-backup(1).

fonte: http://qref.sourceforge.net/quick/ch-tips.pt-br.html


tuturial sobre o rdiff: http://manual.sidux.com/pt-br/sys-admin-rdiff-pt-br.htm

no vol achei este aqui: http://www.vivaolinux.com.br/artigo/Mantendo-seus-dados-em-seguranca-com-o-Keep/



6. Re: Ajuda com o RSYNC [RESOLVIDO]

Guilherme Domingues de Oliveira
korvoman

(usa Debian)

Enviado em 21/09/2010 - 22:13h

Passando um pouco mais mastigado ainda, pode adicionar uma variável com o date, para distinguir os backups.

Para manter as coisas mais simples, pelo cenário e da necessidade similar, faço o rsync em junção com este script parecido em que postei.

[]'s


7. Re: Ajuda com o RSYNC [RESOLVIDO]

Cleverson Vieira de Lima
lima2008

(usa Ubuntu)

Enviado em 22/09/2010 - 07:48h

Bem, vou dar aqui minha contribuição, esse script está como script de logof em maquinas WinXp Professional:

@ECHO OFF
ECHO *******************************************************************************
ECHO * SCRIPT DE BACKUP USANDO O CWRSYNC *
ECHO * - CPD - 2010 *
ECHO * DATA: 22/02/2010 *
ECHO *******************************************************************************

SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
SET EXCLUIR=/cygdrive/C/WINDOWS/System32/GroupPolicy/User/Scripts/Logoff/excluir.txt
SET LOGFILE=\\BACKUP\IMAGENS\BACKUPLOG.TXT

ECHO INICIO: %USERDOMAIN% %DATE% %TIME% >> %LOGFILE%

REM OPÇOES DO COMANDO, APAGAR ARQUIVOS EXCLUIDOS DO SERVIDOR, E NÃO FAZ BACKUP DE FOTOS, VIDEOS, ARQUIVOS TEMPORARIOS, MUSICAS E EXECUTAVEIS.
rsync -a --timeout=5 becape@192.168.1.3:/backup/imagens/Scripts/excluir.txt %EXCLUIR%

SET OPCOES=-avP --timeout=30 --recursive --delete --link-dest=/backup/backup/Dia_01/%USERDOMAIN% --exclude-from=%EXCLUIR%

REM DADOS DO SERVIDOR DE BACKUP, E PASTA A SER SALVO O BACKUP
SET SERVIDOR=becape@192.168.1.3:/backup/backup/Dia_00/%USERDOMAIN%

REM *********************************************************************************
REM * O CAMINHO PASSADO AO RSYNC DEVE TER A BARRA INVERTIDA TROCADA POR BARRA NORMAL*
REM * E A BARRA NÃO PODE ESTAR DENTRO DAS ASPAS. *
REM * USE SINTAXE: "rsync %OPCOES% pasta de origem %SERVIDOR% *
REM * LEMBRE-SE QUE O COMANDO RSYNC É CASE SENSITIVE *
REM * REPITA O COMANDO PARA CADA PASTA QUE QUEIRA TRANSFERIR AO SERVIDOR *
REM *********************************************************************************

REM BACKUP PASTAS DE USUARIO WINDOWS XP
REM Copia toda a pasta do usuario, incluindo E-mail, Favoritos, Meus documentos e Desktop

rsync %OPCOES% /cygdrive/C/"Documents and Settings"/"%USERNAME%" %SERVIDOR%

REM INCLUIR ABAIXO OUTRAS PASTAS A FAZER BACKUP.

ECHO FIM : %USERDOMAIN% %DATE% %TIME% >> %LOGFILE%


8. Re: Ajuda com o RSYNC [RESOLVIDO]

Cleverson Vieira de Lima
lima2008

(usa Ubuntu)

Enviado em 22/09/2010 - 07:52h

Na maquina linux que recebe os backups, este script roda diariamente a 0 hora.

#!/bin/bash

arquivo="/backup/backup"

function rotaciona {
if test -d ""$arquivo"/Dia_00/"$1""
then
echo "Rotacionando Backup de "$1""

# test -d ""$arquivo"/Dia_19/"$1"" && mv ""$arquivo"/Dia_19/"$1"" ""$arquivo"/Dia_20/"
# test -d ""$arquivo"/Dia_18/"$1"" && mv ""$arquivo"/Dia_18/"$1"" ""$arquivo"/Dia_19/"
# test -d ""$arquivo"/Dia_17/"$1"" && mv ""$arquivo"/Dia_17/"$1"" ""$arquivo"/Dia_18/"
# test -d ""$arquivo"/Dia_16/"$1"" && mv ""$arquivo"/Dia_16/"$1"" ""$arquivo"/Dia_17/"
# test -d ""$arquivo"/Dia_15/"$1"" && mv ""$arquivo"/Dia_15/"$1"" ""$arquivo"/Dia_16/"
# test -d ""$arquivo"/Dia_14/"$1"" && mv ""$arquivo"/Dia_14/"$1"" ""$arquivo"/Dia_15/"
# test -d ""$arquivo"/Dia_13/"$1"" && mv ""$arquivo"/Dia_13/"$1"" ""$arquivo"/Dia_14/"
# test -d ""$arquivo"/Dia_12/"$1"" && mv ""$arquivo"/Dia_12/"$1"" ""$arquivo"/Dia_13/"
# test -d ""$arquivo"/Dia_11/"$1"" && mv ""$arquivo"/Dia_11/"$1"" ""$arquivo"/Dia_12/"
# test -d ""$arquivo"/Dia_10/"$1"" && mv ""$arquivo"/Dia_10/"$1"" ""$arquivo"/Dia_11/"

test -d ""$arquivo"/Dia_09/"$1"" && rm -rf ""$arquivo"/Dia_10/"$1""
test -d ""$arquivo"/Dia_09/"$1"" && mv ""$arquivo"/Dia_09/"$1"" ""$arquivo"/Dia_10/"
test -d ""$arquivo"/Dia_08/"$1"" && mv ""$arquivo"/Dia_08/"$1"" ""$arquivo"/Dia_09/"
test -d ""$arquivo"/Dia_07/"$1"" && mv ""$arquivo"/Dia_07/"$1"" ""$arquivo"/Dia_08/"
test -d ""$arquivo"/Dia_06/"$1"" && mv ""$arquivo"/Dia_06/"$1"" ""$arquivo"/Dia_07/"
test -d ""$arquivo"/Dia_05/"$1"" && mv ""$arquivo"/Dia_05/"$1"" ""$arquivo"/Dia_06/"
test -d ""$arquivo"/Dia_04/"$1"" && mv ""$arquivo"/Dia_04/"$1"" ""$arquivo"/Dia_05/"
test -d ""$arquivo"/Dia_03/"$1"" && mv ""$arquivo"/Dia_03/"$1"" ""$arquivo"/Dia_04/"
test -d ""$arquivo"/Dia_02/"$1"" && mv ""$arquivo"/Dia_02/"$1"" ""$arquivo"/Dia_03/"
test -d ""$arquivo"/Dia_01/"$1"" && mv ""$arquivo"/Dia_01/"$1"" ""$arquivo"/Dia_02/"
mv -f ""$arquivo"/Dia_00/"$1"" ""$arquivo"/Dia_01/"

else
echo "Não foi encontrado backup de "$1" hoje"
fi
}

rotaciona "TTY02"
rotaciona "TTY04"
rotaciona "TTY05"
rotaciona "TTY07"
rotaciona "TTY08"
rotaciona "TTY09"
rotaciona "TTY10"
rotaciona "TTY11"
rotaciona "TTY12"
rotaciona "TTY13"
rotaciona "TTY14"
rotaciona "TTY16"
rotaciona "TTY18"
rotaciona "TTY21"
rotaciona "TTY25"
rotaciona "TTY31"
rotaciona "TTY32"
rotaciona "TTY35"
rotaciona "TTY101"

# Marca no log a mudança de data.
echo >> /backup/imagens/BACKUPLOG.TXT
DIA=$(date +"%d/%m/%Y")
echo "Fim do backup do dia $DIA" >> /backup/imagens/BACKUPLOG.TXT
echo >> /backup/imagens/BACKUPLOG.TXT

echo "Estado do disco de Backup" > /backup/imagens/disco.log
echo "" >> /backup/imagens/disco.log

df -lh | grep /dev/ | grep da >> /backup/imagens/disco.log

echo "" >> /backup/imagens/disco.log
echo "Espaço ocupado pelos backups diários:" >> /backup/imagens/disco.log

du -sh /backup/backup/Dia_* >> /backup/imagens/disco.log

echo "" >> /backup/imagens/disco.log
echo "Detalhe dos ultimos backups diários:" >> /backup/imagens/disco.log

du -sh /backup/backup/Dia_00/* >> /backup/imagens/disco.log

echo "" >> /backup/imagens/disco.log
echo "Espaço ocupado pelos backups W98 e W7:" >> /backup/imagens/disco.log

du -sh /backup/backup-w7 >> /backup/imagens/disco.log
du -sh /backup/TTY* >> /backup/imagens/disco.log

echo "" >> /backup/imagens/disco.log
echo "Espaço ocupado pelo backup desenvolvimento de estampas:" >> /backup/imagens/disco.log

du -sh /backup/backup/DESENHOS >> /backup/imagens/disco.log

cat /backup/imagens/disco.log | mail -s "Estado discos maquina de backup" cleverson@itabiritotextil.com.br

sleep 60

#echo "Desligando servidor de Backups em 60 segundos!"
#poweroff



9. Re: Ajuda com o RSYNC [RESOLVIDO]

Diogo Adzgauskas Perucio
perucio

(usa Debian)

Enviado em 22/09/2010 - 08:48h

Bom dia a todos, agradeço pela ajuda de todos!

Verifiquei no post do korvoman, que a minha sintaxe do comando estava errada:

find -mtime -1 /home/backup/ -type f -print |tee /var/log/backup.log |tar -cjf teste.tar.bz2 -T -

Corrigindo:

find /home/backup/ -mtime -1 -type f -print |tee /var/log/backup.log |tar -cjf teste.tar.bz2 -T -

Agora sim ele pega somente os arquivos com menos de 24hr!!!!

Mais uma vez obrigado!

COMPLEMENTANDO:

Fiz o seguinte script:

#!/bin/sh
find /home/backup/ -mtime -1 -type f -print |tee /hd2/backup_diario/log_backup_dia_`date +%d`.log |tar -cjf /hd2/backup_diario/backup_dia_`date +%d`.tar.bz2 -T -






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts