大きなtar.gzアーカイブから単一のフォルダーをどのように抽出しますか?

このコマンドを 5GB で使用していますアーカイブ

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

これは正しい方法ですか?コマンドライン出力がないため、永遠に時間がかかるようです…

コメント

  • 絶対パスまたは相対パスを使用しましたか?それが正しく見えることを除いて、相対的でなければなりません。どのくらいの期間実行させましたか?また、システムはどの程度優れていますか?高速マシンでは少なくとも数分かかります。潜在的に1時間以上? '現在テストを実行しています。
  • はい、約1時間後に完了しましたが、絶対パスが間違っていました。正解です。
  • Linuxでは、tarcat /proc/$(pidof tar)/fdinfo/0を使用して、アーカイブのどこまで進んでいるかを確認できます(複数のcat /proc/$(pidof tar)/fdinfo/0がある場合はコマンドを適応させますdiv id = “dbfd5e818e”>

プロセスが実行されています。

  • 重要な部分は、末尾にスラッシュがないことです。 folder/folder2/を使用しても'は機能しません。
  • 回答

    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つは、元のソース以外の場所にアーカイブを復元する機能です。もう1つはセキュリティです。アーカイブを抽出し、そのファイルが現在の作業ディレクトリに表示されることを期待し、代わりにシステムファイル(または自分の作業)を誤って他の場所に上書きする可能性があります。

    注:<を使用する場合div id = "bf636723f6">

    オプション、tar アーカイブの絶対パス。したがって、抽出する前に大きなアーカイブの内容を確認することは常に重要です。

    コメント

    • --strip-components=Nはここで役立つかもしれません。
    • 私の場合、iv id = “23の代わりに./foldername/を記述する必要がありました。 16b5075f “>

    、tarを作成したときに、tar -cvf santi.tar ./*で作成し、"で作成したためだと思います。リストされている"タールこれはdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/

  • そして.gz
  • @PeterKrauss -xvf-xzvfに変更します(-zオプション)、明らかにfoo.tarからfoo.tar.gzまたはアーカイブに名前が付けられているもの。同じことが-j(bz2)にも当てはまり、最近の一部のバージョンでは-J(xz)にも当てはまります。それ以外の場合は、zcat foo.tar.gz | tar -xvf - …のようなパイプラインも機能します。
  • 抽出中にすべての詳細な出力にうんざりしている場合は、すべての例で。例:tar -tf foo.tarおよびtar -xf foo.tar ...
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です