Pesquisa de site

rdiff-backup - Uma ferramenta de backup incremental remoto para Linux


rdiff-backup é um script Python poderoso e fácil de usar para backup incremental local/remoto, que funciona em qualquer sistema operacional POSIX, como Linux, Mac OS X ou Cygwin. Ele reúne os recursos notáveis de um espelho e um backup incremental.

Significativamente, ele preserva subdiretórios, arquivos de desenvolvimento, links físicos e atributos críticos de arquivo, como permissões, propriedade de uid/gid, tempos de modificação, atributos estendidos, ACLs e bifurcações de recursos. Ele pode funcionar em modo de uso eficiente de largura de banda em um canal, de maneira semelhante à popular ferramenta de backup rsync.

rdiff-backup faz backup de um único diretório para outro através de uma rede usando SSH, o que implica que a transferência de dados é criptografada e, portanto, segura. O diretório de destino (no sistema remoto) acaba sendo uma cópia exata do diretório de origem, porém diferenças reversas extras são armazenadas em um subdiretório especial no diretório de destino, tornando possível recuperar arquivos perdidos há algum tempo.

Dependências

Para usar o rdiff-backup no Linux, você precisará dos seguintes pacotes instalados em seu sistema:

  • Python v2.2 ou posterior
  • librsync v0.9.7 ou posterior
  • Os módulos Python pylibacl e pyxattr são opcionais, mas necessários para lista de controle de acesso (ACL) POSIX e suporte estendido a atributos, respectivamente.
  • rdiff-backup-statistics requer Python v2.4 ou posterior.

Como instalar o rdiff-backup no Linux

Importante: Se você estiver operando em uma rede, você terá que instalar o rdiff-backup em ambos os sistemas, de preferência ambas as instalações do rdiff-backup terão que ser exatamente iguais mesma versão.

O script já está presente nos repositórios oficiais das principais distribuições Linux, basta executar o comando abaixo para instalar o rdiff-backup bem como suas dependências:

Instale o rdiff-backup no Ubuntu

Para instalar o Rdiff-Backup no Ubuntu Focal ou Debian Bullseye ou mais recente (tem 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Para instalar o Rdiff-Backup em backports do Ubuntu para versões mais antigas (é necessário um backport 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

No CentOS/RHEL 8

Para instalar o Rdiff-Backup no CentOS e RHEL 8 (do COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

No CentOS/RHEL 7

Para instalar o Rdiff-Backup no CentOS e RHEL 7 (do COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

No CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

No Fedora

Para instalar o Rdiff-Backup no Fedora 32+.


sudo dnf install rdiff-backup

Como usar backup rdiff no Linux

Como mencionei antes, rdiff-backup usa SSH para se conectar a máquinas remotas em sua rede, e a autenticação padrão em SSH é o método nome de usuário/senha, que normalmente requer interação humana.

No entanto, para automatizar tarefas como backups automáticos com scripts e muito mais, você precisará configurar o login sem senha SSH usando chaves SSH, porque as chaves SSH aumentam a confiança entre dois servidores Linux para facilitar a sincronização ou transferência de arquivos.

Depois de configurar o login sem senha SSH, você pode começar a usar o script com os exemplos a seguir.

Backup de arquivos para partição diferente

O exemplo abaixo fará backup do diretório /etc em um diretório Backup em outra partição:

sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Para excluir um diretório específico, bem como seus subdiretórios, você pode usar a opção --exclude da seguinte forma:

sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Podemos incluir todos os arquivos de dispositivos, arquivos fifo, arquivos de soquete e links simbólicos com a opção --include-special-files conforme abaixo:

sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Existem dois outros sinalizadores importantes que podemos definir para seleção de arquivos; --max-file-size tamanho que exclui arquivos maiores que o tamanho determinado em bytes e --min-file-size tamanho que exclui arquivos menores que o tamanho fornecido em bytes:

sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Faça backup de arquivos remotos no servidor Linux local

Para os fins desta seção, usaremos:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Como afirmamos anteriormente, você deve instalar a mesma versão do rdiff-backup em ambas as máquinas, agora tente verificar a versão em ambas as máquinas da seguinte forma:

rdiff-backup -V

No servidor de backup, crie um diretório que armazenará os arquivos de backup assim:

mkdir -p /backups

Agora, no servidor de backup, execute os seguintes comandos para fazer um backup dos diretórios /var/log/ e /root do servidor Linux remoto 192.168.56.102 em /backups:

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

A captura de tela abaixo mostra o arquivo raiz no servidor remoto 192.168.56.102 e os arquivos de backup no servidor traseiro 192.168.56.10:

Anote o diretório rdiff-backup-data criado no diretório backup conforme visto na captura de tela, ele contém dados vitais sobre o processo de backup e arquivos incrementais.

Agora, no servidor 192.168.56.102, arquivos adicionais foram adicionados ao diretório raiz conforme mostrado abaixo:

Vamos executar o comando backup mais uma vez para obter os dados alterados, podemos usar a opção -v[0-9] (onde o número especifica o nível de verbosidade, o padrão é 3 que é silencioso) para defina o recurso de verbosidade:

rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

E para listar o número e a data dos backups incrementais parciais contidos no diretório /backups/192.168.56.102_rootfiles.backup, podemos executar:

rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Automatizando backup rdiff-back usando Cron

Podemos imprimir estatísticas resumidas após um backup bem-sucedido com --print-statistics. No entanto, se não definirmos esta opção, as informações ainda estarão disponíveis no arquivo de estatísticas da sessão. Leia mais sobre esta opção na seção STATISTICS da página man.

E o sinalizador –remote-schema nos permite especificar um método alternativo de conexão a um computador remoto.

Agora, vamos começar criando um script backup.sh no servidor de backup 192.168.56.10 da seguinte forma:

cd ~/bin
vi backup.sh

Adicione as seguintes linhas ao arquivo de script.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Salve o arquivo, saia e execute o seguinte comando para adicionar o script ao crontab no servidor de backup 192.168.56.10:

crontab -e

Adicione esta linha para executar seu script de backup diariamente à meia-noite:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Salve o crontab e feche-o, agora automatizamos com sucesso o processo de backup. Certifique-se de que esteja funcionando conforme o esperado.

Leia a página man do rdiff-backup para obter informações adicionais, opções de uso exaustivas e exemplos:

man rdiff-backup

Página inicial do rdiff-backup: http://www.nongnu.org/rdiff-backup/

Por enquanto é isso! Neste tutorial, mostramos como instalar e basicamente usar o rdiff-backup, um script Python fácil de usar para backup incremental local/remoto no Linux. Compartilhe suas idéias conosco por meio da seção de comentários abaixo.