Backup de N diretórios e arquivos
Publicado por Thiago Diniz da Silveira 07/07/2009
[ Hits: 7.453 ]
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
Teste de velocidade de conexão via FTP e registro em log
Detector de Bruteforce no SSH e Bloqueio de IP Atacante
Relatório de suprimentos da empresa
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta