Entenda como o Rsync facilita a transferência de arquivos entre sistemas Linux, seja localmente ou remotamente, com dicas práticas para otimizar suas operações de sincronização
O Rsync é uma ferramenta poderosa e versátil para transferir e sincronizar arquivos em sistemas Linux. Amplamente utilizado por administradores de sistemas e desenvolvedores, ele é especialmente útil para backups, espelhamento de arquivos e atualizações entre diretórios locais ou servidores remotos. Sua principal vantagem é a eficiência, pois transfere apenas as diferenças entre os arquivos de origem e destino, reduzindo o tráfego de dados. Neste artigo, você aprenderá a instalar e usar o Rsync para realizar transferências locais e remotas de forma prática e segura.
Antes de começar, certifique-se de que:
O Rsync está disponível nos repositórios oficiais da maioria das distribuições Linux e frequentemente já vem pré-instalado. Caso não esteja no seu sistema, você pode instalá-lo com os seguintes comandos:
Instalação em distribuições baseadas em Debian/Ubuntu
sudo apt update
sudo apt install rsync
Instalação no FreeBSD
sudo pkg install rsync
Instalação no Arch Linux
sudo pacman -S rsync
Instalação no Fedora
sudo dnf install rsync
Instalação no CentOS/RHEL
sudo yum install rsync
A estrutura básica do comando Rsync é:
rsync [OPÇÕES] ORIGEM DESTINO
USUÁRIO@HOST:ORIGEM para transferências remotas via SSH.USUÁRIO@HOST:DESTINO para transferências remotas via SSH.Aqui estão algumas das opções mais utilizadas no Rsync:
--help, -h: Exibe a ajuda do comando--verbose, -v: Aumenta a verbosidade--quiet, -q: Suprime mensagens que não sejam erros--archive, -a: Preserva metadados (modo arquivo)--recursive, -r: Copia diretórios recursivamente--update, -u: Ignora arquivos mais novos no destino--compress, -z: Comprime os dados durante a transferência--delete: Remove do destino os arquivos ausentes na origem--progress: Mostra o progresso da transferência--dry-run, -n: Simula a execução sem realizar alterações--links, -l: Copia links simbólicos como links--copy-links, -L: Transforma links simbólicos em arquivos ou diretórios referenciados--perms, -p: Preserva permissões--times, -t: Preserva horários de modificação--delete-excluded: Exclui também arquivos excluídos dos diretórios de destino--backup, -b: Faz backups (veja --suffix e --backup-dir)--backup-dir=DIR: Faz backups em uma hierarquia baseada em DIR--max-size=TAMANHO: Não transfere arquivos maiores que TAMANHO--min-size=TAMANHO: Não transfere arquivos menores que TAMANHO--partial: Mantém arquivos de transferência incompletos--exclude=PADRÃO: Exclui arquivos que correspondem ao PADRÃO--include=PADRÃO: Não exclui arquivos que correspondem ao PADRÃO--rsh=COMANDO, -e: Especifica o shell remoto a usar--human-readable, -h: Mostra números em formato legível por humanos--ipv4, -4: Prefere IPv4--ipv6, -6: Prefere IPv6Essas opções podem ser combinadas para atender às suas necessidades específicas.
Crie um diretório de teste:
mkdir rsync-test
cd rsync-test
Crie três arquivos de exemplo:
touch file1 file2 file3
Copie os arquivos para um novo diretório chamado dest:
mkdir dest
rsync file1 file2 file3 dest/
Verifique se os arquivos foram copiados:
ls dest/
Sua saída deve ser semelhante a:
file1
file2
file3
Para copiar diretórios inteiros, use a flag -a, que preserva atributos como permissões e horários:
rsync -a dest/ dest-copy/
O / ao final do diretório indica que apenas o conteúdo será copiado. Sem ele, o Rsync copia o diretório inteiro.
Use a opção --exclude para ignorar itens específicos durante a cópia:
rsync -a --exclude 'file2' --exclude 'dest*' . output/
Esse comando copia todos os arquivos e diretórios, exceto aqueles que correspondem aos padrões especificados.
Para sincronizar seus dados com um servidor remoto via SSH, utilize o seguinte comando:
rsync -hazvP --delete . usuario@192.0.2.1:/caminho/destino
Explicação das opções:
-h: Mostra números em formato legível por humanos.-a: Preserva metadados como permissões e horários.-z: Comprime os dados durante a transferência.-v: Habilita saída detalhada.-P: Exibe progresso e permite retomar transferências interrompidas.--delete: Remove do destino os arquivos ausentes na origem.Após a execução, você pode verificar os arquivos sincronizados conectando-se ao servidor remoto via SSH:
ssh usuario@192.0.2.1
ls /caminho/destino
A opção --delete, embora útil, pode ser perigosa, pois remove permanentemente arquivos do destino que não existem mais na origem. Para evitar problemas, sempre execute uma simulação antes:
rsync -a --delete --dry-run ORIGEM DESTINO
Isso permite revisar as alterações antes que sejam aplicadas.
A compressão pode ser útil para reduzir o tempo de transferência, especialmente em conexões lentas. Use a opção -z para ativar a compressão:
rsync -azvP ORIGEM DESTINO
Para visualizar o progresso da transferência, use a opção -P:
rsync -avzP ORIGEM DESTINO
Para excluir arquivos ou diretórios específicos, use a opção --exclude. Por exemplo, para excluir todos os arquivos .txt:
rsync -a --exclude '*.txt' ORIGEM DESTINO
Para fazer backups antes de substituir arquivos no destino, use a opção --backup combinada com --backup-dir:
rsync -a --backup --backup-dir=/caminho/para/backups ORIGEM DESTINO
Neste artigo, você aprendeu como instalar e usar o Rsync para transferir e sincronizar arquivos localmente ou remotamente em sistemas Linux. Exploramos as opções mais comuns do comando, como exclusão seletiva (--exclude) e compressão (--compress). O Rsync é uma ferramenta indispensável para quem busca eficiência na gestão de dados, mas exige cuidado ao usar opções como --delete. Sempre revise seus comandos antes da execução final para evitar perdas acidentais de dados.
Pergunta e respostas frequentes sobre o conteúdo.
Rsync é uma ferramenta para transferir e sincronizar arquivos em sistemas Linux.
Use o comando 'sudo apt install rsync' para instalar o Rsync no Ubuntu.
A sintaxe básica é 'rsync [OPÇÕES] ORIGEM DESTINO'.
Use o comando 'rsync ORIGEM DESTINO' para copiar arquivos localmente.
Use a opção '--exclude' seguida do padrão do arquivo a ser excluído.
A opção '-a' preserva metadados e copia diretórios recursivamente.
Use o comando 'rsync -e ssh ORIGEM usuario@servidor:DESTINO'.
Remove arquivos do destino que não existem mais na origem.
Use a opção '-P' ou '--progress' para exibir o progresso.
Use a opção '-z' para ativar a compressão.
Use a opção '--dry-run' para simular a execução.
Cria backups antes de substituir arquivos no destino.
Use a opção '-l' para copiar links simbólicos como links.
Use a opção '-p' para preservar permissões.
Use a opção '--max-size=TAMANHO' para excluir arquivos maiores que o tamanho especificado.
Use a opção '-u' para ignorar arquivos mais novos no destino.
Use a opção '-e' ou '--rsh=COMANDO' para especificar o shell remoto.
Adicione uma barra '/' ao final do diretório de origem.
Use a opção '--backup-dir=DIR' para especificar o diretório de backups.
Use a opção '--exclude=PADRÃO' para excluir arquivos que correspondem ao padrão.
Especialista linux, desenvolvedor web full-stack, PHP no sangue, graduando em Direito, pai da Lais e esposo da Simone