使用 crontab 通过电子邮件发送备份

使用 crontab 通过电子邮件发送备份

我使用这项工作在每天凌晨 01:00cron进行备份:/home/blah/

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

事实上我更喜欢这样我会收到一封电子邮件,其中包含 .tgz 文件作为附件。 (是的,文件大小始终小于 5 MB,因为我的文件夹非常小)

我可以做类似的事情吗:

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

(这是伪代码在最后)在 cron 任务中?我应该使用什么 cron 语法?

答案1

当我在我的机器上进行测试时,以下命令对我有用。

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

因此,遵循的方法可能是这样的,

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]

我将上面的脚本保存为backup_email.sh并将 cron 作业安排为,

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

参考

https://stackoverflow.com/a/9524359/1742825

答案2

我会先安装 ZIP,然后安排备份。

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

然后 crontab 就可以了

您还可以在 bashrc 文件中为其添加别名,这样您就可以随时执行整个命令。

在 bashrc 文件的最底部添加:

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 '

所以你的 crontab 会像

0 0 * * * backup

您可以随时使用自己的backup命令运行此备份。

相关内容