我设置了以下单行cron
命令,在备份完成后,它在电子邮件正文中给出了一条简单的消息(感谢@steeldriver)。
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
问题是整个命令行都输出到我的电子邮件的主题行中。这并不理想,因为它提供了跨电子邮件备份的完整路径。我希望主题只说一些简单的内容,例如“备份用户”
有没有办法在不扰乱现有命令的情况下执行此操作?谢谢。
答案1
您不需要使用默认的cron
邮件子系统;你可以声明你自己的。创建一个包含此内容的单行cron
条目(为了提高可读性,我将其分为三行)。
if tar czf /home/user/backups/backup_files.tar.gz -C / home/user/public_html;
then echo "Files successfully backed up at $(date)";
else echo 'Backup failed'; fi | mail -s 'Backup user' root
一些笔记
- 我已经删除了该
-p
标志,tar
因为当您创建存档时它会被忽略 - 我添加了
-C
标志来更改目录,以便备份源是相对文件(这反过来会停止tar: Removing leading `/' from member names
警告消息) - 我已经提供了
root
获取您用户帐户的本地电子邮件的功能,但如果您的系统设置为处理网络电子邮件,您可以将其替换为任何可到达的地址 - 就我个人而言,我会将其放入脚本中并从 调用该脚本
cron
。这使您的脚本布局更易读,并且您可以根据需要添加必要的复杂性(复杂性!),而不会达到cron
行限制和其他意外。