如何使用 rsync 合并多个文件夹

如何使用 rsync 合并多个文件夹

我想使用 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 中,并且应该通过第二次运行上述所有命令将其更新为当前输出。

相关内容