Pesquisa de site

Rsnapshot (baseado em Rsync) - um utilitário de backup de sistema de arquivos local/remoto para Linux


rsnapshot é um utilitário de backup de sistema de arquivos local/remoto de código aberto que foi escrito em linguagem Perl que aproveita o poder do rsnapshot Strong>Rsync e SSH para criar backups incrementais agendados de sistemas de arquivos Linux/Unix, ocupando apenas o espaço de um único backup completo mais diferenças e manter esses backups em uma unidade local em um disco rígido diferente, um pendrive USB externo , uma unidade montada em NFS ou simplesmente pela rede para outra máquina via SSH.

Este artigo demonstrará como instalar, configurar e usar o rsnapshot para criar incrementos por hora, diariamente, semanalmente e < backups locais fortes>mensais, bem como backups remotos. Para executar todas as etapas deste artigo, você deve ser o usuário root.

Etapa 1: Instalando o Backup Rsnapshot no Linux

A instalação do rsnapshot usando Yum e APT pode ser um pouco diferente se você estiver usando Red Hat e Distribuições baseadas em Debian.

No RHEL/CentOS

Primeiro você terá que instalar e habilitar um repositório de terceiros chamado EPEL. Siga o link abaixo para instalar e ativar em seus sistemas RHEL/CentOS. Os usuários do Fedora não necessitam de nenhuma configuração especial de repositório.

  1. Instale e habilite o repositório EPEL no RHEL/CentOS 6/5/4

Depois de configurar tudo, instale rsnapshot na linha de comando, conforme mostrado.

yum install rsnapshot
No Debian/Ubuntu/Linux Mint

Por padrão, o rsnapshot está incluído nos repositórios do Ubuntu, então você pode instalá-lo usando o comando apt-get conforme mostrado.

apt-get install rsnapshot

Etapa 2: configurar o login SSH sem senha

Para fazer backup de servidores Linux remotos, seu servidor de backup de snapshot poderá se conectar por meio de SSH sem senha. Para fazer isso, você precisará criar chaves públicas e privadas SSH para autenticar no servidor rsnapshot. Siga o link abaixo para gerar chaves públicas e privadas em seu servidor de backup rsnapshot.

  1. Crie login SSH sem senha usando SSH Keygen

Etapa 3: configurando o Rsnapshot

Agora você precisará editar e adicionar alguns parâmetros ao arquivo de configuração rsnapshot. Abra o arquivo rsnapshot.conf com o editor vi ou nano.

vi /etc/rsnapshot.conf

Em seguida, crie um diretório de backup, onde deseja armazenar todos os seus backups. No meu caso, a localização do meu diretório de backup é “/data/backup/”. Procure e edite o parâmetro a seguir para definir o local do backup.

snapshot_root			 /data/backup/

Remova também o comentário da linha “cmd_ssh” para permitir a realização de backups remotos por SSH. Para descomentar a linha, remova o “#” na frente da linha a seguir para que rsnapshot possa transferir seus dados com segurança para um servidor de backup.

cmd_ssh			/usr/bin/ssh

Em seguida, você precisa decidir quantos backups antigos gostaria de manter, porque o rsnapshot não tinha ideia de com que frequência você deseja tirar snapshots. Você precisa especificar quantos dados salvar, adicionar intervalos a serem mantidos e quantos de cada um.

Bem, as configurações padrão são boas o suficiente, mas ainda assim eu gostaria que você habilitasse o intervalo “mensal” para que você também pudesse ter backups de longo prazo. Edite esta seção para se parecer com as configurações abaixo.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Mais uma coisa que você precisa editar é a variável “ssh_args”. Se você alterou a porta SSH (22) padrão para outra coisa, será necessário especificar o número da porta do seu servidor de backup remoto.

ssh_args		-p 7851

Por fim, adicione os diretórios de backup locais e remotos dos quais deseja fazer backup.

Backup de diretórios locais

Se você decidiu fazer backup de seus diretórios localmente na mesma máquina, a entrada de backup ficaria assim. Por exemplo, estou fazendo backup dos meus diretórios /tecmint e /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Backup de diretórios remotos

Se desejar fazer backup de diretórios de um servidor remoto, você precisará informar ao rsnapshot onde está o servidor e quais diretórios deseja fazer backup. Aqui estou fazendo um backup do diretório “/home” do meu servidor remoto no diretório “/data/backup” no servidor rsnapshot.

