O
rSync (Remote Sync) é um utilitário para realizar cópias e sincronismo de arquivos (ou diretórios) localmente ou remotamente.
Uma forma simples de fazer becapes completos de grandes quantidades de arquivos, ou mesmo partições inteiras, mantendo uma única cópia atualizada de tudo em um HD externo ou num servidor remoto.
O rSync está disponível para todas as principais distribuições
GNU/Linux, como Debian, Ubuntu e CentOS.
O que o rSync faz?
O rSync sincroniza arquivos e diretórios localmente ou remotamente, fazendo uma cópia exata dos arquivos.
Ele permite sincronizar o conteúdo de duas pastas, transferindo apenas as modificações. Ele não trabalha apenas comparando arquivo por arquivo, mas também comparando o conteúdo de cada um.
Se apenas uma pequena parte do arquivo foi alterada, o rSync transferirá apenas ela, sem copiar novamente todo o arquivo.
O comando
rsync possui uma grande vantagem, como exemplo o uso do
rsync com o parâmetro
-u, ele copiará apenas o que mudou na árvore de diretórios. E de um arquivo modificado, ele transferirá apenas os blocos novos ou modificados.
Antes de transferir os dados, faz uma comparação do arquivo na origem e no destino. Os arquivos são quebrados em segmentos e os seus checksums são comparados. Os pedaços cujos checksums forem diferentes, são transmitidos.
Utilização do rSync com principais parâmetros
Os principais parâmetros são:
- archive
- recursive
- update
- compress
- verbose
...os quais vão adicionar mais recursos para a verificação do sincronismo.
Resumindo a sintaxe do
rsync:
# rsync opções <origem> <destino>
Opções:
-a :: Esta opção (archive) faz com que todas as permissões e atributos dos arquivos sejam mantidos.
Exemplo:
# rsync -a /caminho_origem/arquivo_origem.txt /caminho_destino/
-r :: Esta opção (recursive) realiza a cópia recursiva de um diretório e todo o conteúdo dentro do diretório.
Exemplo:
# rsync -r /caminho_origem /caminho_destino/
-u :: Esta opção (update) realiza a cópia somente de arquivos modificados.
Exemplo:
# rsync -u /caminho_origem/ /caminho_destino/
-v :: Esta opção (verbose) exibe na saída do comando tudo que estiver executando.
Exemplo:
# rsync -av /caminho_origem/ /caminho_destino/
-z :: Esta opção faz a compressão dos dados durante a transferência (e descompactar no destino).
Exemplo:
# rsync -azv /caminho_origem/ /caminho_destino/
-h :: Esta opção exibe uma saída mais legível na saída de comando.
Exemplo:
# rsync -ahv /caminho_origem/ /caminho_destino/
-P :: Esta opção (partial) caso a conexão seja interrompida, quando for reconectado o rsync continua a transferência de onde parou.
Exemplo:
# rsync -P /caminho_origem/ /caminho_destino/
Macetes do rSync
Para realizar um becape completo:
Becape incremental:
A cópia inicial pode demorar um pouco mais do que demoraria uma cópia simples dos arquivos. Mas, a partir da segunda vez que realizar o sincronismo, a operação será muito mais rápida, já que será copiado apenas as mudanças dos arquivos, e não o arquivo por completo.
Exemplo:
# rsync -av /arquivo_origem.txt /caminho_destino/
Becape removendo a origem:
Uma outra possibilidade aplicada na prática de becape, é remover os arquivos da origem da cópia.
Como exemplo: o servidor01 está sendo desativado e seu disco está cheio. É preciso fazer o becape e remover os dados do servidor, pois ele será desativado.
Utilizando o comando
rsync com o atributo
--remove-source-files após o rSync realizar a transferência dos dados, ele irá realizar uma checagem da integridade dos arquivos no destino (se foi copiado com sucesso) e caso tenha sido copiado com sucesso, ele irá remover o arquivo de origem (de onde foi copiado).
Exemplo:
# rsync -av --remove-source-files /caminho_origem /caminho_destino/
Usando o rSync de forma segura (com SSH)
Ao realizar a cópia de arquivos, utilize a opção
-p, que preserva a permissão de dono, grupo e datas de criação e modificação igual ao arquivo de origem.
O rSync pode ser combinado junto ao protocolo do SSH para realizar a cópia remota de arquivos de maneira criptografada com SSH.
Um exemplo de uso do rSync em conjunto com o SSH:
Acrescentamos a opção
-e na sintaxe do
rsync. Realizando a cópia de dados de um servidor remoto para um diretório local:
# rsync -e ssh root@192.168.1.1:/caminho_origem /caminho_destino
Realizando a cópia de dados de um diretório local para um servidor remoto:
# rsync /caminho_origem -e ssh root@192.168.1.1:/caminho_destino
Perguntas frequentes
- É possível usar o rSync em modo gráfico?
Sim. Para isso, use o
Grsync e crie tarefas de cópia e sincronismo via interface gráfica.
- Quais as vantagens de utilizar o rsync?
Realiza cópias exatas de arquivos e diretórios, copiando arquivos de forma mais ágil, devido à compressão, e a verificação que cópia somente arquivos atualizados.
- É compatível com outros sistemas operacionais?
Sim. Compatível com UNIX, GNU/Linux, FreeBSD, e Mac OS, para sistemas operacionais Microsoft.
Em sistemas Microsoft, é possível utilizar programas para auxiliar o uso do rSync como o DeltaCopy, que permite transferir arquivos do Windows para o GNU/Linux, com o rSync.
Referências