Rsync

De LinuxPédia
Ir para: navegação, pesquisa

rsync é um utilitário para manter copias de um mesmo arquivo em 2 ou mais sistemas computacionais. Pode ser utilizado para manter cópias de um mesmo arquivo em duas pastas diferentes em um mesmo computaador também.

Normalmente o rsync é mais utilizado em sistemas tipo Unix. Seu algoritmo faz um tipo de delta que verifica a diferença nos arquivos a serem copiados de forma a minimizar o uso da rede. Zlib pode ser usado para compressão, e o SSH para transferir os arquivos de maneira segura.

Normalmente o rsync faz uso do SSH. Por exemplo ao usar o comando rsync arquivo-local usuário@Host-remoto:arquivo-remoto, o rsync vai usar o SSH para se conectar ao host remoto e chamar o rsync para encontrar quais partes do arquivo precisam ser copiadas. O rsync pode fazer uso de FTP e samba também de acordo com a necessidade do adminsitrador.



Como é determinado quais arquivos serão copiados

Por padrão essa verificação é feita pela data de modificaação + tamanho dos arquivos. Se essas informações não baterem, o rsync transfere o arquivo para o destino. Essa verificação é mais rápida, mas pode deixar passar algum arquivo.

É possível fazer com que o rsync faça essa verificação mais aprofundada, para isso usamos a opção c—checksum. Isso força a uma verificação completa dos arquivos, salvo alguma raríssima condição em que o checksum bate igual, isso faz com que nenhum arquivo diferente escape a verificação. Essa verificação é mais lenta.



Como é determinado que partes do arquivo foram mudadas

1 – O rsync no destino divide o arquivo em pedaços e computa 2 checksums para cada pedaço, o MD5 e um mais fácil de computar “rolling checksum”. E manda esses checkusms para o emissor.

2 – O emissor calcula rapidamente a rolling checksum para cada pedaço em sua versão do arquivo, se forem diferentes devem ser enviadas.. Se são iguais o emissor usa o hash MD5 para verificar se os pedaços são iguais.

3 – O emissor então envia as partes que não batem, junto com a informação de como montar esses blocos na versão do destinatário. Isso torna as cópias idênticas. Existe uma pequena probabilidade que as diferenças não sejam detectadas e permaneçam não detectadas. Com 128 bits de MD5 mais 32 bits de “rolling checksum” a probabilidade é da ordem de 2^(−160)



Sintaxe

Transferir do computador local para o remoto:


rsync OPÇÕESORIGEMUSUÁRIO@HOST:DESTINO


Transferir do remoto para o local:

rsync OPÇÕESUSUÁRIO@HOST:ORIGEM DESTINO


Opções

-a ; --archive Preserva permissões e outros atributos dos arquivos, equivalente a -lptgoD
--bwlimit=RATE Limita a taxa de transferencia do rsync a taxa RATE.
-c ; --checksum Pula arquivos baseados em checksum e não em data de moficação e tamanho
-C ; --cvs-exclude Exclui arquivos da mesma forma que CVS. Filtra arquivos tipo RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ .git/ .hg/ .bzr/
--daemon roda o rsync como daemon
--delete Deleta arquivos no destino que não existam na origem. (Bom pra fazer espelhamento)
--existing Não cria arquivos novos no destino, só sobrepões os mais atualizados
--exclude=PATTERN Exclui arquivos em que os nomes que batam com padrão PATTERN
-h ; --human-readable Mostra os números em formatos humanos (Mega, Giga, etc)
--ignore-existing Pula arquivos que existem no destino
--include=PATTERN Inclui arquivos em que os nomes que batam com o padrão
-n  ; --dry-run Roda como teste e não faz alterações
--port=PORT Muda a porta de operação do rsync para PORT
--progress Mostra o progresso da cópia
-q  ; --quiet Não mostra saída que não seja de erro
-r  ; --recursive Copia arquivos recursivamente (Todos os arquivos e pastas abaixo da pasta determinada)
--remove-source-files Origem deleta os arquivos depois de sincronizar
-v  ; --verbose Aumenta o nível de verbose. (v- Mostra os arquivos que foram transferidos e um sumário) (vv - Mostra os arquivos que foram transferidos e pulados e um sumário) (vvv debug)
--version Mostra a versão do rsync
-z ; --compress Comprime arquivos para usar menos rede


Arquivo de configuração do rsync daemon

/etc/rsyncd.conf


Exemplos

Backup de uma pasta para outra no mesmo computador

# rsync -ravvhz /home/fabio/john/ /var/backups/artigos/


Fará um backup recursivo (-r) preservando características do arquivo (a), mostrando informações de arquivos enviados e pulados (vv), mostrando o tamanho dos arquivos de modo humano (h), Compactado para melhorar a transmissão (z). Pasta origem= /home/john/ ; Pasta destino= /var/backups/john/



Copiar arquivos do PC local para o remoto

#rsync -avz rpmpkgs/ root@192.168.1.1:/home/

Origem=rpmpkgs/ Destino=192.168.1.1:/home/ Usuário=root



Copiar arquivos do remoto para o local

#rsync -avzh root@192.168.0.100:/home/john/debs /tmp/debs

Origem= 192.168.0.100:/home/john/debs Destino= /tmp/debs Usuário=root


  • Dica: Para que isso ocorra de forma automática, uma das formas de se fazer é utilizar o SSH sem senha. Isso é feito copiando as chaves públicas entre os servidores, ver em SSH.



Espelhar pasta de servidor remoto em servidor local

# rsync -avz --delete 192.168.1.1:John/     /home/john/

A função --delete, vai deletar os arquivos no destino, que não existirem na orgiem.


Fazer backup da pasta root com exceção de algumas pastas

#rsync -aczvAXHS –progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder



Deletar automaticamente os arquivos na origem após terminar a cópia

#rsync --remove-source-files -zvh backup.tar /tmp/backups/

Função --remove-source-files irá deletar os arquivos na origem após terminar a cópia.


Limitar a taxa de transferência, do rsync

# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/

A função --bwlimit=100 limita a taxa de transferência do rsync em 100KBps (100Kbytes por segundo)



Fontes

Wikipedia - rsync Acessado em 3/6/2016

tecmint Acessado em 3/6/2016

Viva o linux - Transferindo arquivos com rsync Acessado em 3/6/2016


Links Externos

rsync.samba.org