我想在每分钟自动运行rsync(在远程linux系统中)。因此无论变化(在test.txt中,如下所述)都在一个系统中完成,它应该在同一分钟间隔的另一个系统中受到影响。
为此,我改变了sudo crontab -e
,并补充道
*/1 * * * * /home/john/rsync.sh
rsync.sh
包含两个命令:
sudo rsync -av /home/john1/test.txt remote@remote_ip:
sudo rsync -av --update /home/john1/test.txt remote@remote_ip:
当我手动运行rsync.sh
时,所有更改都会成功影响。
如果您在root crontab中添加了此项,则无需使用sudo
启动rsync命令。
在crontab中运行的东西可能没有相同的环境变量。如果您不确定,可以添加rsync的绝对路径,例如/usr/bin/rsync
。还要检查其他环境变量,例如运行set
。
当您手动运行它时,您已经在一个可能能够运行它的特定shell中。但是当cron运行它时,它不知道使用哪个解释器。始终使用#!/usr/bin/bash
(或任何您最喜欢的shell)启动脚本。和/或调用您的cron作业指定要使用的shell,例如:
*/1 * * * * /bin/bash /home/john/rsync.sh
我希望这有帮助。 ;)