backup
Publicado por Perfil removido 29/09/2005
[ Hits: 62.611 ]
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
zsh: Função para validação de IP (IPv4)
Criando uma lixeira [Melhorado]
Adicionar e Remover usuário do Samba/Squid (com menu)
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[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