Envie backup por email com o crontab

3

Eu uso este trabalho cron para fazer um backup de /home/blah/ a cada dia, às 01:00:

0 1 * * * tar -zcf /home/blah/backup.tgz /home/blah/

Na verdade, eu preferiria que um email fosse enviado para mim com o arquivo .tgz como anexo. (sim, o tamanho do arquivo sempre será < 5 MB porque minha pasta é muito pequeno)

Posso fazer algo como:

0 1 * * * mail -s "Backup blah" "[email protected]" --attachment=(tar -zcf /home/blah/backup.tgz /home/blah/)

(isto é pseudo-código no final) dentro do cron job? Qual a sintaxe do cron que devo usar?

    
por Basj 10.11.2014 / 00:09

2 respostas

4

Este comando a seguir funcionou para mim quando testei na minha máquina.

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]

Então, provavelmente, a abordagem a seguir será algo como

tar -zcf /home/blah/backup.tgz /home/blah/
echo "Please find attached the backup file" | mutt -a "/home/blah/backup.tgz" -s "File attached" -- [email protected]

Vou salvar o script acima como backup_email.sh e agendar o cron job como

0 1 * * * /path/to/backup_email.sh

Referências

link

    
por 10.11.2014 / 02:58
0

Eu instalaria o ZIP primeiro e agendaria um backup.

zip system.zip /etc/* /var/www/* /var/lib/mysqlbackup/default/* && sleep 3 |  mutt -a "system.zip" -s "Daily backup as of $(date +%x)" -- [email protected] && rm -rf system.zip

Em seguida, crie um crontab

Você também pode alias-lo no arquivo bashrc, assim você pode executar o comando inteiro sempre que quiser.

Na parte inferior do arquivo bashrc, anexe:

alias backup='zip system.zip /etc/* /var/www/* /var/lib/mysqlbackup/default/* && sleep 3 |  mutt -a "system.zip" -s "Daily backup as of $(date +%x)" -- [email protected] && rm -rf system.zip '

Então o seu crontab seria como

0 0 * * * backup

E você pode executar esse backup a qualquer momento com seu próprio comando backup .

    
por 21.03.2016 / 20:36