今天我发现我的 /var/mail/root 里有 25GB 的空间,里面全是来自 rsync 的电子邮件。显然,每次我运行 rsync 时,它都会向我(root@server)发送一封包含文件列表的电子邮件,这种情况每隔几分钟就会发生一次。
这是 Debian 服务器,我找不到 rsync 的任何配置文件。所以我的问题是:
1- Debian 上的 rsync 配置文件在哪里? 2- 如何禁用那些 rsync 电子邮件通知?
谢谢!
答案1
rsync 不会发送电子邮件,因此 rsync 周围的其他程序正在执行此操作。我假设这是一个调用 rsync 的 cronjob。运行 rsync 的 cronjob 在 stdout 上生成输出。默认情况下,cron 会将该输出邮寄给 root。
因此,首先,找到正在运行 rsync 的 cronjob。查看的地方:
/etc/crontab
/etc/cron.*/
run crontab -l as root
/var/spool/cron/*
找到调用 rsync 的 cronjob 后,尝试在命令行上手动运行它。您应该会发现它显示的输出与您收到的电子邮件相匹配。
接下来,您需要重定向或抑制该输出。在 cronjob 中,您可以执行以下操作:
* * * * * /usr/bin/rsync blah &>/dev/null
抑制所有输出。或者,更改您使用的 rsync 标志以消除输出,或将其重定向到日志文件(但不要忘记设置轮换!)。
另一个故障排除想法:在此问题中包含其中一封电子邮件的标题,以便我们检查它们以寻找线索。
答案2
如果您在 cron 之外运行 rsync,那么 rsync 不会向您发送电子邮件,而 cron 会。Cron 会将 cronjobs 的输出通过电子邮件发送给(默认情况下)根用户。您可以:
- 运行 rsync 时不使用详细标志,在这种情况下它将不再生成文件列表。
- 重定向 cron 作业的 stdout/stderr(使用 '>' i/o 重定向)
答案3
您需要在 cron 中的脚本中添加重定向来停止发送电子邮件。检查您的 crontab(或运行脚本的系统 crontab)并添加重定向,例如your_rsync_script.sh > /dev/null 2>&1
。
您还可以从 rsync 命令中删除“v”(详细程度)标志,以平息 cron 作业的输出。
答案4
对我来说,解决方案是将-q
(quiet) 开关添加到我的 rsync 命令中。由于我是在我的用户下运行 rsync,所以这很方便,因为如果 rsync 由于某种原因失败,我仍然会收到电子邮件。