可能的解决方案

可能的解决方案

rsync版本3.2.4引入了一个行为改变关于 arg 保护的新方法。当您的文件或文件夹的文件名中包含空格时,这是相关的。

我知道这个论点--old-args。但这是一种解决方法,并且仍然强制采用“旧方式”。我的目标是:

  1. 使用3.2.4中引入的“新”arg保护方式
  2. 使用该“方式”的脚本应该适用于新旧版本的 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似乎是默认行为。

边注: 长版本的-swas --protect-argsbut was then--secluded-args在 rsync 3.2.6 中重命名为“为了更清楚地说明它与 rsync 的默认反斜杠转义参数保护行为有何不同”。然而,旧名称--protect-args仍然被接受。

相关内容