我怎样才能tar
(或Linux上常见的任何其他程序,例如pax
)在存档创建过程中动态硬链接重复内容?
也就是说,我想避免预先进行硬链接,而是想tar
处理它。
那可能吗?如何?
答案1
目前使用 GNU tar 还不可能做到这一点,但事情是存在的:
- https://github.com/stfp/tar-dedup:带有实验性 --dedup-filter 命令的修补 GNU tar
- http://zbackup.org/它吃并吐出焦油格式的流并进行重复数据删除
请注意,硬链接和重复数据删除不具有相同的语义,需要另一种 tar 节点类型来表示“重复数据”,以便存档提取过程能够正确地重新创建重复(从而独立存在)文件;这将创建与大多数标准工具(GNU tar、pax 等)不兼容的 tar 存档,这将是一个大胆的举动。
让我坚持一下:如果你能够用硬链接文件同化欺骗,那么你在归档提取时就会遇到问题:*它们真的是像 Git 存储库那样的硬链接文件吗?那么它们应该真正重新创建为硬链接文件,否则恢复的 Git 存储库将无法工作? * 或者它们是否确实是相同的文件,如果它们被恢复为硬链接,则恢复的存档可能会出现重大数据泄漏(想象一下您在归档时同化了相同的 /etc/passwd 文件,将它们恢复为具有多个硬链接的单个文件:一个一个虚拟机中的修改在另一个虚拟机中可见!)