アーカイブ爆弾を防ぐために現在のディレクトリを汚染することなく安全に解凍する方法は?

アーカイブ爆弾を防ぐために現在のディレクトリを汚染することなく安全に解凍する方法は?

尊敬されるプロジェクトは、などを含むフォルダなどの単一のディレクトリをzyrgus-3.18.tar.gz含むtarアーカイブを公開します。zyrgus-3.18srcbuilddist

しかし、いくつかのパンクプロジェクトはすべてを根にしています: '-(混乱アーカイブをキャンセルする場合。毎回手動でフォルダを作成するのは痛く、ほとんどの場合不要です。

  • .tarファイルまたは.tar.gzファイルのルートに複数のディレクトリが含まれていることを確認する非常に簡単な方法はありますか?大規模アーカイブの場合も同様です。
  • それとも、この場合、ディレクトリ(拡張子のないアーカイブ名)を作成し、その中にすべてのコンテンツを置くことができるツールはありますか?

答え1

パトロール隊員さまざまな種類のアーカイブを処理し、アーカイブに複数のファイルが含まれている場合は、サブディレクトリを作成して、抽出されたファイルが作業ディレクトリを複雑にするのを防ぎます。

アーカイブ抽出

patool extract archive.tar

サポートされている形式のリストを取得するにはpatool formats

答え2

次のようなことができます

tar tf thefile.tar | cut -d/ -f1 | sort -u

tarにどのトップレベルのエントリがあるかを確認して、複数のものがあることをwc -l確認してください。たとえば、tarにsomedir/whateverAND ALSO(またはそれ以上)形式のファイルパスが含まれていると、これは失敗する可能性があります。./somedir/whateverしかし、これは一般的ではありません。

これは、出力する前にtarファイル全体を読み込みますが、順次読み込みであるsortため、大きなファイルをスキップできるため、実際の抽出よりも高速です。

これを対話的に実行し、ファイルが大きくなる可能性がある場合は、複数の項目を印刷する場合と+sort -uに変更できます。uniqControlC

答え3

あなたはできます:

pax <some.tar

...tarファイルの内容を一覧表示します。

どれくらい深いかを知りたい場合は、次のようにできます。

pax <some.tar | tr -dc /\\n | sort -r | head -n1

以下を使用して、抽出時に爆発を明示的に無効にすることができます。

mkdir some.tar
pax -'rs|^|some.tar/|' <some.tar

答え4

aunpack archive.tar私が使うものです。

良かった時代の一部ツールパック。マンページ:https://linux.die.net/man/1/atool

関連情報