Backup de N diretórios e arquivos
Publicado por Thiago Diniz da Silveira 07/07/2009
[ Hits: 7.482 ]
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
Padronização de usuários em vários micros
Importar varius Emolticons de uma vez para amsn
DELETAR arquivos a X semanas passadas
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)