Comando rsync do Linux: opções e exemplos de uso

Aviso de afiliados v3.1
Aviso de afiliados v3.2 (somente celular)
Ambiente de testeFamília RHELAlmaLinux 9.8conta rootVerificado em 07/10/2026

Se você copia a pasta inteira toda vez para manter dois servidores iguais, a transferência tem o tamanho total mesmo quando só um arquivo mudou. O comando rsync é a abreviação de remote sync. Ele compara origem e destino e envia só os arquivos diferentes, funcionando do mesmo jeito entre pastas locais e entre servidores conectados por SSH. Este post traz o uso básico, as opções e exemplos dos dois métodos de conexão: SSH e o daemon do rsync.

A saída deste post vem do rsync 3.2.7 no AlmaLinux 9.8. Se o rsync não estiver instalado, instale-o pelo gerenciador de pacotes.

# família RHEL
dnf -y install rsync
# família Debian
apt -y install rsync

✅ Uso básico

A sintaxe básica é a seguinte.

rsync -opções origem destino

Como no comando cp, escreva primeiro a origem e depois o destino. Uma barra [/] no fim da origem põe só o conteúdo da pasta no destino; sem ela, vai a pasta inteira.

~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.png

Rode o mesmo comando de novo e a lista de arquivos fica vazia, com o sent caindo para algumas centenas de bytes. Arquivos com mesmo tamanho e hora de modificação são pulados.

~]# rsync -av www/ backup/
sending incremental file list

sent 166 bytes  received 13 bytes  358.00 bytes/sec
total size is 3,015  speedup is 16.84

Só com -r e sem -a, as horas de modificação não são preservadas, e a próxima execução envia os mesmos arquivos de novo. Ao sincronizar pastas, use -a como padrão.

A opção -n mostra só quais arquivos mudariam, sem transferir nada, e a saída termina com [(DRY RUN)]. Opções que apagam arquivos no destino, como --delete, devem ser conferidas antes com -n e só depois executadas de verdade.

~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html

sent 188 bytes  received 39 bytes  454.00 bytes/sec
total size is 3,013  speedup is 13.27 (DRY RUN)

✅ Opções do comando rsync & simulador

OpçãoDescrição
-a--archiveCopia também subdiretórios e preserva permissões, dono, hora de modificação e links simbólicos (o mesmo que -rlptgoD)
-v--verboseMostra o nome de cada arquivo transferido e os totais
-z--compressComprime os dados dos arquivos durante a transferência
-r--recursiveCopia também subdiretórios (incluso em -a)
-t--timesPreserva as horas de modificação (incluso em -a). É o que decide quais arquivos são pulados na próxima execução
-n--dry-runMostra só os arquivos que mudariam, sem transferir, e marca o fim com (DRY RUN)
-u--updatePula arquivos mais novos no destino
-h--human-readableMostra os bytes em K, M e G
-PO mesmo que --partial --progress. Mostra o progresso por arquivo e retoma transferências interrompidas
-i--itemize-changesMostra o que mudou em cada arquivo como código>f+++++++++ arquivo novo · >f.st...... tamanho e hora alterados · *deleting apagado
-e--rsh=COMMANDDefine o shell remoto-e 'ssh -p 2222 -i /root/.ssh/key.pem'
--deleteApaga do destino arquivos que não existem mais na origem (precisa de -r ou -a)
--exclude=PATTERNExclui arquivos e diretórios que correspondem ao padrão--exclude '*.tmp' --exclude 'cache/'
--include=PATTERNColocado antes de --exclude, deixa só esse padrão fora da exclusão
--max-size=SIZENão transfere arquivos maiores que o tamanho indicado (--min-size para os menores)--max-size=3M --min-size=10k
--bwlimit=RATELimita a velocidade de transferência, em KiB/s
--statsMostra a contagem de arquivos e as estatísticas de transferência
Simulador do comando rsyncrsync 3.2.7
[root@server work]#
Roda só no seu navegador e não mexe em arquivos reais. A pasta www é a origem e a pasta backup é o backup anterior. Digite rsync com opções diferentes e confira o resultado com ll, cat e diff. Endereços remotos (user@host:caminho) são aceitos só pela sintaxe; nenhuma conexão é feita. Clique em [Start over] para desfazer as mudanças. Use as teclas ↑↓ para recuperar comandos anteriores e digite uknew help para ver os comandos disponíveis.

