Tar

在不支持硬連結的文件系統上使用硬連結解壓縮 tarball

  • March 1, 2016

我有一個t.tar.gz包含以下文件的 tarball(比如說)

./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解包而不是歸檔的等效選項?

將存檔掛載為目錄,例如使用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/

引用自:https://unix.stackexchange.com/questions/265024