我想运行一个 cron 作业来备份一些 mysql 数据库,方法是将输出传输到一个文件,然后通过电子邮件发送。
以下是否有效?
15 2 * * * root mysqldump -u root -pPASSWORD --all-databases | \
gzip > /database_`data'+%m-%d-%Y'`.sql.gz | \
mail -s "Report 05/06/07" user@example.com < /database_`data'+%m-%d-%Y'`.sql.gz
最佳答案
您的脚本有几个问题,我已在下面对其进行了更改,请仔细注意空格的更改、date
的拼写以及将 |
替换为 ;
.
然而,最有趣的问题是 mail
不幸的是不能发送附件。您可以使用 uuencode 将文件嵌入邮件中:
15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; uuencode /database_`date +'%m-%d-%Y'`.sql.gz /dev/stdout | mail -s "Report 05/06/07" user@domain.com
或者如果你想使用正确的 MIME 附件(你需要安装 MetaMail):
15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; metasend -b -t user@domain.com -s "Report 05/06/07" -m application/gzip -f /database_`date +'%m-%d-%Y'`.sql.gz
或者像上面那样安装 mpack,而不是 MetaMail:
15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; mpack -s "Report 05/06/07" -c application/gzip /database_`date +'%m-%d-%Y'`.sql.gz user@domain.com
关于Linux cron 作业将命令的输出通过电子邮件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190215/