backup		 [email :/home/ 		/data/backup/

Leia também:

  1. Como fazer backup/sincronizar diretórios usando a ferramenta Rsync (sincronização remota)
  2. Como transferir arquivos/pastas usando o comando SCP
Excluir arquivos e diretórios

Aqui, vou excluir tudo e depois definir apenas especificamente o que desejo fazer backup. Para fazer isso, você precisa criar um arquivo de exclusão.

vi /data/backup/tecmint.exclude

Primeiro, obtenha a lista de diretórios dos quais deseja fazer backup e adicione ( – * ) para excluir todo o resto. Isso fará backup apenas do que você listou no arquivo. Meu arquivo de exclusão é semelhante ao abaixo.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Usar a opção de exclusão de arquivo pode ser muito complicado devido ao uso da recursão rsync. Portanto, meu exemplo acima pode não ser o que você está procurando. Em seguida, adicione o arquivo de exclusão ao arquivo rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Finalmente, você está quase terminando a configuração inicial. Salve o arquivo de configuração “/etc/rsnapshot.conf” antes de prosseguir. Há muitas opções para explicar, mas aqui está meu arquivo de configuração de exemplo.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Todas as opções acima e explicações de argumentos são as seguintes:

  1. config_version 1.2=Versão do arquivo de configuração
  2. snapshot_root=Destino de backup para armazenar instantâneos
  3. cmd_cp=Caminho para copiar o comando
  4. cmd_rm=Caminho para remover o comando
  5. cmd_rsync=Caminho para rsync
  6. cmd_ssh=Caminho para SSH
  7. cmd_logger=Caminho para a interface de comando do shell para o syslog
  8. cmd_du=Caminho para o comando de uso do disco
  9. intervalo por hora=Quantos backups por hora devem ser mantidos.
  10. intervalo diário=Quantos backups diários manter.
  11. intervalo semanal=Quantos backups semanais manter.
  12. intervalo mensal=Quantos backups mensais manter.
  13. ssh_args=Argumentos SSH opcionais, como uma porta diferente (-p )
  14. detalhado=autoexplicativo
  15. loglevel=Autoexplicativo
  16. logfile=Caminho para o arquivo de log
  17. exclude_file=Caminho para o arquivo de exclusão (será explicado com mais detalhes)
  18. rsync_long_args=Argumentos longos para passar para rsync
  19. lockfile=Autoexplicativo
  20. backup=Caminho completo para o backup seguido pelo caminho relativo do posicionamento.

Etapa 4: verificar a configuração do Rsnapshot

Depois de concluir todas as configurações, é hora de verificar se tudo funciona conforme o esperado. Execute o comando a seguir para verificar se sua configuração possui a sintaxe correta.

rsnapshot configtest

Syntax OK

Se tudo configurado corretamente, você receberá uma mensagem “Sintaxe OK”. Se você receber alguma mensagem de erro, isso significa que você precisa corrigir esses erros antes de executar o rsnapshot.

Em seguida, faça um teste em um dos instantâneos para ter certeza de que estamos gerando resultados corretos. Usamos o parâmetro “por hora” para fazer um teste usando o argumento -t (test). O comando abaixo exibirá uma lista detalhada das coisas que fará, sem realmente fazê-las.

rsnapshot -t hourly
Saída de amostra
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Nota: O comando acima diz ao rsnapshot para criar um backup “de hora em hora”. Na verdade, ele imprime os comandos que executará quando realmente o executarmos.

Etapa 5: executando o Rsnapshot manualmente

Depois de verificar seus resultados, você pode remover a opção “-t” para realmente executar o comando.

rsnapshot hourly

O comando acima executará o script de backup com toda a configuração que adicionamos no arquivo rsnapshot.conf e criará um diretório “backup” e então criará a estrutura de diretórios abaixo dele que organiza nossos arquivos. Depois de executar o comando acima, você pode verificar os resultados acessando o diretório de backup e listar a estrutura de diretórios usando o comando ls -l conforme mostrado.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Etapa 6: Automatizando o Processo

Para automatizar o processo, você precisa agendar o rsnapshot para ser executado em determinados intervalos no Cron. Por padrão, rsnapshot vem com o arquivo cron em “/etc/cron.d/rsnapshot“, se não existir, crie um e adicione as seguintes linhas a ele.

Por padrão as regras são comentadas, então você precisa remover o “#” da frente da seção de agendamento para habilitar esses valores.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Deixe-me explicar exatamente o que as regras do cron acima fazem:

  1. É executado a cada 4 horas e cria um diretório de hora em hora no diretório /backup.
  2. Executa diariamente às 3h30 e cria um diretório diariamente no diretório /backup.
  3. Executa semanalmente todas as segundas-feiras às 3h e cria um diretório semanal em /backup diretório.
  4. Executa todo mensalmente às 2h30 e cria um diretório mensal no diretório /backup.

Para entender melhor como funcionam as regras cron, sugiro que você leia nosso artigo que descreve.

  1. 11 exemplos de agendamento Cron

Etapa 7: Relatórios Rsnapshot

Orsnapshot fornece um pequeno script Perl de relatório que envia um alerta por e-mail com todos os detalhes sobre o que ocorreu durante o backup de dados. Para configurar este script, você precisa copiá-lo em algum lugar em “/usr/local/bin” e torná-lo executável.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

Em seguida, adicione o parâmetro “–stats” em seu arquivo “rsnapshot.conf” à seção de argumentos longos do rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Agora edite as regras crontab que foram adicionadas anteriormente e chame o script rsnapreport.pl para passar os relatórios para o endereço de e-mail especificado.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Depois de adicionar as entradas acima corretamente, você receberá um relatório em seu endereço de e-mail semelhante ao abaixo.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Links de referência

  1. página inicial do rsnapshot

Por enquanto é isso, se ocorrer algum problema durante a instalação, deixe-me um comentário. Até então fique ligado no TecMint para mais artigos interessantes sobre o mundo do código aberto.