Backup simples e eficiente com SCP

Share

A primeira medida de segurança a se tomar em um servidor que armazena dados dinâmicos como servidores de arquivos, ftp, web, entre outros é o backup. Sempre temos aquela paranóia de conferir se o backup foi feito, isso quando temos uma ferramenta que automatiza essa tarefa.

 

Primeiro vamos criar um usuário que fará a cópia dos arquivos:

# adduser backup

 

Logue com o usuário de backup e crie um par de chaves para que essa conta possa acessar o servidor sem solicitação de senha. Para isso não digite a passphrase:

$ ssh-keygen

 

Após criar a passphrase, copie a chave pública para o servidor que deseja efetuar o backup remoto:

$ cat ~/.ssh/id_rsa.pub | ssh usuario@ipdoservidor -p porta ‘cat >> .ssh/authorized_keys’

 

Agora crie o diretório que armazenará os backups com o usuário root e dê permissão ao usuário backup:

# mkdir /backup

# chown backup.backup /backup

 

Crie o script que fará a cópia dos arquivos com o seguinte conteúdo:

#!/bin/bash

# VARIÁVEIS

USER=$1

IP_SRV=$2

PORT=$3

DIR_SRC=$4

DIR_DST=”/backup”

NAME=”bkp-$(date +%Y%m%d-%H%M)

(ssh $USER@$IP_SRV -p $PORT “cd $DIR_SRC; tar -cpf – *”) | (cd $DIR_DST;mkdir $NAME;cd $NAME;tar xpvf -)

 

Salve em /usr/local/bin e dê permissão de execução com o usuário root:

# chmod +x /usr/local/bin/backup.sh

 

Crie um arquivo chamado /etc/cron.allow e adicione o usuário backup neste arquivo:

# echo “backup” > /etc/cron.allow

 

Crie a entrada do script no crontab:

# crontab -u backup -e

 

Adicione a seguinte linha no arquivo:

10 05 * * * /usr/local/bin usuario ipdoservidor porta_ssh dir_origem dir_destino

 

Por exemplo:

10 05 * * * /usr/local/bin root 187.73.232.21 7654 /etc/ /backup

 

Assim o backup será executado as 5:10 todos os dias no servidor 187.73.232.21 pela porta 7654 com o usuário root do arquivo /etc para o diretório backup

 

Para executar o mesmo comando com outro servidor basta copiar a chave novamente e acrescentar mais uma linha no crontab do usuário backup com os parâmetros necessários

 

Você também pode incrementar esse script com comandos para gerar log com o logger, verificar se o servidor escuta na porta ssh, se a cópia foi executada com sucesso entre outras tarefas.