![可能的解决方案](https://linux22.com/image/209999/%E5%8F%AF%E8%83%BD%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.png)
rsync版本3.2.4引入了一个行为改变关于 arg 保护的新方法。当您的文件或文件夹的文件名中包含空格时,这是相关的。
我知道这个论点--old-args
。但这是一种解决方法,并且仍然强制采用“旧方式”。我的目标是:
- 使用3.2.4中引入的“新”arg保护方式
- 使用该“方式”的脚本应该适用于新旧版本的 rsync没有检查当前系统上的 rsync 版本。
我不知道该怎么做,但我有一个想法。
过去我这样做过(这适用于 3.2.3 及更早版本之前的 rsync;但不适用于 3.2.4 或更高版本)
rsync -aiv host:"a simple file.pdf" .
可能的解决方案
我想要的解决方案是使用-s
旧 rsync 版本中也存在的解决方案:
--protect-args, -s no space-splitting; wildcard chars only
我用这样的"
方式替换'
rsync -aiv host:'a simple file.pdf' . -s
这似乎在我的测试环境中有效。但我不确定这是否可以。
恕我直言,该解决方案的优点是
- 它适用于旧版本的 rsync
- 对于较新的版本(3.2.6),这
-s
似乎是默认行为。
边注: 长版本的-s
was --protect-args
but was then--secluded-args
在 rsync 3.2.6 中重命名为“为了更清楚地说明它与 rsync 的默认反斜杠转义参数保护行为有何不同”。然而,旧名称--protect-args
仍然被接受。