![如何根据目录的差异自动创建 tarball?](https://linux22.com/image/1592336/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E7%9B%AE%E5%BD%95%E7%9A%84%E5%B7%AE%E5%BC%82%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BA%20tarball%EF%BC%9F.png)
我遇到过这样的情况:我有 2 个大型目录树,一个old
和一个new
。大多数文件是相同的,但有些文件在旧版本中不同和/或缺失。我想找到一种方法来自动创建一个 tar 文件,其中包含:
a) 中所有new
不在 中的文件 b)和old
之间不同的所有文件new
old
仅存在于的文件old
应被忽略。需要维护符号链接。需要通过完整的二进制比较来确定“不同”。
正如您可能猜到的那样,我正在尝试创建一个补丁以使一棵树与另一棵树匹配。也许已经有一个工具可以做到这一点,或者我需要将一些命令串在一起。
我正在使用 Ubuntu Linux。
答案1
我发现了一些想法这个帖子如何获取不同文件的列表。我采用了 rsync 方法,选项如下--dry-run
:
rsync -rv --dry-run --size-only --links old/ new/
获得文件列表后,我使用这些文件调用 tar。这并没有完全解决仅在一个地方与另一个地方区分文件的问题,但通过一些手动干预,我让它工作了。我希望我能得到一个完全自动化的解决方案,但我能够通过这些一般步骤解决我眼前的问题。