Backup de N diretórios e arquivos
Publicado por Thiago Diniz da Silveira 07/07/2009
[ Hits: 7.716 ]
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
Script de backup e envio via SSH
Baixe e converta um vídeo do Youtube (download e convert)
Backup de MySQL com 1 arquivo para cada Banco
Front para o slackpkg em dialog
Instalador automatizado SAMBA 4 AD e File Server CentOS 7
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









