我们如何找到 rsync 的调度位置?我有一个从服务器 A 到服务器 B 的 rsync,我需要在服务器 A 中查找 rsync 的调用位置以及它的调度位置和方式。是否有一个文件,其中的配置设置与 cronjobs 类似?我在服务器 B 中遇到了一些性能问题,我需要重新安排 rsync,以便它只在高峰时段之外发生。
答案1
遗憾的是,rsync 不会在每次使用时自动记录到某处。需要进行一些侦查工作。
一个不错的选择是 rsync 正在从某个地方的“cron”运行。(cron 是一个定期运行命令行或脚本的系统。例如,我有一个每小时更新数据库的 cron 作业,以及一个运行备份脚本的每日 cron 作业。)
Cron(实际上crond
)会记录它运行的所有命令(“作业”)/var/log/cron
。(某些 Unix/Linux 系统会将其放在不同的地方。请查看手册页。)您可以使用cat
该文件进行检查(它是一个文本文件。)
Cron 的配置存储在 /etc 或 /var/spool/cron 中,或者两者皆有,具体取决于您的 Unix/Linux 系统。手册页会有所帮助,也可以执行类似以下操作
find /etc /var -name '*cron*'
您可以通过执行以下操作在这些文件中查找 rsync:
grep rsync -R /etc /var/spool/cron
但是 cron 作业可能会调用一个调用 rsync 的脚本。该脚本名称可能不包含字母“rsync”。它可能被称为“backup”或“update”,或者可能以数据被推送到或从中拉取的系统命名。
如果您的系统使用“systemd”,则有可能它正在从那里运行。通过/etc
递归 greping 检查这些配置。
如果这些都不起作用,你可以做两种“绝望模式”的事情。
- 删除
rsync
命令以强制备份失败。错误消息可能会出现在电子邮件中(当出现问题时,cron 会向作业所有者发送电子邮件)或系统日志中。您可以这样做:
mv /usr/bin/rsync /usr/bin/rsync.NOT
# wait a while, see what happens.
# Revert the change
mv /usr/bin/rsync.NOT /usr/bin/rsync
- 用一个包装脚本替换 rsync,该脚本记录它正在做的事情然后调用真正的 rsync。
创建一个名为的文件/usr/bin/rsync.wrapper
,其中包含:
#!/bin/sh
echo "$@" >>/var/tmp/my.rsync.log
pwd >>/var/tmp/my.rsync.log
exec /usr/bin/rsync.REAL "$@"
现在安装包装器:
touch /var/tmp/my.rsync.log
chmod a+w /var/tmp/my.rsync.log
chmod a+rx /usr/bin/rsync.wrapper
mv /usr/bin/rsync /usr/bin/rsync.REAL
ln -s /usr/bin/rsync.wrapper /usr/bin/rsync
完成后,使用以下方法恢复更改
rm /usr/bin/rsync
mv /usr/bin/rsync.REAL /usr/bin/rsync
仅供参考:我不推荐最后这 2 个想法(删除 rsync,使用包装器)。它们很危险,可能会弄乱您的系统。但是,如果其他方法都失败了,包装器解决方案应该可以解决问题!