Backup de N diretórios e arquivos
Publicado por Thiago Diniz da Silveira 07/07/2009
[ Hits: 7.816 ]
Apenas mais um script de backup, cada comando está bem explicado, será bom para o aprendizado.
#!/bin/bash
#==================================#
# Script para realizar backup #
#==================================#
# IMPORTANTE:
# Para o funcionamento deste script é necessário gerar uma chave do ssh
# e enviar a chave pub para o servidor destino.
# Isso é necessário para os comandos scp e ssh poderem ser emitidos
# sem uma requisição de senha.
# para realizar isso pode ser utilizado esses dois comandos (tem que executar
# os comandos com o usuário que for executar o script):
# O primeiro serve para gerar a chave rsa:
# 1 - $ ssh-keygen -t rsa
# O segundo envia a chave rsa para o servidor destino
# 2 - $ ssh-copy-id -i ~/.ssh/id_rsa.pub login@servidor
# Comandos tirado do site http://www.guiadohardware.net/tutoriais/dominando-ssh/pagina5.html
# se quiser conhecer um pouco mais sobre ssh recomendo.
# Configuração do servidor 1 (origem)
# Diretório onde ficara o backup temporariamente
DIR_ORIG="/tmp/"
# Diretório dos arquivos a receberem backups separados por espaço
# podem ter quantos quiser
BKP=("/home/$USER/" "/home/FTP/")
# Configuração do servidor 2 (destino)
# IP ou Name do servidor que receberá o backup
HOST="192.168.1.2"
# Usuário a ser utilizado no envio dos backups
USUARIO="root"
# Diretório onde irá ser enviado os backups
DIR_DEST="/tmp/"
# Configurações gerais
# Nome do arquivo compactado
ARQ="bkp.tgz"
# Criar Log? (default = 1)
# 1 = sim, 0 = não
LOG="1"
if [ $LOG -eq 1 ]; then
# Nome do arquivo de log e diretório a ser gravado
ARQ_LOG="${DIR_ORIG}logBKP"
fi
# Descompactar arquivo no servidor a ser enviado? (default = 1)
# 1 = sim, 0 = não
DESC_BKP="0"
if [ $DESC_BKP -eq "1" ]; then
# Diretório onde irá ser descompactado os backups
# OBS: quando descompactar o backup, o diretório de cada arquivo
# é recriado, ou seja, se DIR_UNZIP for /backup e você fez backup do
# /home/$USER/ criará um diretório chamado /backup/home/$USER
# dentro do servidor destino. (se tiver permissão claro)
DIR_UNZIP="/"
fi
# Inicio do script
if [ $LOG -eq 1 ]; then
echo "Backup Execução - $(date +%d/%m/%Y)" >> $ARQ_LOG
echo "Horaario da Inicialização do Backup - $(date +%k:%M:%S)" >> $ARQ_LOG
echo >> $ARQ_LOG
echo "Compactando arquivos" >> $ARQ_LOG
# Nesta parte a variável bkp recebera todos os valores dentro do array BKP
# e serão adicionados a váriavel tmp
for bkp in ${BKP[@]}; do
tmp="$tmp $bkp";
done
# Compacta os arquivos e diretórios mantendo as permissões
tar -czpvf ${DIR_ORIG}${ARQ} ${tmp} >> $ARQ_LOG
echo >> $ARQ_LOG
echo "Transferindo arquivo para o servidor: ${HOST}" >> $ARQ_LOG;
echo "Utilizando o user: ${USER}" >> $ARQ_LOG;
echo "Para o diretório: ${DIR_DEST}" >> $ARQ_LOG;
# Transfere o backup para o servidor destino
scp ${DIR_ORIG}${ARQ} $thiagods.ti@${HOST}:${DIR_DEST} >> $ARQ_LOG;
echo >> $ARQ_LOG;
if [ $DESC_BKP -eq 1 ]; then
echo "Descompactando arquivo no servidor" >> $ARQ_LOG;
# Descompacta o backup no servidor destino
ssh $thiagods.ti@${HOST} tar -xzpvf ${DIR_DEST}${ARQ} -C ${DIR_UNZIP} >> $ARQ_LOG;
echo >> $ARQ_LOG;
fi
echo "Horário da Finalização do Backup - $(date +%k:%M:%S)" >> $ARQ_LOG
echo "=======================================================================" >> $ARQ_LOG
echo >> $ARQ_LOG
# Caso não queira log, porém não é recomendável
else
for bkp in ${BKP[@]}; do
tmp="$tmp $bkp";
done
tar -czpvf ${DIR_ORIG}${ARQ} ${tmp}
scp ${DIR_ORIG}${ARQ} $thiagods.ti@${HOST}:${DIR_DEST}
ssh $thiagods.ti@${HOST} tar -xzpvf ${DIR_DEST}${ARQ} -C ${DIR_UNZIP}
fi
Carrega o VNC em uma tela do X11 separada e com mouse para canhotos
Troca de imagem da tela de bloqueio de usuário no Linux Mint MATE
Envia mensagens para o serviço mensageiro do windows facilmente
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









