![RSync shell 脚本无法作为 CRON 运行,手动运行良好](https://linux22.com/image/563423/RSync%20shell%20%E8%84%9A%E6%9C%AC%E6%97%A0%E6%B3%95%E4%BD%9C%E4%B8%BA%20CRON%20%E8%BF%90%E8%A1%8C%EF%BC%8C%E6%89%8B%E5%8A%A8%E8%BF%90%E8%A1%8C%E8%89%AF%E5%A5%BD.png)
我有一个简单的 shell 脚本来运行 Rsync。如果我从命令行手动调用它,它会运行良好,但是当我将其设置为 CRON 作业时,我收到以下错误:
rsync: failed to open exclude file exclude.txt: No such file or directory (2)
rsync error: error in file IO (code 11) at exclude.c(1000) [client=2.6.8]
我在 shell 脚本中使用了以下内容:
--exclude-from 'exclude.txt'
该文件存在,并且手动运行时脚本运行良好(遵守排除规则)。CRON 作业调用的 shell 脚本和 exclude.txt 位于同一目录中。
我尝试运行的整个脚本如下所示:
rsync -avrhgo --exclude-from 'exclude.txt' --progress --stats --delete-excluded -e "ssh -p XXXXX" / XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
答案1
您需要指定排除文件的完整路径,因为脚本的工作目录不会自动成为您启动脚本的目录,而是 cron 作业所有者的主目录。
或者,您可以cd
从 shell 脚本内部进入正确的目录。