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

我想运行一个cron作业备份一些mysql数据库通过pipe道输出到一个文件,然后通过电子邮件发送。

以下工作?

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 

我试过第一个选项,但有一个错误,一个小的修改它工作正常:

 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 

TKS!