Esse script faz com que seja realizado o backup de todas as pastas que estiverem dentro da "/HOME", para a pasta de acordo com a data a ser executado o backup e com o formato de "nome_da_pasta.tar.gz", na pasta "DIR_BKP" no qual poderá ser alterada de acordo com a necessidade no script. Após a compactação os arquivos serão transferidos remotamente para o servidor "IPSERVER" no mesmo caminho da pasta "DIR_BKP". Desta forma os backups serão armazenados no servidor primário e no de backup:

1º PASSO:

Configurar a comunicação entre os servidores seja transparente:

# Comando:

 root@servidorA:~# ssh-keygen -b 4096 -t rsa

  • Após este comando será solicitado para salvar o arquivo, apenas prossiga com <ENTER>:

root@servidorA:~# Enter file in which to save the key (/root/.ssh/id_rsa): <ENTER>

  • Após armazenar o arquivo será solicitado para inserir a senha, apenas prossiga com <ENTER>:

root@servidorA:~#Enter passphrase (empty for no passphrase): <ENTER>

root@servidorA:~#Enter same passphrase again: <ENTER>

root@servidorA:~#Your identification has been saved in /root/.ssh/id_rsa.

root@servidorA:~# Your public key has been saved in /root/.ssh/id_rsa.pub.

# The key fingerprint is:

# 67:30:37:82:a3:e1:0f:21:e4:57:63:3f:b4:ee:cf:ea Este endereço de email está protegido contra piratas. Necessita ativar o JavaScript para o visualizar.

  • Enviar o certificado público "Your public key has been saved in /root/.ssh/id_rsa.pub" para o servidorB de destino (Backup);
  • Crie ou insira o conteúdo do arquivo "/root/.ssh/id_rsa.pub" no arquivo "/root/.ssh/authorized_keys".

2º PASSO:

Criar os diretórios em ambos servidores (servidorA e servidorB):

root@servidorA:~# /home/servidorA/destinoA

root@servidorA:~# /scripts/bkp_conf

root@servidorA:~# /scripts/bkp

root@servidorA:~# /scripts/bkp/logs

  • Criar o arquivo abaixo para inserir as extensões de arquivos que não precisam ser realizado backup:

root@servidorA:~# /scripts/bkp_conf/exclude.list

Exemplo, itens por linha:

*.mp3
*.mp4
*.rmvb

3º PASSO:

Segue abaixo o script, realizar os ajustes conforme a necessidade de até a linha que informa "ITENS QUE "NAO" DEVEM SER ALTERADOS":

#####################################
#!/bin/bash
# By Leandro Cestaro - 13/11/2009
# Este endereço de email está protegido contra piratas. Necessita ativar o JavaScript para o visualizar.
#####################################

# NOME DADO A PASTA DO BACKUP
IDENTIFICA=BKPArqAlphaGroups

# QUANTIDADE DE DIAS PARA ARMAZENAR O BACKUP
DIAS=4

# PASTA NA QUAL DESEJA FAZER O BACKUP
HOME=/home/groups

# PASTA NA QUAL DESEJA ARMAZENAR OS ARQUIVOS BACKUPADOS NO SERVIDOR REMOTO
DESTINO_DIR_BKP=/home/servidorA/destinoA/Groups

# ARQUIVOS DE CONFIGURACAO
DIR_BKP_CONF=/scripts/groups/bkp_conf 

# DIRETORIO ONDE SERA ARMAZENADO OS BACKUPS TEMPORARIAMENTE, ANTES DE TRANSMITIR OS DADOS PARA O SERVIDOR DE BACKUP
DIR_BKP=/home/bkp/Groups 

# DIRETORIO ONDE SERA ARMAZENADO OS LOGS
DIR_LOGS=/scripts/groups/bkp/logs 

### CONFIGURACAO PARA TRANSFERIR O BACKUP PARA OUTRO COMPUTADOR PELA REDE, UTILIZANDO SCP.

# USUARIO QUE AUTENTICARA NO SERVIDOR REMOTO
USERSCP=root 

# ENDERECO IP DO SERVIDOR DE BACKUP
IPSERVER=192.168.102.240 

########## ITENS QUE "NAO" DEVEM SER ALTERADOS ##########

ls $HOME > $DIR_BKP_CONF/arquivosbkp.txt
EXCLUDE=$DIR_BKP_CONF/exclude.list
INC=$DIR_BKP_CONF/incremental.conf
LISTA=$(cat $DIR_BKP_CONF/arquivosbkp.txt)
# LISTA=/$(cat $DIR_BKP_CONF/list.conf | grep ^/ | sort | uniq)
CONFIG=$DIR_BKP_CONF/backup.conf 
TEMP=/tmp/.backup.$$
DATA=$(date +%d-%m-%Y-%a) 
VOLTA=0

if [ ! -e $CONFIG ] ; then

touch $CONFIG

NUMERO=1

else

cp -f $CONFIG $CONFIG.bak
LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)
[ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1
FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)
LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)
OLD=$(echo $LAST | cut -f1 -d"-")
OLD=${OLD:-0}
BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")
FILE_OLD=$(echo $FIRST | cut -f- -d"-")

if [ $OLD -eq $DIAS ] ; then
NUMERO=1

else
NUMERO=$((OLD+1))
fi

fi

DESTINO=$DIR_BKP/$IDENTIFICA-$NUMERO-$DATA
LOGS=$DIR_LOGS/$IDENTIFICA-$NUMERO-$DATA 

#scp $CONFIG $USER@$IPSERVER:$DIR_BKP_CONF

cat << EOF >> $DIR_BKP_CONF/criarpasta.sh
mkdir $IDENTIFICA-$NUMERO-$DATA

EOF

sftp -b $DIR_BKP_CONF/criarpasta.sh $USER@$IPSERVER:$DESTINO_DIR_BKP
rm -f $DIR_BKP_CONF/criarpasta.sh

df -h > $LOGS.log 

for ITENS in $LISTA
do
cd $HOME
tar --totals --ignore-failed-read --exclude-from=$EXCLUDE -zcvf $DIR_BKP/$ITENS.tar.gz $ITENS >> $LOGS.log 2>&1 
done

df -h >> $LOGS.log 

echo $NUMERO-$DATA >> $CONFIG
if [ $VOLTA -eq 1 ] ; then
cat << EOF >> $DIR_BKP_CONF/criarpasta.sh
rm $IDENTIFICA-$FILE_OLD/*
rmdir $IDENTIFICA-$FILE_OLD

EOF

sftp -b $DIR_BKP_CONF/criarpasta.sh $USER@$IPSERVER:$DESTINO_DIR_BKP
rm -f $DIR_BKP_CONF/criarpasta.sh
sed 1d $CONFIG > $TEMP
mv -f $TEMP $CONFIG
fi 

scp $DIR_BKP/*.tar.gz $USER@$IPSERVER:$DESTINO_DIR_BKP/$IDENTIFICA-$NUMERO-$DATA

rm -f $DIR_BKP/*.tar.gz

 

Comentar


Código de segurança
Atualizar