为什么 rsync 创建一个新的子目录?

KAE*_*KAE 4 rsync

我在 Cygwin 上使用 rsync,如果这很重要的话,在一个目录下c:\topDir,我有两个文件夹subFolder1subFolder2。每个文件夹都有大约 300GB 的文件,有些相同,有些不同,有些子目录存在于一个文件夹中,而另一个文件夹中不存在。遗憾的是,在复制之前无法删除subFolder2

我想递归地将所有内容复制subfolder1subfolder2. 从c:\topDir,我运行了以下命令,

rsync -ra --info=progress2 subFolder1 subFolder2
Run Code Online (Sandbox Code Playgroud)

但在将所有内容复制到其中之前,它在 subfolder2 下创建了一个新的子目录, c:\topDir\subfolder2\subfolder1

我需要做什么才能将内容复制到而不将其放入新的子目录中subFolder1subFolder2

Gia*_*968 5

在源目录中添加尾部斜杠,如下所示:

\n\n
rsync -ra --info=progress2 subFolder1/ subFolder2\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如\xe2\x80\x9cUsage\xe2\x80\x9d 示例下的 Rsync 手册页中所述:

\n\n
\n
rsync -avz foo:src/bar /data/tmp\n
Run Code Online (Sandbox Code Playgroud)\n\n

src/bar这会将所有文件从计算机上的目录递归传输foo/data/tmp/bar本地计算机上的目录中。\n 文件以“存档”模式传输,这确保在传输中保留符号链接、设备、属性、权限、所有权等。

\n\n

此外,压缩将用于减少传输数据部分的大小。

\n\n
rsync -avz foo:src/bar/ /data/tmp\n
Run Code Online (Sandbox Code Playgroud)\n\n

源上的尾部斜杠会更改此行为,将所有文件从src/bar计算机 foo 上的目录传输到/data/tmp/.

\n\n

源名称尾随/表示“复制此目录的内容”。如果没有尾部斜杠,则表示“复制目录”。

\n\n

使用该--delete选项时,这种差异变得尤为重要。

\n
\n\n

另外,请务必使用该--dry-run选项来测试 Rsync 之类的东西。这将简单地输出 Rsync 将执行的操作而不影响文件。这样你就可以在做出承诺之前准确地看到会发生什么。在您的情况下像这样使用它,然后在执行实际的 Rsync 时将其删除:

\n\n
rsync -ra --info=progress2 --dry-run subFolder1/ subFolder2\n
Run Code Online (Sandbox Code Playgroud)\n