大規模なtar.gzアーカイブから単一のフォルダを抽出する方法は?

大規模なtar.gzアーカイブから単一のフォルダを抽出する方法は?

このコマンドを使用しています5GBファイル

tar -zxvf archive.tar.gz /folder/in/archive

これは正しいアプローチですか?コマンドライン出力がないと時間がかかるようです...

ベストアンサー1

tar相対パスを保存基本的に。絶対パスを保存しようとすると、GNU tarは次のように言います。

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names

特定のフォルダを抽出する必要がある場合は、tarファイルの内容を確認してください。

tar -tvf foo.tar

そして正しいファイル名を書き留めます。私のファイルの場合は、次のように抽出foo.tarできます。/home/foo/bar

tar -xvf foo.tar home/foo/bar # Note: no leading slash

したがって、いいえ、あなたが投稿した方法は(必ずしも)正しい方法ではありません。先行スラッシュを省略する必要があります。絶対パスをエミュレートするには、cd /まずそのようにしてスーパーユーザーであることを確認してください。または同じことを行います。

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

tarパスを相対パスに変換するには、非常に明白で妥当な理由があります。 1つは、ソースソースの外部のアーカイブを復元する機能です。もう一つは安全です。そのファイルが現在の作業ディレクトリに表示されることを期待してアーカイブを抽出できますが、誤ってシステムファイル(または自分の作業)を他の場所に上書きする可能性があります。

-P注:このオプションを使用するとtar 〜するアーカイブ絶対パス。したがって、大容量アーカイブの内容を抽出する前に必ず確認することをお勧めします。

おすすめ記事