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.