Saiba mais sobre a sintaxe básica do comando, as principais funcionalidades e como aplicá-lo no seu dia a dia com o blog da HostGator.
O rsync (sincronização remota) é um utilitário que permite sincronizar duas pastas remotas e até dois locais no Sistema Operacional Linux. Ele usa um algoritmo que minimiza a quantidade de dados copiados, movendo apenas as partes dos arquivos que foram alterados.
Além disso, ele pode ser usado para transferir e copiar arquivos para uma máquina remota. As vantagens oferecidas pelo rsync são muitas. Confira as principais abaixo.
- Copia e sincroniza arquivos de forma eficiente de/para um sistema remoto;
- Oferece suporte à cópia de links, dispositivos, proprietários, grupos e permissões;
- É mais rápido que o SCP porque o rsync Linux usa um protocolo de atualização remota. Funciona da seguinte forma: ele copia todo o conteúdo de um arquivo de origem para o destino em um primeiro momento. Depois, ele trabalha apenas com partes de blocos e bytes alterados.
- Consome menos largura de banda porque usa o método de compactação e descompactação ao enviar e receber dados em ambas as extremidades;
- Está disponível em todas as distribuições Linux, mas também NAS (synology, QNAP, netgear, etc.). Ainda existem adaptações para o Windows.
Para saber mais sobre as funcionalidades e como usar rsync Linux, acompanhe este artigo!
Sintaxe básica Rsync
O rsync funciona tanto de local para local quanto de local para remoto ou remoto para local. A sintaxe é clássica, como qualquer utilitário de cópia. Indicamos a origem e o destino:
- rsync dir1/ dir2
Aqui, são cópias locais que podem ser práticas, por exemplo, para transferir dados estritamente idênticos de um disco para outro.
A sintaxe para sincronizar ou transferir arquivos com uma máquina remota é a seguinte:
- rsync [source] [user]@[host]:[destination]
Portanto, para transferir por rsync no modo push, ou seja, de uma pasta local para uma pasta remota, é usado:
- a pasta / home / usuarioexemplo
Por outro lado, para uma máquina remota com o usuário Linux usuarioexemplo; e como destino a pasta / backup / home / usuarioexemplo, a dinâmica fornece a seguinte sintaxe:
- rsync /home/usuarioexemplo usuarioexemplo@[server_ovh.domain.tld:/backup/home/usuarioexemplo
Finalmente, o inverso, ou seja, rsync no modo pull, da pasta remota para a pasta local:
- rsync usuarioexemplo@[server_ovh.domain.tld:/backup/home/usuarioexemplo/home/usuarioexemplo
Portanto, é uma sintaxe bastante próxima da SCP (cópia de segurança).
As opções do comando rsync
Opções comando | Descrições |
-a | Modo de arquivamento. |
-g | Preserva o grupo. |
-D | Preserva os periféricos. Precisa de root. |
-i | Copia links simbólicos como links simbólicos. |
-o | Preserva o dono. Precisa de root. |
–p | Preserva as permissões. |
-P | Combina as opções –progress e –partial. |
-r | Cópia recursiva de diretórios. |
-t | Preserva datas. |
-u | Força o rsync a ignorar todos os arquivos existentes no destino e cuja hora de modificação seja mais recente que o arquivo de origem. |
-v | Modo detalhado para exibir muitas informações é apresentado durante a transferência. |
-z | Compacta o arquivo para uma melhor transferência de rede. |
– -delete | Sincronização e espelho perfeito, o arquivo de destino será deletado caso não esteja presente na fonte. |
– -exclude | Exclui arquivos do backup. |
– – maxsize | Especifica um tamanho máximo de arquivo para não transferir. |
– -partial | Por padrão, o rsync excluirá todos os arquivos parcialmente transferidos se a transferência for interrompida. Esse comando diz ao rsync para manter o arquivo parcial, o que deve acelerar a transferência do restante do arquivo. |
– -progress | Mostra uma barra de progresso. |
Funcionalidades mais comuns do Rsync
1 – Copie e transfira arquivos recursivamente
Para copiar uma pasta recursivamente, usamos a opção -r:
- rsync -r dir1/ dir2
2 – Atualize o conteúdo de uma pasta
Para economizar tempo e banda larga, podemos evitar a cópia dos arquivos que já temos na pasta de destino que não foram alterados na pasta de origem. Para fazer isso, podemos adicionar o parâmetro -u ao rsync para sincronizar a pasta de destino com a pasta de origem.
- rsync -rtvu source_rep/ destination_rep/
Por padrão, o rsync é baseado na data de modificação do arquivo. No entanto, com o parâmetro -c, podemos pedir a ele para usar uma soma de verificação nos arquivos a serem transferidos. Em consequência, isso irá ignorar qualquer arquivo em que a soma de verificação coincida uma com a outra.
- rsync -rtvuc source_rep/ destination_rep/
3 – Sincronize duas pastas com rsync
Veja como sincronizar duas pastas em um servidor remoto:
- rsync -artvu ~/dir1 nomedeusuario@machine_distance:destination_rep
- –delete-before: procura por arquivos perdidos e os exclui antes de prosseguir com a transferência. Este é o comportamento padrão;
- –delete-after: pesquisa por arquivos perdidos após a transferência ser concluída com o parâmetro;
- –delete-during: pode excluir arquivos feitos durante a transferência; quando um arquivo está faltando, ele é excluído naquele momento;
- –delete-delay: realiza a transferência e encontra os arquivos ausentes durante este processo, mas em vez de excluí-los, espera até que o procedimento seja concluído e exclui os arquivos encontrados depois.
4 – Excluir arquivos da transferência e sincronização
Usamos –exclude = para excluir arquivos da cópia e da transferência remota, como indicamos no quadro acima. Se você precisar excluir várias pastas, basta listar uma após no comando.
Isso pode tornar-se rapidamente ilegível, então, neste caso, recorremos a –exclude-from, que permite chamar um arquivo com a lista de exclusões e compartilhar a lista entre as máquinas.
5 – Limite de largura de banda
A opção –bwlimit permite limitar a largura de banda. O valor será considerado em unidades de 1024 bytes.
- rsync –bwlimit=100 ~/dir1 nomeusuario@machine_distance:destination_rep
Você também pode usar gotejamento assim:
- trickle -s -d 3000 -u 3000 rsync ~/dir1 nomeusuario@machine_distance:destination_rep
6 – Rsync e SSH
Com o rsync, é possível usar SSH (Secure Shell) para transferência de dados com o protocolo SSH. Você pode ter certeza de que seus dados são transferidos em uma conexão segura por meio de criptografia protegida.
Além disso, quando usamos o rsync, precisamos fornecer a senha do usuário/root para realizar essa tarefa específica, portanto, o uso da opção SSH enviará suas conexões criptografadas para que sua senha esteja segura.
Finalmente, se você gerou um par de chaves SSH, pode se autenticar por meio delas sem uma senha. Para fazer isso, usamos o parâmetro -e ssh:
- rsync -e ssh ~/dir1 nomeusuario@machine_distance:destination_rep
Considerações finais
O nome rsync refere-se a um protocolo de rede dedicado à sincronização de arquivos, criado em 1996. O rsync é originalmente um protocolo de sincronização de arquivos no Linux. Conforme a tecnologia foi desenvolvida, foram surgindo outras versões, como Windows, AIX e HPUX para suportar.
A vantagem dessa ferramenta de sincronização para rsync é que a operação é feita sob a linha de comando completa: há um arquivo de log detalhado, mas também pode suportar uma variedade de circunstâncias diferentes da atualização, como atualizações de tipo de backup e assim por diante.
Outra vantagem muito boa é que ele e o servidor podem ser sincronizados entre si, ou seja, você pode tanto atualizar o arquivo do servidor quanto enviar arquivos locais para o servidor. Contanto que você configure os parâmetros de forma correta, é possível realizar várias coisas. Essa ferramenta também ocupa uma quantidade relativamente pequena de recursos do sistema.
Por outro lado, as desvantagens aparecem, principalmente, quando há muitos arquivos pesados. Uma das partes mais lentas do rsync é que, quando ele é sincronizado, os arquivos no diretório local são comparados aos arquivos no servidor, de modo que ele atualiza apenas os diferentes arquivos de lá. Os mesmos arquivos serão pulados diretamente. Se há muitos arquivos para sincronizar, esse processo de comparação é bem lento.
Entre os cenários operacionais típicos do rsync, além de fazer backup de dados e gerar um “servidor espelho” (uma cópia exata do servidor), é possível sincronizar os dados de empresas com sites diferentes. Hoje em dia, no entanto, essa última função é cada vez mais suportada por tecnologias de nuvem modernas, até porque é raro não ter uma conexão estável de dados.
Criação de backups rsync em servidores Linux
Para executar o rsync em sistemas operacionais Linux, instale o protocolo no pacote de mesmo nome e crie seu backup via rsync usando comandos de terminal. Outra possibilidade é utilizar aplicativos como Back-in-Time, rsnapshot (para backups automáticos regulares) ou Unison, que permitem o gerenciamento do processo de backup em uma interface gráfica.
OBS.: recomenda-se a realização de testes (-n) para verificar a exatidão dos parâmetros e dos diretórios. Em alguns casos, o uso de dados errados pode levar à perda de dados. Geralmente, qualquer erro na cópia de determinados arquivos durante o processo se deve à falta dos direitos de acesso necessários. Nesse caso, tente executar o comando como administrador.
Esperamos que este artigo tenha ajudado! Aproveite para conferir outros conteúdos sobre Linux em nosso Blog. Também falamos sobre negócios, marketing e mais!