我有(来自一个教程)的 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 的备份报告”