copy_only_missing? - 仅从 /A 复制到 /C 上缺少 /B 和 /C 的路径 - 简洁的方式

copy_only_missing? - 仅从 /A 复制到 /C 上缺少 /B 和 /C 的路径 - 简洁的方式

我想复制自/A/C仅缺少路径/B/C。 (请假设这些是路径,并且也可以代表远程位置,例如通过安装sshfs

我想知道...有没有比编写循环、迭代文件系统并逐个文件进行检查更简洁的方法?

树目录的示例内容/A,/B,/C:

/A:

/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty

/B:

/A/2abc/asd
/A/3abc/zxc

/C:

/C/1abc/qwe

预期:复制自/A/C唯一路径4abc/rty

/A/4abc/rty -> /C/4abc/rty

以实际例子来说明/A,/B,/C,导致这样的场景:

  • 你做备份,从一些/来源/A)对一些/目的地/B)并且有些路径复制失败。所以无论如何你都想拥有丢失的副本。所以你发现/另一个目的地/C)可以接受它们,并且您只想复制缺失的。以下是为什么复制的示例限制/A/B可能会失败:光盘已满;文件系统的限制/B(如文件名长度),虽然不存在/C文件系统; ETC。

答案1

一种解决方案是制作一个联合安装B 和 C,其中 C 作为写分支。然后问题就减少到仅将 B+C 上丢失的文件从 A 复制到 B+C,这可以通过

rsync -a --ignore-existing /A /B+C

对于联合安装,一种可能性是UnionFS熔断器

unionfs-fuse -o cow /C=RW:/B=RO /B+C

或者unionfs:

mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 

相关内容