
Se vocĂª gerencia servidores Linux ou simplesmente possui um computador com dados que nĂ£o pode se dar ao luxo de perder, aprender a usar rsync para automatizar backups É praticamente obrigatĂ³rio. NĂ£o hĂ¡ necessidade de configurar um pacote caro ou depender de ferramentas proprietĂ¡rias: com alguns comandos bem elaborados, vocĂª pode ter um sistema de backup sĂ³lido, eficiente e fĂ¡cil de manter.
Ao longo deste guia, vocĂª verĂ¡ Dos conceitos bĂ¡sicos do rsync Ă ediĂ§Ă£o avançada.CĂ³pias de segurança locais, cĂ³pias de segurança remotas via SSH, cĂ³pias de segurança no estilo Time Machine com snapshots, scripts prontos para produĂ§Ă£o, cron, temporizadores systemd, exclusões, rotações e verificaĂ§Ă£o. Consulte nossa ComparaĂ§Ă£o de mĂ©todos de backup Definir uma estratĂ©gia. A ideia Ă© que vocĂª termine o artigo com um plano claro e instruções que possa copiar e adaptar ao seu contexto na prĂ¡tica.
O que Ă© o rsync e por que ele Ă© tĂ£o usado para backups?
Rsync Ă© uma ferramenta de linha de comando projetada para Sincronizar arquivos e diretĂ³rios entre dois locais., seja no mesmo computador ou entre mĂ¡quinas diferentes, geralmente via SSH ou com seu prĂ³prio daemon rsyncd.
A vantagem do rsync sobre um simples cp ou scp Ă© que ele implementa um algoritmo inteligente de transferĂªncia de bloco diferencialEle compara a origem e o destino e envia apenas as alterações, nĂ£o o arquivo inteiro de cada vez. Se vocĂª tiver muitos dados e modificar apenas pequenas partes, a economia de tempo e largura de banda serĂ¡ enorme.
AlĂ©m disso, o rsync pode preservar praticamente todos os metadadosPermissões, proprietĂ¡rios, grupos, registros de data e hora, links simbĂ³licos, dispositivos... É por isso que Ă© tĂ£o Ăºtil para backups "sĂ©rios", onde nĂ£o apenas o conteĂºdo importa, mas tambĂ©m a forma como o sistema de arquivos estĂ¡ configurado.
Outra vantagem importante Ă© que o rsync funciona tanto localmente quanto remotamenteVocĂª pode usĂ¡-lo para sincronizar duas pastas no mesmo servidor, para transferir dados de um servidor remoto para sua mĂ¡quina de backup ou para enviar dados para um NAS ou VPS remoto usando SSH.

