我有一个 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-dereference
为GNU 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/