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


9

大きな.gzファイルがあります。それを100個の小さなgzipファイルに分割し、それぞれを単独で解凍できるようにしたいと思います。言い換えれば、私は.gzファイルをチャンクに細かく分割して解凍できるようにする方法を探していません。小さいファイルをそれぞれ個別に解凍できるようにしたい。

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

元のファイルが圧縮されている場合、それは可能--rsyncableですか?(「圧縮データストリームの内部構造を定期的にリセットすることにより、rsyncプログラムよりも優れた機能を提供します。」これらのリセットポイントは、分割してヘッダーを付加するのに適した場所であると思われます。)

他の圧縮形式のいずれかで実行できますか?bzip2ブロックで圧縮されているので、私は実行可能だと想像します。


split -bを試してみましたか?
George Vasiliou 2017年

3
@GeorgeVasiliou解凍できる小さいgzipファイルにはなりません。
Ole

最初の質問に対する答えは「いいえ」です。これは、「gzファイルの最後の行を削除する」で説明されています。あなたが求めているのは圧縮に反するので、答えはおそらくほとんどの圧縮フォーマットではノーです。gzip --rsyncable「gunzipでは違いがわからない」ということを考えると、答えは「ノー」だと思います(分割する場所が見つかれば、分割する場所があることがわかります)。独特のブロック機能があるため、bzip2で実行できる場合があります。
Gilles「SO-邪悪なことをやめよ」

これは役立つかもしれません:stackoverflow.com/a/22628945/4941495 標準入力ストリームをの出力にしてくださいgzip -d -c bigfile.gz
クサラナンダ

再圧縮しなくても、bzip2ファイルで実行できます。これは、各チャンクを個別に圧縮することによって、gzまたはxz個別に圧縮することによってのみ実行できるため、再圧縮が必要になります。
xhienne

回答:


0

大きなファイルの分割と結合は機能しますが、重要な情報はデータセット全体に分散されるため、圧縮ファイルの一部を解凍することはできません。別の方法; 非圧縮ファイルを分割し、単一の部分を圧縮します。これで、各ピースを解凍できます。しかし、なぜ?さらに処理する前に、解凍されたすべてのパーツをマージする必要があります。


1
面白い事実:個別に圧縮された部分がある場合(gzipまたはを使用xz)、連結と解凍、または解凍と連結を行うことができます。順序は関係ありません。
クサラナンダ

多分、それはデータに依存します。ディスクイメージを分割して圧縮すると、ファイルシステムの一部を回復できる可能性があります。最初に圧縮してから分割すると、間違いなくチャンスはありません。
インゴピンゴ2017

いいえ、それも私の前提ではありませんでした。個別に圧縮された部分がある場合に連結と解凍を実行する順序は重要ではないと述べました(これは圧縮ファイル形式が原因です)。最初に圧縮してから分割する場合は、明らかに最初に再結合する必要があります。
Kusalananda

カッコイイ。すべてのパーツに個別のファイルヘッダーが含まれていても、問題はありません。
ingopingo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.