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