再圧縮せずにgzipファイルをより小さなgzファイルに分割する

再圧縮せずにgzipファイルをより小さなgzファイルに分割する

大きな.gzファイルがあります。私はそれを100個のより小さなgzipファイルに分割したいと思います。各ファイルは個別に解凍できます。つまり、私は.gzファイルを解凍するために再度集める必要がある塊に切り取る方法を探していません。それぞれの小さなファイルを個別に解凍できるようにしたいです。

ファイル全体を再圧縮せずに実行できますか?

元のファイルを圧縮しても大丈夫です--rsyncableか? (「圧縮されたデータストリームの内部構造を定期的にリセットしてrsyncプログラムをよりよく満たす」。これらのリセットポイントが分割に最適な場所であるように聞こえ、前面にヘッダを追加することもできます。)

他の圧縮形式にも使用できますか?私はbzip2これがうまくいくと思います。なぜなら、それは塊に圧縮されているからです。

答え1

大容量ファイルを分割してマージすることは効率的ですが、基本情報がデータセット全体に分散しているため、圧縮ファイルの個々の部分を解凍することは不可能です。別の方法は、圧縮されていないファイルを分割し、個々の部分を圧縮することです。これで各セクションを解凍できます。しかし、なぜ?追加の処理を行う前に、解凍したすべての部分をマージする必要があります。

答え2

私の間違いはさておき、ファイルを変更せずに大容量ファイルを再構成し、解凍する能力を失うことは可能ではないと思います。これは、最初の大きなファイル圧縮でメタデータ(ヘッダーとトレーラー)が失われるためです。小さなファイルのそれぞれには存在しません。

ただし、ラッパーを作成して次のことができます。

  1. (オプション)大容量ファイルの圧縮
  2. 大きなファイルを100個の小さなチャンクに分割する
  3. gzipで各チャンクを圧縮する
  4. gzipで各チャンクを解凍します。
  5. チャンクを大きなファイルにリンクします。
  6. (オプション)大容量ファイルの解凍

注:ストレージスペースを節約する目的が何であるかわかりません。ネットワーク転送時間を節約しますか?限られた空間システムの基本的な要件は何ですか?

ありがとう

関連情報