Linux cron作业从命令发送电子邮件输出

时间:2011-03-04 05:55:15

标签: linux email cron output-redirect

我想运行一个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

2 个答案:

答案 0 :(得分:4)

您的脚本存在一些问题,我在下面对其进行了更改,请仔细注意空格的更改,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

答案 1 :(得分:0)

我尝试了第一个选项,但遇到了错误,只需稍加修改就可以了:

15 2 * * * root mysqldump -e --user=root --password=PASSWORD --all-databases | gzip | uuencode `date +'%Y%m%d'`-database.sql.gz | mail -s "`date +'%Y%m%d'`-web1_iepe-wp.sql.gz mysqldump backup" user@domain.com

韩国社交协会!