我在 Cygwin 上使用 rsync,如果这很重要的话,在目录 下c:\topDir
,我有两个文件夹subFolder1
和subFolder2
。每个文件夹都有大约 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