backup
Publicado por Perfil removido 29/09/2005
[ Hits: 62.627 ]
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
System Software 2.1 - Instale e remova repositórios e programas de forma simples
Não consigo executar função, usando Script
Converter todas as imagens de um diretório
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? (6)