✅ Métodos de conexão: SSH e o daemon do rsync

Há duas formas de conectar a um servidor remoto. Um dois-pontos [:] depois do host passa pelo SSH; dois-pontos duplos [::] conectam direto ao daemon do rsync na porta 873.

TipoMétodo SSH (:)Método do daemon do rsync (::)
Sintaxersync -opções user@host:/caminho /caminho/localrsync -opções host::módulo/caminho /caminho/local
PortaPorta SSH (padrão 22)873
CriptografiaCriptografado pelo SSHSem criptografia
AutenticaçãoChave SSH ou senhahosts allow no rsyncd.conf; conta e senha opcionais
Configuração no servidorNenhuma (funciona assim que o acesso SSH funcionar)Instalar rsync-daemon, /etc/rsyncd.conf, abrir a porta 873
UsoBackup e implantação entre servidores (a escolha padrão)Espelhamento em rede interna sem distribuir contas SSH

🔲 Método SSH

Se você alcança o servidor por SSH, funciona sem nenhuma configuração no servidor. Quando a porta é outra ou você usa um arquivo de chave, coloque o comando ssh como está na opção -e.

# local → remoto
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# remoto → local
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# porta SSH e arquivo de chave
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Comando rsync: resultado de remoto para local

Para deixar de fora certos arquivos ou diretórios, adicione --exclude uma vez por padrão, ou agrupe os padrões entre chaves e escreva uma vez só.

rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
Comando rsync: remoto para local, excluindo arquivos e diretórios específicos

🔲 Método do daemon do rsync

O daemon do rsync dá acesso por módulo na porta 873 sem conta SSH. O tráfego não é criptografado, então é usado entre servidores da mesma rede interna.

No AlmaLinux 9, instale o pacote rsync-daemon e inicie o serviço. Em servidores com firewalld, abra a porta 873; em servidores na nuvem, abra-a no firewall do console. O método xinetd usado no RHEL 8 e anteriores não existe mais no 9.

dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

No arquivo de configuração [/etc/rsyncd.conf], defina o nome do módulo, o caminho e os hosts permitidos. Com read only em yes, clientes remotos só conseguem baixar dele.

[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30

Do lado remoto, só dois-pontos duplos depois do host listam os módulos; com o nome do módulo, aparecem os arquivos dentro dele.

~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x          4,096 2025/06/12 22:14:39 .
drwxr-xr-x          4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x          4,096 2025/06/12 22:14:39 2server_data

A cópia usa a forma [host::módulo/caminho]. --delete apaga do destino os arquivos que não estão na origem, e --include deixa fora da exclusão só os itens colocados antes de --exclude.

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/

sent 58 bytes  received 332 bytes  780.00 bytes/sec
total size is 442  speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Comando rsync: remoto para local com a opção delete
Comando rsync: remoto para local com as opções delete, include e exclude

Num servidor com SELinux ativo, o acesso ao caminho do módulo pode ser bloqueado com [Permission denied (13)]. No teste, passou depois de desligar o SELinux com [setenforce 0].

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes  received 90 bytes  65.33 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see anterior errors) (code 23) at main.c(1658) [Receiver=3.1.2]

--bwlimit limita a velocidade de transferência em KiB/s, e com -P você vê junto o progresso de cada arquivo. --max-size e --min-size transferem só arquivos dentro da faixa de tamanho indicada.

rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Comando rsync: remoto para local, banda limitada a 100kb e progresso com -P

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 2   +   3   =