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.
- Site oficial: https://rsync.samba.org/
- Porta padrão: 873
- Modo de operação: Cliente/Servidor (C/S)
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
- Modo Local: Funciona de forma semelhante ao
cp, apenas para cópias no mesmo sistema. - Modo Remoto: Atua como uma versão aprimorada do
scp, suportando cópias incrementais. - 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
-
Instalação: ``` sudo yum install -y rsync
-
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
-
Criar usuário e grupo do sistema (opcional, mas recomendado): ``` sudo groupadd rsyncuser sudo useradd -g rsyncuser -s /sbin/nologin rsyncuser
-
Criar o arquivo de senhas: ``` echo "rsync_client:minha_senha_forte" | sudo tee /etc/rsyncd.secrets sudo chmod 600 /etc/rsyncd.secrets
-
Criar e permissar o diretório de backup: ``` sudo mkdir -p /dados/backup sudo chown rsyncuser:rsyncuser /dados/backup
-
Habilitar e iniciar o serviço: ``` sudo systemctl enable --now rsyncd
-
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
- Criar o arquivo de senha no cliente: ```
echo "minha_senha_forte" > ~/.rsync.passwd
chmod 600 ~/.rsync.passwd
- 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.