我想使用 rsync 将这多个文件夹合并为一个文件夹。每个文件夹包含唯一的文件名,因此文件名不会发生冲突。
我的文件夹目前结构如下:
Project
-Folder 1
-File 1
-Folder 2
-File 2
-Folder 3
-File 3
Project 1
-Folder 1
-File 4
-Folder 2
-File 5
Project 2
-Folder 3
-File 6
Project 3
-Folder 4
-File 7
-Folder 5
-File 8
我想要实现以下目标:
Project
Folder 1
-File 1
-File 4
Folder 2
-File 2
-File 5
Folder 3
-File 3
-File 6
Folder 4
-File 7
Folder 5
-File 8
答案1
我还没有测试过,但你可以尝试 --max-delete=0 作为实验选项。这显然存在挑战(例如,如果你的源目录删除了一个文件,它永远不会在目标上被删除)。
在您的位置,我会认真考虑使用 scp 而不是 rsync(如果您只进行一次传输),或者使用硬链接创建并行目录。
这看起来类似于以下内容(再次实验和测试;我有一段时间没有运行任何这些命令了):
从您的工作/同步目录:
rsync --inplace A/Project ./Project # Perform all of the syncs
rsync --inplace B/Project1 ./Project1
rsync --inplace C/Project2 ./Project2
rsync --inplace D/Project3 ./Project3
mkdir -p /tmp/combination/Project # Create the destination dir if needed.
rm -r /tmp/combination/Project/* # Clean it out of old cruft.
cp -l */* /tmp/combination/Project/ # Create hard links at the correct scope.
然后,您想要的输出应该在 /tmp/combination/Project 中,并且应该通过第二次运行上述所有命令将其更新为当前输出。