如何根据目录的差异自动创建 tarball?

如何根据目录的差异自动创建 tarball?

我遇到过这样的情况:我有 2 个大型目录树,一个old和一个new。大多数文件是相同的,但有些文件在旧版本中不同和/或缺失。我想找到一种方法来自动创建一个 tar 文件,其中包含:
a) 中所有new不在 中的文件 b)和old
之间不同的所有文件newold

仅存在于的文件old应被忽略。需要维护符号链接。需要通过完整的二进制比较来确定“不同”。
正如您可能猜到的那样,我正在尝试创建一个补丁以使一棵树与另一棵树匹配。也许已经有一个工具可以做到这一点,或者我需要将一些命令串在一起。
我正在使用 Ubuntu Linux。

答案1

我发现了一些想法这个帖子如何获取不同文件的列表。我采用了 rsync 方法,选项如下--dry-run

rsync -rv --dry-run --size-only --links old/ new/

获得文件列表后,我使用这些文件调用 tar。这并没有完全解决仅在一个地方与另一个地方区分文件的问题,但通过一些手动干预,我让它工作了。我希望我能得到一个完全自动化的解决方案,但我能够通过这些一般步骤解决我眼前的问题。

相关内容