在不支持硬链接的文件系统上解压带有硬链接的 tarball

在不支持硬链接的文件系统上解压带有硬链接的 tarball

我有一个 tarball(比方说t.tar.gz),其中包含以下文件

./a/a.txt
./b/b.txt 

哪里./b/b.txt有一个硬链接到./a/a.txt.

我想在仅支持同一目录中的硬链接的网络文件系统 (AFS) 上解压 tarball(请参阅这里)。因此,仅通过解压它会引发无法创建tar -xzf t.tar.gz硬链接的错误。./b/b.txt

到目前为止,我对这个问题的解决方案是./t.tar.gz在支持普通硬链接的文件系统上解压。然后再次打包,选项--hard-dereferenceGNU tar 手册建议。最后,将新 tarball 解压到 AFS 中。

由于这对我来说并不满意,我想问是否有一种更简单的方法可以将存档的内容直接解压到最终目的地?例如--hard-dereference解包而不是存档的等效选项?

答案1

将存档挂载为目录,例如AVFS,然后使用您最喜欢的文件复制工具。

mountavfs
cp -a --no-preserve=links ~/.avfs/path/to/t.tar.gz\# target-directory/

或者

mountavfs
rsync -a ~/.avfs/path/to/t.tar.gz\#/ target-directory/

相关内容