使用 rsync 观看失败,权限被拒绝,而 rsync 单独工作正常

watch with rsync fails with permission denied, while rsync alone just works fine

我正在尝试将我的文件同步到云端:

rsync -avPze "ssh -i /path/to/my/key" [source] [destination]

这对我来说很成功。

但是,当我尝试对 watch 使用相同的命令以便每隔几分钟自动同步时,它不起作用并抛出错误:

watch -n120 rsync -avPze "ssh -i /path/to/my/key" [source] [destination]

错误:

Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

知道发生了什么吗?

将整个 rsync 命令括在引号内,就可以了。

watch -n120 "rsync -avPze 'ssh -i /path/to/my/key' [source] [destination]" 

观察到 strace 输出:

execve("/usr/bin/watch", ["watch", "-n120", "rsync", "-avPze", "ssh -i '/path/to/my/key'", "source"..., "destination"...], [/* 21 vars */]) = 0

虽然 rsync 已正确启动 sourcedestination 作为远端参数,路径是密钥的完整路径。 permission denied 错误具有误导性。