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.
- 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.
- 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:
- Como fazer backup/sincronizar diretórios usando a ferramenta Rsync (sincronização remota)
- 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:
- config_version 1.2=Versão do arquivo de configuração
- snapshot_root=Destino de backup para armazenar instantâneos
- cmd_cp=Caminho para copiar o comando
- cmd_rm=Caminho para remover o comando
- cmd_rsync=Caminho para rsync
- cmd_ssh=Caminho para SSH
- cmd_logger=Caminho para a interface de comando do shell para o syslog
- cmd_du=Caminho para o comando de uso do disco
- intervalo por hora=Quantos backups por hora devem ser mantidos.
- intervalo diário=Quantos backups diários manter.
- intervalo semanal=Quantos backups semanais manter.
- intervalo mensal=Quantos backups mensais manter.
- ssh_args=Argumentos SSH opcionais, como uma porta diferente (-p )
- detalhado=autoexplicativo
- loglevel=Autoexplicativo
- logfile=Caminho para o arquivo de log
- exclude_file=Caminho para o arquivo de exclusão (será explicado com mais detalhes)
- rsync_long_args=Argumentos longos para passar para rsync
- lockfile=Autoexplicativo
- 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:
- É executado a cada 4 horas e cria um diretório de hora em hora no diretório /backup.
- Executa diariamente às 3h30 e cria um diretório diariamente no diretório /backup.
- Executa semanalmente todas as segundas-feiras às 3h e cria um diretório semanal em /backup diretório.
- 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.
- 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
- 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.