backup
Publicado por Perfil removido 29/09/2005
[ Hits: 62.727 ]
Script simples que faz backups de acordo com a frequência que o usuario quiser, pega a lista das pastas de um arquivo e deleta os ".tar.gz" mais velhos que "n" dias, com "n" definido pelo usuario.
P.S.: tem muita coisa que dá pra melhorar, mas sou novato em shell script e estou aprendendo.
#!/bin/bash # Script para Backup. # Funcionamento: # O script procura por uma pasta "$PASTA_DESTINO", onde serão guardados os #"tarballs" das pastas compactadas. Nessa pasta ele procura por um arquivo # chamado "pastas.conf", onde estão armazenados os caminhos completos para # as pastas a serem "backupeadas". # Este arquivo tem o seguinte formato: # /etc # /var/cache/bind # Com um caminho completo por linha. # Para inserir no crontab: # crontab -e <-- abre o crontab para edição; # Lá no arquivo, insira a linha: # 00 23 * * 4 /backup.sh # que irá executar o programa "/backup.sh", toda(* *) quinta-feira(4) às # 23 horas. # pasta onde serão guardados os "tarballs" PASTA_DESTINO=/backup # tempo(em numero de dias) que os arquivos ficarão guardados na pasta de backup TEMPO_LIMITE=28 if [ ! -d $PASTA_DESTINO ]; # testa se existe o diretorio "$PASTA_DESTINO" then mkdir $PASTA_DESTINO #se não existir, cria ele... echo -n ** "ATENÇÂO: Pasta de backup não existe. Data: " >> /var/log/messages echo -n `date +%d-%m-%Y` >> /var/log/messages echo " Pasta "$PASTA_DESTINO " criada." >> /var/log/messages fi if [ ! -e $PASTA_DESTINO/pastas.conf ]; then echo "** ERRO: arquivo de configuração " $PASTA_DESTINO/"pastas.conf, não existe." >> /var/log/messages echo "** Deve ser criado, com um nome completo de pasta por linha." >> /var/log/messages exit 1 fi # pega as linhas do arquivo, uma em cada volta do loop. while read LINHA do # pega o nome da pasta. PASTA_BACKUP=`basename $LINHA` # pega o caminho da pasta. CAMINHO_PASTA=`dirname $LINHA` # testa se existe o diretorio a ser copiado if [ ! -d $CAMINHO_PASTA/$PASTA_BACKUP ]; then echo -n "ERRO: diretório" $CAMINHO_PASTA/$PASTA_BACKUP "não existente!" >> $PASTA_DESTINO/erro.log echo " Abortando..." >> $PASTA_DESTINO/erro.log exit 1 fi # define nomen do arquivo. ARQUIVO=$PASTA_BACKUP-`date +%Y-%m-%d_%H-%M-%S`-$HOSTNAME.tar.gz # testa se jah existe o arquivo da data atual, se existir ele cria um novo backup # com o horario incluido no nome do arquivo if [ -e $PASTA_DESTINO/$PASTA_BACKUP-`date +%Y-%m-%d`-$HOSTNAME.tar.gz ]; then echo -n "ATENÇÂO: Já foi realizado um backup no dia:" >> $PASTA_DESTINO/erro.log echo -n `date +%d-%m-%Y` ",na pasta:" $PASTA_BACKUP >> $PASTA_DESTINO/erro.log tar cpzf $PASTA_DESTINO/$ARQUIVO $CAMINHO_PASTA/$PASTA_BACKUP > /dev/null 2> /dev/null echo -n ". Backup realizado novamente no horário: " >> $PASTA_DESTINO/erro.log echo `date +%H:%M:%S` >> $PASTA_DESTINO/erro.log else tar cpzf $PASTA_DESTINO/$PASTA_BACKUP-`date +%Y-%m-%d`-$HOSTNAME.tar.gz $CAMINHO_PASTA/$PASTA_BACKUP > /dev/null 2> /dev/null fi # escreve no arquivo de log($PASTA_DESTINO/backups.log) echo -n "*** Backup realizado da pasta " $PASTA_BACKUP >> $PASTA_DESTINO/backups.log echo -n " no dia: "`date +%d-%m-%Y`", no horário: " >> $PASTA_DESTINO/backups.log echo -n `date +%H:%M:%S`", no host: " $HOSTNAME "***" >> $PASTA_DESTINO/backups.log echo "" >> $PASTA_DESTINO/backups.log done < $PASTA_DESTINO/pastas.conf # guarda em $DELETADOS os nomes dos arquivos que não foram alterados há mais de $TEMPO_LIMITE dias e q contenham a extensao .tar.gz DELETADOS=`find $PASTA_DESTINO/ -ctime +$TEMPO_LIMITE | grep .tar.gz` rm -f $DELETADOS echo "Foram deletados os seguintes arquivos: " >> $PASTA_DESTINO/removed.log echo $DELETADOS >> $PASTA_DESTINO/removed.log
Instalação do sublime text 3 no Ubuntu 16.04
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)