backup
Publicado por Perfil removido 29/09/2005
[ Hits: 62.681 ]
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
Jogo da velha para dois jogadores
Mostrar detalhes dispositivo de Hardware
Verificar badblocks em unidade de disco
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Instalar debian testing (13) "por cima" do debian 12 (0)
firefox nao guarda meus logins nos sites (0)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)