web-dev-qa-db-ja.com

ハードリンクをサポートしていないファイルシステムでハードリンクを使用して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-dereferenceを使用して GNU tarマニュアル が提案するように)を再度パックします。最後に、その新しいtarballをAFSに解凍します。

これは私には不十分なので、アーカイブのコンテンツを最終的な宛先に直接解凍する簡単な方法があるかどうかを尋ねています。アーカイブする代わりに解凍するための--hard-dereferenceと同等のオプションなど?

5
Denis

たとえば [〜#〜] 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/