2011-03-04 69 views
0

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

请问以下工作?

15 2 * * * root mysqldump -u root -pPASSWORD --all-databases | \ 
    gzip > /database_`data'+%m-%d-%Y'`.sql.gz | \ 
    mail -s "Report 05/06/07" [email protected] < /database_`data'+%m-%d-%Y'`.sql.gz 

回答

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" [email protected] 

或者,如果你想有一个适当的MIME附件一起使用(需要安装MetaMail):

15 2 * * * root mysqldump -uroot -pPASSWORD --all-databases | gzip > /database_`date +'%m-%d-%Y'`.sql.gz ; metasend -b -t [email protected] -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 [email protected] 
+0

我喜欢第二个,但我无法找到一种方法来安装metamail下的metamail ...我发现atm的所有包都是“未找到”或拒绝编译...... :( – renevdkooi 2011-03-04 08:56:28

+1

@renevdkooi我不我已经用一个使用mpack的例子更新了答案 – 2011-03-04 09:05:26

+0

你也可以使用支持MIME附件的'mutt'('-a'选项),并且可以在Centos上使用/ RHEL。 – 2011-03-04 09:58:09

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" [email protected] 

Tks!