Instale e teste o rsync em diferentes distribuições.
Embora muitas distribuições jĂ¡ venham com o rsync instalado, Ă© uma boa ideia instalĂ¡-lo separadamente. Verifique a instalaĂ§Ă£o e atualize para a versĂ£o mais recente. tanto nas mĂ¡quinas de origem quanto nas de destino, antes de montar seus backups automĂ¡ticos.
Em sistemas baseados em Debian ou Ubuntu, vocĂª pode fazer algo tĂ£o simples quanto:
rsync --version
sudo apt update
sudo apt install rsync
Em distribuições como RHEL, CentOS, Rocky Linux ou outras derivadas, o procedimento seria muito semelhante, alterando o gerenciador de pacotes, mas com a mesma ideia de Certifique-se de que o rsync esteja disponĂvel e atualizado. em ambos os extremos.
rsync --version
sudo dnf install rsync # En sistemas modernos
sudo yum install rsync # En sistemas mĂ¡s antiguos
Opções bĂ¡sicas do rsync que vocĂª usarĂ¡ o tempo todo
Embora o rsync possua um bom conjunto de parĂ¢metros, na prĂ¡tica, para backups, vocĂª gastarĂ¡ 90% do seu tempo usando... um pequeno conjunto de opções Isso deve ser memorizado.
A estrutura geral do comando Ă© bastante simples, mas hĂ¡ um detalhe que adiciona muitas possibilidades: a barra invertida no final dos caminhos altera o comportamento.
Sintaxe genérica:
rsync ORIGEN DESTINO
A principal diferença reside na forma como vocĂª lida com o diretĂ³rio de origem:
# Copia el directorio como tal dentro del destino
rsync -av /source/dir /backup/
# Copie SOMENTE o conteĂºdo do diretĂ³rio para o destino
rsync -av /source/dir/ /backup/
Algumas das opções de backup mais comuns sĂ£o especialmente prĂ¡ticas porque Eles combinam muitas coisas em um texto curto.:
- -a: modo de arquivo. Equivalente a -rlptgoD (recursivo, preserva links simbĂ³licos, permissões, carimbos de data/hora, grupo, proprietĂ¡rio e arquivos especiais).
- -vModo "Detalhado". Mostra o que estĂ¡ sendo feito e quais arquivos estĂ¡ sendo acessado.
- -zComprime os dados durante a transferĂªncia, ideal para cĂ³pias remotas pela Internet.
- -h: faz com que os tamanhos pareçam "agradĂ¡veis" (MB, GB…), perfeitos para humanos.
- -P: combina arquivos de progresso e parciais para verificar o andamento e poder retomar o trabalho.
- -Excluir: exclui no destino os arquivos que nĂ£o existem mais na origem, deixando uma rĂ©plica exata.
- -n / –execuĂ§Ă£o a secoSimula a execuĂ§Ă£o sem tocar em nada, fantĂ¡stico para nĂ£o estragar nada.
- –excluir / –excluir-dePermite excluir padrões ou uma lista completa de rotas que vocĂª nĂ£o deseja copiar.
- –destino-do-link: cria ligações permanentes com uma cĂ³pia anterior, a base dos backups incrementais do tipo Time Machine.
CĂ³pias locais manuais e primeiros exemplos
O primeiro passo antes de automatizar qualquer coisa Ă© ter comandos de cĂ³pia manual claros e comprovadosVamos analisar casos tĂpicos que usaremos posteriormente nos scripts.
Se vocĂª deseja clonar seu diretĂ³rio pessoal para um disco de backup localO comando mĂnimo seria assim:
rsync -av /home/usuario/ /mnt/disco_backup/usuario/
Este rsync verifica seu PĂ¡gina inicial completa, preservando permissões, datas e estrutura.e copia apenas o que estĂ¡ faltando ou foi alterado desde a Ăºltima vez, o que jĂ¡ Ă© uma cĂ³pia incremental muito eficiente, sem complicar as coisas.
Outro exemplo clĂ¡ssico Ă© a sincronizaĂ§Ă£o. dados do projeto, fotos ou documentos entre duas pastas no mesmo servidor ou atĂ© mesmo em discos diferentes, para ter um segundo jogo local sempre atualizado.
rsync -av /media/fotos/ /backup/fotos/
Quando se trata de dados sensĂveis do sistema, como /etc ou /var/wwwÉ normal querer uma cĂ³pia idĂªntica, removendo do backup o que desaparece no original. É aĂ que entra a famosa opĂ§Ă£o de exclusĂ£o.
rsync -av --delete /var/www/ /backup/www/
Faça backups remotos seguros com SSH.
O verdadeiro brilho do rsync surge quando combinado com SSH para enviar cĂ³pias do servidorDessa forma, vocĂª pode armazenar seus dados em outro nĂ³ da sua rede, um NAS ou um VPS na internet. Assim, vocĂª nĂ£o fica dependente de um Ăºnico dispositivo e cumpre parte da famosa regra 3-2-1 (pelo menos uma cĂ³pia externa).
Idealmente, vocĂª deve configurar a autenticaĂ§Ă£o por chave pĂºblica em vez de digitar senhas manualmente o tempo todo. Depois de copiar a chave para o servidor de backup, os comandos se tornam muito intuitivos.
# Empujar datos locales a un servidor remoto de backup
rsync -avz /etc/ backup@servidor-remoto:/backups/etc/
# Transferindo dados de um servidor remoto para sua mĂ¡quina de backup
rsync -avz backup@servidor-remoto:/var/www/ /backups/www/
Em cenĂ¡rios um pouco mais refinados, vocĂª pode ajustar Criptografia SSH, porta ou compressĂ£o a partir do prĂ³prio rsync com a opĂ§Ă£o -e, por exemplo, se o seu servidor estiver escutando em uma porta diferente ou se vocĂª quiser otimizar uma conexĂ£o lenta.
rsync -avz \
-e "ssh -p 2222 -c -o Compression=no" \
/origen/ backup@servidor-remoto:/destino/
Um truque Ăºtil quando hĂ¡ conexões fracas ou redes compartilhadas Ă© usar –bwlimit para evitar sobrecarga do link e nĂ£o deixar ninguĂ©m sem internet enquanto vocĂª realiza um backup massivo.
rsync -avz --bwlimit=5000 /datos/ backup@servidor-remoto:/backups/datos/
CĂ³pias de segurança completas, diferenciais e incrementais com rsync.
Embora o rsync jĂ¡ execute transferĂªncias diferenciais em nĂvel de bloco, do ponto de vista de uma estratĂ©gia de backup, vale a pena considerar essa opĂ§Ă£o. TrĂªs tipos de cĂ³pias: completa, diferencial e incremental.que vocĂª pode implementar diretamente com as opções do rsync.
Uma cĂ³pia completa Ă© simples: ela recria todo o conteĂºdo da origem no destino, ideal como backup inicial ou para ter uma referĂªncia limpa.
# Copia completa de un Ă¡rbol de directorios
rsync -a /ruta/origen/ /ruta/destino/
A cĂ³pia diferencial se baseia nesse fundamento e se concentra em manter o destino alinhado com a origem, copiando as alterações e removendo o que nĂ£o existe mais. É o que vocĂª geralmente quer dizer quando fala sobre... ter um espelho do sistema.
# Copia diferencial, manteniendo el destino idéntico al origen
rsync -a --delete /ruta/origen/ /ruta/destino/
A parte mais interessante Ă© o backup incremental "real", onde, alĂ©m da sincronizaĂ§Ă£o, VocĂª salva histĂ³ricos por data sem duplicar dados.É aqui que entra em aĂ§Ă£o a opĂ§Ă£o –link-dest, que cria links fĂsicos para uma cĂ³pia anterior de arquivos que nĂ£o foram alterados.
# Copia incremental apoyada en una copia previa
rsync -a --link-dest=/ruta/a/copiaprevia \
/ruta/origen/ /ruta/destino-incremental/
Com essa abordagem, cada pasta de backup aparenta ser uma cĂ³pia completa, mas internamente Arquivos idĂªnticos compartilham blocos no disco.Isso reduz consideravelmente o espaço utilizado e permite uma navegaĂ§Ă£o fĂ¡cil por instantĂ¢neos histĂ³ricos.
CĂ³pias de segurança no estilo Time Machine com snapshots e links fĂsicos.
Muitas pessoas querem replicar no Linux a conveniĂªncia de O Time Machine do macOS com seus snapshots por dataCom o rsync, isso Ă© perfeitamente possĂvel combinando a opĂ§Ă£o --link-dest, um pouco de shell e alguma organizaĂ§Ă£o.
A ideia Ă© manter um diretĂ³rio atualizado que aponte para o Ăºltimo backup vĂ¡lido e, ao mesmo tempo, criar um novo. Pastas com registro de data e hora (data-hora) que representam cada instantĂ¢neo. Os arquivos inalterados sĂ£o vinculados por meio de links fĂsicos para o instantĂ¢neo anterior, e novos blocos sĂ£o gravados somente quando hĂ¡ diferenças reais.
Um comando tĂpico nesse esquema poderia ser algo como:
rsync -avPh --delete \
--link-dest="$TARGETDIR/current" \
"$SOURCEDIR/$USER/" \
"$TARGETDIR/$USER-$TIMESTAMP"
Em seguida, um script se encarrega de atualizar o link simbĂ³lico. atual para que sempre aponte para o snapshot mais recente.e para manter um pequeno histĂ³rico organizado por data. Dessa forma, vocĂª pode navegar pelas edições antigas simplesmente digitando o nome da pasta de seu interesse.
A automaĂ§Ă£o acontece naturalmente: vocĂª salva o script em algo como /usr/local/bin/rsync-time-machine e agende a execuĂ§Ă£o diĂ¡ria com o cron no horĂ¡rio que for mais conveniente para vocĂª.
0 5 * * * bash /usr/local/bin/rsync-time-machine
Automatize backups diĂ¡rios com o cron.
Chega um ponto em que fazer cĂ³pias Ă mĂ£o deixa de fazer sentido; o normal Ă©... Agende backups com o cron para que funcionem automaticamente fora dos horĂ¡rios de pico (de manhĂ£ cedo, por exemplo) e vocĂª possa esquecer-se delas, exceto para verificar os registros de tempos em tempos.
O processo Ă© sempre o mesmo: vocĂª prepara um script que faz a cĂ³pia completa com todas as opções (exclusões, logs, etc.), concede permissões de execuĂ§Ă£o a ele e o adiciona ao crontab do usuĂ¡rio apropriado ou ao root, caso envolva alterações em todo o sistema.
Um exemplo de um script simples para cĂ³pia local poderia ser:
#!/bin/bash
SOURCE_DIR="/home"
BACKUP_DIR="/backup/home"
LOG_FILE="/var/log/backup/rsync-local.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")
mkdir -p «$BACKUP_DIR» «$(dirname «$LOG_FILE»)»
echo "Backup local iniciado" >> "$LOG_FILE"
rsync -av --excluir
–excluir='*.tmp' \
–excluir='.cache' \
–excluir='Downloads/*' \
«$SOURCE_DIR/» «$BACKUP_DIR/» >> «$LOG_FILE» 2>&1
se ; entĂ£o
echo » Backup concluĂdo com sucesso» >> «$LOG_FILE»
outro
echo » Backup com erros» >> «$LOG_FILE»
fi
Depois de inserir o script, por exemplo, /usr/local/bin/rsync-local-backup.sh E, marcado como executĂ¡vel, vocĂª o adiciona ao cron para que seja executado em um horĂ¡rio especĂfico.
sudo chmod +x /usr/local/bin/rsync-local-backup.sh
sudo crontab -e
Dentro do crontab vocĂª pode colocar algo como:
0 2 * * * /usr/local/bin/rsync-local-backup.sh
Temporizadores systemd: uma alternativa moderna ao cron
Nos sistemas modernos, muitas vezes vale a pena. Use temporizadores do systemd em vez do cron.especialmente se vocĂª deseja integrar melhor os serviços, gerenciar dependĂªncias de rede ou ter registros centralizados no journalctl.
A ideia Ă© definir um serviço que execute seu script de backup e um temporizador que indique quando executĂ¡-lo. O serviço poderia ser algo como:
Description=Rsync Backup Service
After=network-online.target
Wants=network-online.target
Tipo=oneshot
ExecStart=/usr/local/bin/rsync-remote-backup.sh
usuĂ¡rio=raiz
SaĂda padrĂ£o = diĂ¡rio
Erro padrĂ£o=diĂ¡rio
Tempo limiteSeg=7200
WantedBy = multiusuĂ¡rio.target
E o temporizador associado seria definido da seguinte forma, para um Backup diĂ¡rio Ă s 2h da manhĂ£ com um toque de aleatoriedade para nĂ£o sobrecarregar tudo de uma vez:
Description=Daily Rsync Backup Timer
Requires=rsync-backup.service
OnCalendar=*-*-* 02:00:00
Persistente = verdadeiro
AtrasoAleatĂ³rioSeg=10min
ProcuradoPor=temporizadores.alvo
Com isso, tudo o que resta Ă© recarregar o systemd, ativar o temporizador e verificar se ele programa corretamente e se O registro de serviço mostra que as cĂ³pias sĂ£o iniciadas quando chega a hora..
sudo systemctl daemon-reload
sudo systemctl enable --now rsync-backup.timer
systemctl list-timers
journalctl -u rsync-backup.service
Organize backups rotativos: diĂ¡rios, semanais e mensais.
Se vocĂª deseja algo um pouco mais elaborado do que uma Ăºnica cĂ³pia estĂ¡tica, pode configurar uma estrutura de CĂ³pias de segurança rotativas: diĂ¡rias, semanais e mensais.Utilizando links fĂsicos para economizar espaço e facilitar a limpeza de arquivos antigos.
Um padrĂ£o clĂ¡ssico envolve ter um diretĂ³rio atual que Ă© atualizado a cada vez com o rsync e, em seguida, clonar essa Ă¡rvore com links fĂsicos para pastas diĂ¡rias, semanais e mensais, dependendo do dia.
#!/bin/bash
SOURCE_DIR="/var/www"
BACKUP_ROOT="/backup/www"
CURRENT="$BACKUP_ROOT/current"
DAILY="$BACKUP_ROOT/daily"
WEEKLY="$BACKUP_ROOT/weekly"
MONTHLY="$BACKUP_ROOT/monthly"
DATE=$(date +%Y%m%d)
DOW=$(date +%u)
DOM=$(date +%d)
mkdir -p «$CURRENT» «$DAILY» «$WEEKLY» «$MONTHLY»
rsync -av –delete –link-dest=»$CURRENT» \
«$SOURCE_DIR/» «$CURRENT/»
&& cp -al «$CURRENT» «$DAILY/$DATE»
&& cp -al «$CURRENT» «$WEEKLY/$DATE»
&& cp -al «$CURRENT» «$MONTHLY/$DATE»
encontrar «$DAILY» -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
encontrar «$WEEKLY» -maxdepth 1 -type d -mtime +28 -exec rm -rf {} \;
encontrar «$MONTHLY» -maxdepth 1 -type d -mtime +365 -exec rm -rf {} \;
Com este sistema vocĂª tem uma janela histĂ³rica bastante razoĂ¡vel Sem preencher o disco com cĂ³pias completas, e cada instantĂ¢neo permanece navegĂ¡vel como uma pasta normal.
Se seus dados mudam rapidamente ou sĂ£o muito grandes, vocĂª pode ajustar os perĂodos de retenĂ§Ă£o, as frequĂªncias ou atĂ© mesmo combinar isso com snapshots LVM ou ZFS para garantir a consistĂªncia dos bancos de dados ou mĂ¡quinas virtuais.
Monitore, verifique e descubra se seus backups sĂ£o Ăºteis.
Ter tarefas de backup executadas diariamente Ă© Ă³timo, mas se ninguĂ©m verificar o resultado Isso nĂ£o vai te ajudar muito. É importante configurar um monitoramento bĂ¡sico para saber se e quando o Ăºltimo backup foi feito.
Uma tĂ¡tica simples Ă© deixar um pequeno marcador na pasta de destino sempre que um backup for concluĂdo com sucesso, por exemplo, um arquivo .last-backup-success com a data. Assim, um script externo, ou mesmo uma verificaĂ§Ă£o do Nagios/Icinga, pode alertĂ¡-lo se esse arquivo estiver muito antigo.
MARKER="/backup/www/.last-backup-success"
if ; then
echo "Marcador de backup no encontrado"
exit 1
fi
Outro hĂ¡bito saudĂ¡vel Ă© verificar o Verifique os logs do rsync em busca de erros ou taxas de transferĂªncia incomuns.Um script que extrai estatĂsticas como "NĂºmero de arquivos", "Tamanho total", "AceleraĂ§Ă£o" e similares fornece uma visĂ£o geral rĂ¡pida de como as coisas estĂ£o indo.
E, claro, o que realmente faz a diferença Ă© se acostumar com isso de vez em quando. para fazer uma restauraĂ§Ă£o de verdadeSelecione um arquivo especĂfico, restaure uma versĂ£o de ontem ou da semana passada e verifique se ele abre corretamente. Essa Ă© a Ăºnica maneira de garantir que, se algo der errado um dia, seus backups estarĂ£o Ă altura da tarefa.
Ao consolidar todas essas peças — um rsync bem configurado, automaĂ§Ă£o com cron ou systemd, rotaĂ§Ă£o adequada, monitoramento e testes de restauraĂ§Ă£o — vocĂª obterĂ¡ o seguinte resultado: Um sistema de backup Linux robusto, flexĂvel e econĂ´mico., que aproveita ao mĂ¡ximo os benefĂcios do software livre sem obrigar vocĂª a abrir mĂ£o da conveniĂªncia ou da confiabilidade.
