次のファイルを含む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
と同等のオプションなど?
たとえば [〜#〜] 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/