我在Linux上有一個250GB的壓縮文件,我想將它拆分爲250個1GB文件,並在運行時壓縮生成的部分文件(只要一個文件被生成,它應該被壓縮)。 我試圖用這個 -將一個.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
我讀here有一個過濾器的選擇,但我的分裂版本(GNU的coreutils)8.4,因此過濾器不支持。
$ split --version
split (GNU coreutils) 8.4
請告知合適的方式來實現這一點,優選地使用一個襯裏代碼(如果可能的話)或殼(慶典/ KSH)腳本也將工作。
我建議在某些腳本語言中編寫自己的「split with gzip」變體。因爲否則,您將不得不通過該250 GB文件多次讀取(首先確定它的大小,然後在循環中始終採用一個拼接並對其進行gzip) – MacHala
這些部件獨立可解壓縮的重要性如何?如果你只是運行'split -b 1G file.gz',你最終會得到250個文件部分,你可以把它們放在一起然後解壓縮。 –