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

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

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

我想将 的所有内容递归复制subfolder1到 中subfolder2。从c:\topDir,我运行以下命令,

rsync -ra --info=progress2 subFolder1 subFolder2

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

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

答案1

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

rsync -ra --info=progress2 subFolder1/ subFolder2

正如解释的那样Rsync 手册页下的“使用”示例

rsync -avz foo:src/bar /data/tmp

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

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

rsync -avz foo:src/bar/ /data/tmp

源上的尾随斜杠会改变此行为,将src/bar机器 foo 上的目录中的所有文件传输到/data/tmp/.

源名称末尾带有斜杠/的意思是“复制此目录的内容”。如果没有斜杠,则表示“复制目录”。

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

另外,请务必使用该选项测试 Rsync 的内容--dry-run。这将仅输出 Rsync 的操作,而不会影响文件。这样,您就可以在提交之前准确地看到将会发生什么。在您的案例中像这样使用它,并在实际执行 Rsync 时将其删除:

rsync -ra --info=progress2 --dry-run subFolder1/ subFolder2

相关内容