rsync: Backup Incremental e Sincronização de Dados Remotos

Métodos de Backup

Existem diversas ferramentas para copiar dados:

  • cp: Copia arquivos localmente.

  • scp: Copia arquivos de forma remota. Exemplos de uso: ```

    Enviar um arquivo para um servidor remoto (push)

    scp arquivo.txt usuario@ip_remoto:/caminho/destino

    Baixar um arquivo de um servidor remoto (pull)

    scp usuario@ip_remoto:/caminho/origem/arquivo.txt ./caminho/local

    
    Sua principal limitação é que opera apenas com cópias completas (full).
    
  • rsync: Ferramenta de cópia remota avançada que suporta transferências incrementais.

Visão Geral do rsync

O nome rsync significa remote synchronization (sincronização remota). Ele permite a cópia e sincronização eficiente de dados entre hosts locais e remotos, funcionando como uma alternativa superior ao scp. Enquanto scp sempre transfere todos os arquivos, o rsync é capaz de transferir apenas as diferenças (incremental). Esta mesma vantagem se aplica em relação ao comando cp ao operar entre diretórios locais.

Características Principais

  • Copia arquivos especiais como links simbólicos e dispositivos.
  • Permite excluir arquivos ou diretórios específicos da sincronização.
  • Preserva atributos como permissões, timestamps, proprietário e grupo.
  • Realiza sincronização incremental, transferindo apenas dados modificados.
  • Suporta protocolos de transporte como rcp, rsh e ssh (note que o rsync não criptografa os dados por padrão).
  • Pode operar via processo daemon (serviço) usando sockets.
  • Permite transferências autenticadas ou anônimas no modo daemon.

Cenários de Uso

  • Backups completos (full).
  • Backups incrementais.

Modos de Transferência

  • Push: O cliente envia dados de seu sistema local para um servidor remoto.
  • Pull: O cliente baixa dados de um servidor remoto para seu sistema local.

Modos de Operação do rsync

  1. Modo Local: Funciona de forma semelhante ao cp, apenas para cópias no mesmo sistema.
  2. Modo Remoto: Atua como uma versão aprimorada do scp, suportando cópias incrementais.
  3. Modo Daemon: Opera com uma arquitetura cliente-servidor completa.

Uso Básico e Opções Comuns

Veja uma tabela com as opções mais frequentes:

Opção Descrição Exemplo
-a Modo arquivo (equivale a -rtopgDl) rsync -a ./dados/ user@host:/backup
-v Saída detalhada rsync -v ./file.txt user@host:/dest
-z Compactação durante a transferência rsync -z ./dados/ user@host:/backup
-r Transferência recursiva de diretórios rsync -r ./pasta user@host:/dest
-t Preserva timestamps rsync -t ./file user@host:/dest
-o Preserva o dono (owner) rsync -o ./file user@host:/dest
-g Preserva o grupo rsync -g ./file user@host:/dest
-p Preserva permissões rsync -p ./file user@host:/dest
-l Copia links simbólicos como links rsync -l ./dir user@host:/dest
-P Mostra progresso e permite retomada rsync -P ./file user@host:/dest
-D Preserva dispositivos e especiais rsync -D /dev/tty user@host:/dev
-L Copia o arquivo referenciado pelo link rsync -L ./link user@host:/dest
--exclude=PATRÃO Exclui arquivos que correspondem ao padrão rsync -av --exclude='*.log' ./dir user@host:/dest
--exclude-from=ARQUIVO Usa um arquivo com lista de exclusões rsync -av --exclude-from=excl.txt ./dir user@host:/dest
--bwlimit=KBPS Limita a largura de banda (KB/s) rsync -av --bwlimit=500 ./dir user@host:/dest
--delete Remove arquivos no destino que não existem na origem rsync -av --delete ./src/ user@host:/dest/
--password-file=ARQ Especifica arquivo com a senha rsync -av --password-file=/etc/rsync.pass ./dir user@host::mod

Configurando o Modo Daemon (Cliente-Servidor)

1. Configuração do Servidor

  1. Instalação: ``` sudo yum install -y rsync

  2. Editar o arquivo de configuração (/etc/rsyncd.conf): ``` uid = rsyncuser gid = rsyncuser port = 873 use chroot = no max connections = 100 timeout = 300 log file = /var/log/rsyncd.log

    [modulo_backup] comment = Diretório para backups path = /dados/backup read only = false auth users = rsync_client secrets file = /etc/rsyncd.secrets

  3. Criar usuário e grupo do sistema (opcional, mas recomendado): ``` sudo groupadd rsyncuser sudo useradd -g rsyncuser -s /sbin/nologin rsyncuser

  4. Criar o arquivo de senhas: ``` echo "rsync_client:minha_senha_forte" | sudo tee /etc/rsyncd.secrets sudo chmod 600 /etc/rsyncd.secrets

  5. Criar e permissar o diretório de backup: ``` sudo mkdir -p /dados/backup sudo chown rsyncuser:rsyncuser /dados/backup

  6. Habilitar e iniciar o serviço: ``` sudo systemctl enable --now rsyncd

  7. Ajustar firewall (se necessário): ``` sudo firewall-cmd --add-port=873/tcp --permanent sudo firewall-cmd --reload

    
    

2. Configuração do Cliente

Método 1: Autenticação interativa

rsync -avz /caminho/local/ rsync_client@IP_SERVIDOR::modulo_backup

Método 2: Usando arquivo de senha

  1. Criar o arquivo de senha no cliente: ``` echo "minha_senha_forte" > ~/.rsync.passwd chmod 600 ~/.rsync.passwd
  2. Executar a sincronização: ``` rsync -avz --password-file=~/.rsync.passwd /caminho/local/ rsync_client@IP_SERVIDOR::modulo_backup
    
    

Método 3: Variável de ambiente

export RSYNC_PASSWORD="minha_senha_forte"
rsync -avz /caminho/local/ rsync_client@IP_SERVIDOR::modulo_backup

Sincronização em Tempo Real com inotify

O rsync não monitora alterações em tempo real nativamente. Para isso, podemos usar o inotify-tools para observar mudanças no sistema de arquivos e acionar o rsync automaticamente.

No cliente, instale o pacote:

sudo yum install -y inotify-tools

Exemplo de comando para monitorar um diretório e sincronizar mudanças:

inotifywait -mrq -e create,modify,delete,attrib /caminho/para/monitorar | while read evento diretorio arquivo; do
    rsync -avz --delete /caminho/para/monitorar/ usuario@servidor:/caminho/remoto/
done

Este script executa o rsync sempre que uma criação, modificação, exclusão ou alteração de atributo for detectada no diretório especificado.

Tags: rsync backup incremental Sincronização de Dados Linux inotify

Publicado em 6-21 04:45