Postado por Tiago Gouvêa em 19.11.2010
Rsync é um programa para rápida sincronização remota de dados entre duas máquinas.
As principais utilizações do rsync:
- Sincronizar arquivos em dois computadores (notebook/desktop ou servidor/estação)
- Realizar backups completos ou incrementais
- Sincronizar um site online, sem precisar enviar arquivo por arquivo via FTP
Por ter sido baseado no antigo rcp (remote copy), o software herdou as propriedades de criptografia do protocolo SSH, o que torna sua transmissão de dados mais segura que o FTP. Além das propriedades de segurança, o rsync utiliza o protocolo remote-update, o que aumenta assustadoramente sua velocidade e diminui a quantidade de dados transferidos, pois são trocados entre os servidores somente as diferenças entre dois grupos de arquivos.
O rsync compara não só a existência do arquivo nas duas máquinas, mas também seu conteúdo, assim, se um arquivo foi modificado será transmitida apenas a parte alterada, sem a necessidade de copiar todo o arquivo novamente.
Como utilizar o rsync
Certifique-se que o rsync esteja instalado em seu Linux digitando:
sudo apt-get install rsync
Com ele instalado podemos começar. Tenha certeza que a conexão está ativa e o servidor remoto acessível executando:
Rsync seu_login@ip_servidor:/home/seu_login/
Este commando irá listar todos os arquivos e pastas em /home/seu_login/.
Para sincronizar uma pasta da forma mais simples utilize:
Rsync -a /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
Como o processo de sincronização pode ser muito complexo, será necessário a utilizar parâmetros extras para que tudo fique como deseja. Os principais parâmetros são:
|
-a |
Faz com que todas as permissões e atributos dos arquivos sejam mantidos |
|
--delete |
Arquivos apagados na pasta original sejam apagados também na pasta de destino |
|
-z, --compress |
Comprime os arquivos ou trechos de dados durante a cópia |
|
-r , --recursive |
Modo recursivo, sincroniza todos os sub-diretórios além do principal |
|
-p, --perms |
Mantem as permissões dos arquivos |
|
-v , --verbose |
Modo verboso – Apresenta detalhes do processo |
|
-u, --update |
Ignora os arquivo que estão mais novos no destino |
|
-L, --copy-links |
Transforma symlinks em pastas e arquivos |
|
-P --partial --progress |
Exibe o progresso de cópia de cada arquivo |
|
--chmod=CHMOD |
Copia os arquivos aplicando a permissão informada |
|
--exclude=PATTERN |
Ignora arquivos que se encaxem na expressão |
Alguns exemplos
Copiar mantendo atributos, de todas as pasta e todas suas pastas, compactando durante o tráfego
Rsync -arz /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
Manter a pasta idêntica no destino, inclusive sincronizando exclusão de arquivos
Rsync –arzp --delete /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
-
Para inverter o sentido, trazendo para a maquina local arquivos remotos basta trocar a ordem dos parâmetros, onde o primeiro caminho é a origem e o segundo o destino.
-
Se desejar realizar o processo de forma automática, sem digitar a senha a cada chamada, será necessário instalar uma chave de autenticação no servidor remoto.
-
Para que as tarefas de sincronização ocorram em tempos determinados, ou de tempos em tempos de forma autônoma configure um cronjob para isso.
-
Se seu caso for ainda mais complexo acesse os links abaixo para a criação de um Shell script com rotinas mais elabadoras.
Algo mais