如何限制 Cron 作业的电子邮件输出

如何限制 Cron 作业的电子邮件输出

我已经从 cpanel 设置了一个 cron 作业,每天向我发送电子邮件,这样我就知道站点文件已备份。但是,它会通过电子邮件发送整个文件路径和整个作业。我收到的电子邮件输出的片段;


tar:从成员名称/home/user/public_html/
/home/user/public_html/test/
/home/user/public_html/test/index.html中删除前导“/”

我真的只是希望它在完成后通过电子邮件发送一条简单的消息,如下所示; 文件已于 02:00 成功备份

当前的计划任务: tar -cvpzf /home/user/backups/backup_files.tar.gz /home/user/public_html

注意:这个 cron 作业工作得很好并且可以进行备份。我只是不想将包含所有文件路径的整个工作通过电子邮件发送给我(但确实想要一个基本通知)。

对于我的其他网站,我使用 PHP 备份脚本,但这在这个网站上不起作用,因为我认为 PHP 无法处理备份文件太大。最终的 tar.gz 文件不到 4GB。

任何指导表示赞赏。

答案1

您可以删除-v(详细)选项,而是使用tar命令的退出状态来确定要发送的消息。

前任。最简单地说,

tar -cpzf /home/user/backups/backup_files.tar.gz /home/user/public_html && echo "Files successfully backed up at $(date)"

或(稍微细致一点)

tar -cpzf /home/user/backups/backup_files.tar.gz /home/user/public_html; case $? in 0) echo "Files successfully backed up at $(date)" ;; *) echo "Backup failed" ;; esac

请参阅 参考资料 了解man tar各种非零退出状态值的含义。

答案2

我建议通过管道传输生成通知的过程

tail -n 

解析出最后一个n行,然后将其发送到您的电子邮件。

相关内容