我有一个t.tar.gz
包含以下文件的 tarball(假设)
./a/a.txt
./b/b.txt
Run Code Online (Sandbox Code Playgroud)
到哪里./b/b.txt
的硬链接./a/a.txt
。
我想在仅支持同一目录中的硬链接的网络文件系统 (AFS) 上解压缩 tarball(请参阅此处)。因此,仅通过tar -xzf t.tar.gz
将其解压缩会引发./b/b.txt
无法创建硬链接的错误。
到目前为止,我对问题的解决方案是./t.tar.gz
在支持普通硬链接的文件系统上解包。然后用选项重新包装一下--hard-dereference
作为GNU的焦油手册建议。最后,将新的 tarball 解压到 AFS 中。
由于这对我来说并不令人满意,我在问是否有更简单的方法可以将存档的内容直接解压缩到最终目的地?例如--hard-dereference
用于解包而不是存档的等效选项?
将存档安装为目录,例如使用AVFS,然后使用您最喜欢的文件复制工具。
mountavfs
cp -a --no-preserve=links ~/.avfs/path/to/t.tar.gz\# target-directory/
Run Code Online (Sandbox Code Playgroud)
或者
mountavfs
rsync -a ~/.avfs/path/to/t.tar.gz\#/ target-directory/
Run Code Online (Sandbox Code Playgroud)