Cron 作业和邮件通知

Cron 作业和邮件通知

我有(来自一个教程)的 cron 作业,它在我的网站上每周进行备份并且工作正常。

#!/bin/bash
NOW=$(date +"%Y-%m-%d-%H%M")
FILE="mysite.com.$NOW.tar"
BACKUP_DIR="/home/user/backups/"
WWW_DIR="/home/user/public_html/"

DB_USER="my_site_db_username"
DB_PASS="password"
DB_NAME="mysite_dn_name"
DB_FILE="mysite.com.$NOW.sql"

WWW_TRANSFORM='s,^home/username/public_html,www,'
DB_TRANSFORM='s,^home/username/backups,database,'

tar -cvf $BACKUP_DIR/$FILE --transform $WWW_TRANSFORM $WWW_DIR
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_FILE

tar --append --file=$BACKUP_DIR/$FILE --transform $DB_TRANSFORM $BACKUP_DIR/$DB_FILE
rm $BACKUP_DIR/$DB_FILE
gzip -9 $BACKUP_DIR/$FILE

问题是,有人可以帮助我如何在备份完成后向我发送电子邮件吗?

我第一次使用 bash,我不确定我在做什么。

答案1

编辑您的 crontab 文件并添加:

MAILTO=your.email@your_provider.com

并在脚本末尾添加:

echo 'backup finished', $FILE

cron通常会发送每封电子邮件运行的命令的任何输出。您的脚本似乎正在静默运行,因此没有电子邮件。

如果您不添加 MAILTO,邮件将发送给运行 crontab 的用户,恕我直言,最好明确说明。

答案2

您可以在 bash 脚本末尾添加以下行:

echo -e "正在发送备份报告:\n $DB_NAME 和 $FILE 的备份已完成" | mutt -s “$NOW 的备份报告”

相关内容