retry
与 配对时出现命令问题rsync
。 retry
是一个Debian 软件包并指出它可以“重复命令,直到满足标准,通常是成功。”。尝试rsync
在有时会失败的连接上使用它。但是它总是给出相同的错误giving up: No such file or directory
::
retry '/usr/bin/rsync -av source destination'
retry: Could not execute 'rsync -av source destination', giving up: No such file or directory
source
和两者都destination
存在。我尝试过使用绝对路径、单引号和双引号、路径周围的引号以及路径作为变量,但都不起作用。我可以使用以下方法这个解决方案但是做多个目录的时候就比较麻烦了。我有什么遗漏的吗?
答案1
问题是retry
尝试执行一个名为'/usr/bin/rsync -av source destination'
(包括中间的空格)的文件。
为了知道retry
这rsync
是命令,并且-av
、source
、 和destination
是属于该命令的参数rsync
,您需要按以下方式运行它:
retry -- /usr/bin/rsync -av source destination
您需要的原因--
(双破折号)表示命令选项的结束和位置参数的开始。如果--
命令前面没有 ,retry
则会认为这-av
是命令选项之一,并会抛出以下错误:
retry: invalid option -- 'a'
答案2
我在这里可以看到两个或三个问题。 (感谢您提供的链接retry
;我以前没有遇到过它。)
目标命令被“像往常一样”解析,命令与其每个参数之间有空格。引用整个命令意味着
retry
将尝试将其作为不带任何参数的命令执行:retry 'rsync -av src dst' retry: Could not execute 'rsync -av src dst', giving up: No such file or directory
这里的修复是避免引用整个命令及其参数。
删除引号仍然会产生错误,但这一次是因为
retry
尝试处理-av
用于 `rsync: 的参数:retry rsync -av src dst retry: invalid option -- 'a' …
--
这里的修复方法是在特定的部分之后使用双破折号 ( )retry
,以便它停止尝试处理更多参数:retry -- rsync -av src dst
运行此命令成功完成将导致您最终得到
src
以下结果dst
:ls dst src
如果您想要then
dst
的内容src
,请在 上添加尾部斜杠src/
:retry -- rsync -av src/ dst