Linuxで250GBのgzipファイルを使用しています。これを250GBファイルに分割し、生成されたパーツファイルを即座に圧縮します圧縮されている必要があります)。 私はこれを使用してみました -.gzファイルを複数の1GB圧縮ファイル(.gz)に分割する
zcat file.gz | split -b 1G – file.gz.part
しかし、これは、非圧縮ファイルを生成し、当然のようにしています。私はそれがこのように見えるように変更されますが、エラーが発生しました:
zcat file.gz | split -b 1G - file.gz.part | gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
私もこれを試みたが、それはすべてのエラーをスローしませんでしたが、できるだけ早くそれらが生成された一部のファイルを圧縮しませんでした。私はこれが分割全体が完了したときに各ファイルを圧縮することを前提としています(分割が完了したら、すべての部分ファイルをパックし、単一のgzファイルを作成するかもしれません。
zcat file.gz | split -b 1G - file.gz.part && gzip
は、私はそこにフィルタオプションですが、スプリットの私のバージョンは、したがって、フィルタはサポートされていません(GNUのcoreutilsの)8.4、であること
hereをお読みください。
$ split --version
split (GNU coreutils) 8.4
好ましくは1つのライナーコード(可能な場合)またはシェルを使用して、これを達成するための適切な方法を教えてください(bashの/ kshの)スクリプトも動作します。 (いくつかのマイナーなミスがあるかもしれないので、私は実際にそれをテストしていない)
私は、いくつかのスクリプト言語で独自の "split with gzip"を作成することをお勧めします。そうでなければ、その250 GBのファイルを何度も読み取る必要があります(最初にサイズを決定し、ループ内で常に1つのスプライスとgzipを使用します) – MacHala
パーツが独立して圧縮解除可能であることの重要性はどれくらいですか?単純に 'split -b 1G file.gz'を実行すると、一緒にcatできて解凍できるファイル部分が250個になります。 –