2011-03-04 43 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!