zipアーカイブの内容を同時に抽出して削除する方法は?

zipアーカイブの内容を同時に抽出して削除する方法は?

単一ファイル形式の複数の小さなファイルを含む大容量zipアーカイブ(> 180 GB)をSSDにダウンロードして抽出したいのですが、zipアーカイブと抽出されたコンテンツの両方を収容するのに十分な容量がありません。回答に記載されているzipコマンドを使用して、アーカイブから個々のファイルを抽出して削除できることを知っています。ここそしてここ。また、コマンドを使用してアーカイブ内のすべてのファイルの名前を取得し、上記のようにunzip -l結果を配列に保存することもできます。ここ、与えられた方法を使用して不要な値をフィルタリングします。ここ、上記のようにBASHで繰り返します。ここ。したがって、最終ロジックは次のようになります。

  1. unzip -lアーカイブ内の単一のファイル拡張子と一致する正規表現を使用してzipファイルの内容を一覧表示し、bash配列にファイル名を保存します。
  2. ファイル名の配列を繰り返して、unzip -j -dコマンドzip -dを使用して個々のファイルを継続的に抽出して削除します。

必要な時間、論理的な複雑さ、および計算リソースの面でどのようにこのアプローチを実現できますか?特に大容量アーカイブでは、個々のファイルを削除して抽出する効率が心配です。このアプローチについてのフィードバックやコメントがあれば聞きたいです。すべての助けに事前に感謝します。

答え1

私が知っている限り、アーカイブからファイルを削除するには、zipアーカイブよりも2倍のスペースが必要になることがあります。したがって、USBスティックを接続し、そこにアーカイブを保存することをお勧めします。次に、ファイルをSSDに抽出し、必要でない場合はアーカイブを削除します。

答え2

zipファイルの場合:

  • 信頼できるコンテンツが含まれています。
  • URL経由で利用可能
    • 安定したインターネット接続で

それから答えはここにあります役に立つかもしれません。

つまり、ストリームから解凍できるプログラムを使用してください。

たとえば、

cd /place/to/store/data
curl https://www.example.org/input.zip | busybox unzip -
cd /place/to/store/data
curl https://www.example.org/input.zip | bsdtar xvf -

関連情報