当目录名称有空格时如何通过 ssh 进行 rsync

当目录名称有空格时如何通过 ssh 进行 rsync

我正在尝试从一台服务器同步到另一台服务器。这些服务器具有相同的目录结构,但当远程服务器中有空格时,我无法正确识别远程服务器上的路径名。

这是详细信息

本地目录是

mnt/xlses/split/v2/name with space

远程目录是

mnt/xlses/split/v2/name with space

我已经尝试了一切我能找到的最新尝试是

rsync --size-only -avzPe ssh  /mnt/xlses/split/v2/name\ with\ space/ [email protected]:/mnt/xlses/split/v2/"name with space"

当它运行时,它报告的第一件事是它正在创建一个新目录

我打断它,看到有一个新目录

mnt/xlses/split/v2/name

我的所有文件都在该目录中

我原以为他们会在

mnt/xlses/split/v2/name with space

答案1

尝试

rsync -s --size-only -avzPe ssh  "/mnt/xlses/split/v2/name with space/" "[email protected]:/mnt/xlses/split/v2/name with space"

来自man rsync(2023 年更新):

--secluded-args,-s

此选项通过协议(而不是远程 shell 命令行)将所有文件名和大多数选项发送到远程 rsync,从而避免让远程 shell 修改它们。通配符在远程主机上通过 rsync 而不是 shell 进行扩展。

[...]

该选项曾经被调用--protect-args(3.2.6 之前),并且仍然可以使用旧名称(尽管将其指定为-s始终是最简单且最兼容的选择)。

答案2

这在 bash 中有效:用反斜杠转义空格,然后使用引号:

rsync -avuz [email protected]:"/media/Music/Heavy\ Metal/Witch\ Mountain/*" .

或者,如果变量 $remote_path 中有路径,则可以通过替换来转义空格:

rsync -avuz [email protected]:"${remote_path// /\\ }" .

答案3

使用两对引号

  1. 不要理会所有的反斜杠,只需使用双引号内有单引号

    ssh [email protected]:"'/home/me/test file'" .
    
  2. (推荐)也可以反过来使用,即单引号里面有双引号

    ssh [email protected]:'"/home/me/test file"' .
    

第二个更好,因为您可以在服务器上使用通配符(因为单引号不会在客户端上扩展)。我在尝试 rsync 具有相同前缀的多个文件时执行此操作。


更多信息

服务器端的通配符

如果您希望 a*在服务器而不是客户端上被解释,则*必须仅出现在 2 对引号中的一对内。我发现这违反直觉,因为从逻辑上讲,外部一对引号逃脱了客户端解释,而内部一对引号逃脱了服务器解释。

保护参数

相比之下,优点是--protect-args解决方案,就是你实际上没有这个限制--protect-args,所以您可以使用特殊字符,例如~$。所以你可以写:

rsync host:'"$HOME/test file"' .

或者

rsync host:'~"/test file"' .

请注意,后一个示例中的波形符 ( ~) 需要是外部双引号。

您可以在整个 username@host:file 部分周围放置一对引号(例如)ssh "[email protected]:'/home/me/test file'" .

答案4

我知道这是一个老问题,但我想我应该补充现有的知识体系。

我已经使用了rsync多个带有空间的文件夹,这很有效。我有编号为 1-10 的文件夹,如下所示:

  • The\ Folder1
  • The\ Folder2
  • The\ Folder3
  • ..
  • The\ Folder10

您想要使用的 2 个实例rsync是本地实例和远程实例。

  1. 当地的- 请注意缺少引号。

    rsync -avu /media/data/The\ Folder* .
    
  2. 偏僻的- 注意引号的存在

    rsync -avu -e ssh [email protected]:"/media/data/The\ Folder*" .
    

相关内容