再会!
我在智利工作。问题是这里的连接速度非常慢,并且像让每个站将其软件包直接更新到互联网这样的任务是不可能的。所以我有一个本地存储库,我只想在晚上通过 rsync 进行更新。
我对 rsync 没有任何问题,我知道如何使用它。我对 cronjobs 和类似的东西还比较陌生。
长话短说,我需要做的是每晚更新我的存储库。假设它每天从晚上 7:00 开始,到上午 7:00 停止。
我怎样才能做到这一点?
提前致谢。
温暖的问候。
PD:我使用 Ubuntu 16.04。
答案1
有两种使用 cron 的方法,即创建/etc/cron.d/repo-sync
以下格式的文件:
<minute> <hour> <day_of_month> <month> <day_of_week> <user> <command>
例如,要在每天 19:00 从 src 到 dest 运行 rsync,您可以使用:
0 19 * * * root rsync -a src dest
或者,您可以通过运行(作为您要运行命令的用户)使用上面的行减去用户来创建 crontab,crontab -e
例如:
0 19 * * * rsync -a src dest
就我个人而言,我更喜欢为系统/根任务创建 cron.d 文件,但这两种方法都会产生相同的结果。
现在,这将在给定时间运行命令一次 - 一旦命令完成运行,它将停止,因此不需要指定命令在 7:00 停止它,因为 rsync 应该在那时完成。如果您确实必须在 7:00 停止该命令,您可以发出另一个 cron 作业,在给定时间简单地终止现有进程。
0 7 * * * root killall rsync
不幸的是,这将杀死所有 rsync 命令 - 如果尝试同时运行 rsync,这可能会产生副作用,因此我不建议使用此方法。
您可以进一步将 rsync 命令放入将其 pid 写入文件的脚本中,并在 Kill 命令中使用该 pid 来缓解这种情况,但这可能比您真正需要的更复杂。