Backup poderoso e automatizado combinando 7-Zip + head + cron

Publicado por Pedro Ferrarezi em 28/07/2012

[ Hits: 9.628 ]

 


Backup poderoso e automatizado combinando 7-Zip + head + cron



Uma das necessidades que encontrei, foi criar um backup com uma taxa de compressão alta e que rodasse todos os dias de maneira automática em um servidor storage.

Então, fiz alguns testes comparando os resultados de taxa de compressão do 7-Zip, bzip2 e gzip.

Implementando

Assim que entrei na empresa onde estou trabalhando hoje, reestruturei o setor de TI, para funcionar mais "suave".

Os 2 últimos foram mais rápidos para fazer o backup, mas no meu caso, preciso de taxa de compressão alta, não desempenho, pois tenho um tempo bom para que o backup rode sem problemas, e não tenho muito espaço (por questões temporárias de aprovação de orçamento $).

Decidi então, optar por usar o 7-Zip, como meu compactador padrão para os backups.

E devido à falta de espaço citada, eu também não posso guardar muitos backups, visto que a política adotada pela empresa é backup completo de tudo, todo dia.

Isso cria a necessidade de ficar apagando backups praticamente todo dia, ou no máximo a cada semana. É aí que entra o Cron, combinado com o comando head do GNU/Linux.

Deixo então a dica, mostrando como usar essa opção na infra de TI.

O Cron e o comando head estão disponíveis na maioria das distribuições GNU/Linux.

Para quem usa Debian ou derivados, o 7-Zip pode ser instalado através do comando:

# apt-get update
# apt-get install p7zip-full


Feito isso crie um script shell e coloque na pasta de sua preferência, o meu coloquei em "/root".

Para meu uso, eu criei o seguinte script, que faz backup da pasta do compartilhamento Samba, lixeira do Samba e uma pasta do software de contabilidade:

#!/bin/bash
cd /srv/
PASTA="`pwd`/bk-ger`date +%d-%m-%Y.%H;%M;%S`hs"
mkdir $PASTA
echo "INICIANDO BACKUP EM `date +%d-%m-%Y.%H:%M:%S`hs" >> $PASTA/bkp-geral-`date +%d-%m-%Y`.log

# Faz o backup das pastas que estão em /srv:
cd PUBLIC/
7z a /srv/bk-public.7z
cd ../
mv bk-public.7z $PASTA/

cd PASTA_SISTEMA/
7z a /srv/bk-pasta-sistema.7z
cd ../
mv bk-pasta-sistema.7z $PASTA/

cd LIXEIRAS/
7z a /srv/bk-lixeiras.7z
cd ../
mv bk-lixeiras.7z $PASTA/


# Limpa a pasta de backup mais antiga!:
rm -r `ls /srv/backup/ |grep bk-ger | head -n 1`

echo "BACKUP CONCLUIDO EM `date +%d-%m-%Y.%H:%M:%S`hs" >> $PASTA/bkp-geral-`date +%d-%m-%Y`.log
echo "## PARA RECUPERAR USE: 7ZIP OU BZIP2 ##" >> $PASTA/bkp-geral-`date +%d-%m-%Y`.log
mv $PASTA/ /srv/backup/


Note que, sempre que ele executar, vai apagar o backup mais antigo na pasta "/srv/backup".

Então, se você deseja manter, por exemplo, os 10 últimos backups nesta pasta, comente a linha que tem o comando rm combinado com o head por 10 dias, depois descomente-a.

Agora, edite a tabela do Cron e inclua o horário de sua preferência para o backup rodar.

Digite o comando:

# crontab -e

E inclua uma linha que aponta seu script:

0 14 * * * /root/backup.sh


No caso acima, todos os dias às 2 horas da tarde, o script será executado, gerando o backup.

Espero que ajude alguém.

Abraços a todos.

Outras dicas deste autor

Ubuntu 11.10 - Como usar o Notepad++ via Wine

Extendendo a classe ArrayList para criar listas sem repetição

Cálculo do desvio padrão no LibreOffice

Ubuntu 12.04 com Gnome 3 - Tunando a Aparência com Temas e Ferramentas

Debian/Ubuntu - Conectando banco MySQL via rede com Java

Leitura recomendada

Título: Reiniciar conexão automaticamente no roteador D-Link 524

Famelix - Linux com cara de Windows XP

Configurando dois monitores em uma única placa de vídeo no Ubuntu 9.10

Acessando uma partição NTFS (leitura) como usuário comum no Debian Linux

VPN ponto a ponto com chaves estáticas

  

Comentários
[1] Comentário enviado por ricardoleme em 09/11/2016 - 08:56h

Muito legal a dica!

Surgiu uma dúvida:

Se eu quisesse efetuar o backup apenas dos arquivos alterados nas últimas 24 horas, como eu faria?

Eu sei que com o find eu consigo especificar o -mtime, mas não sei "passar" esse resultado para o 7zip :^)

Acredito que find public -type f -mtime -1

Obrigado!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts