Memisahkan file gzip menjadi file gz yang lebih kecil tanpa kompres ulang

9

Saya punya file .gz besar. Saya ingin membaginya menjadi 100 file gzip yang lebih kecil, yang masing-masing dapat didekompresi dengan sendirinya. Dengan kata lain: Saya tidak mencari cara untuk memotong file .gz menjadi potongan yang harus disatukan kembali untuk dapat mendekompresnya. Saya ingin dapat mendekompres setiap file yang lebih kecil secara mandiri.

Bisakah itu dilakukan tanpa mengkompres ulang seluruh file?

Bisakah itu dilakukan jika file asli dikompresi --rsyncable? ("Cater lebih baik untuk program rsync dengan secara berkala mengatur ulang struktur internal dari aliran data terkompresi." Kedengarannya seperti titik reset ini mungkin tempat yang baik untuk dipecah dan mungkin menambahkan header.)

Bisakah itu dilakukan untuk format terkompresi lainnya? Saya akan membayangkan bzip2bisa dilakukan - karena dikompresi dalam blok.

Ole Tange
sumber
Sudahkah Anda mencoba split -b?
George Vasiliou
3
@ GeorgeVasiliou Tidak akan menghasilkan file gzip yang lebih kecil yang dapat didekompresi.
Ole Tange
Jawaban untuk pertanyaan pertama Anda adalah tidak, ini sudah tercakup dalam Hapus baris terakhir file gz . Jawabannya mungkin tidak dengan sebagian besar format terkompresi, karena apa yang Anda minta bertentangan dengan kompresi. Saya pikir jawabannya juga tidak dengan gzip --rsyncablemengingat bahwa "gunzip tidak dapat membedakannya" (jika Anda dapat menemukan tempat untuk membelah, Anda dapat mengatakan bahwa ada tempat untuk membelah). Mungkin bisa dilakukan dengan bzip2 karena fitur bloknya yang khas.
Gilles 'SANGAT berhenti menjadi jahat'
Ini dapat membantu: stackoverflow.com/a/22628945/4941495 Biarkan saja input stream standar menjadi output gzip -d -c bigfile.gz.
Kusalananda
Tanpa kompresi ulang, itu akan bisa dilakukan dengan bzip2file. Ini bisa dilakukan dengan gzatau xzhanya dengan mengompresi setiap chunk secara independen, jadi ini membutuhkan recompression.
xhienne

Jawaban:

0

Berpisah dan bergabung dengan file besar berfungsi, tetapi tidak mungkin untuk mendekompres bagian file terkompresi, karena informasi penting didistribusikan melalui seluruh dataset. Cara lain; pisahkan file yang tidak dikompresi dan kompres satu bagian. Sekarang Anda dapat mendekompres setiap bagian. Tapi kenapa? Anda harus menggabungkan semua bagian yang terkompresi sebelum diproses lebih lanjut.

ingopingo
sumber
1
Fakta menyenangkan: Ketika Anda memiliki bagian-bagian yang dikompresi secara individual (menggunakan gzipatau xz), Anda dapat melakukan penggabungan dan dekompresi, atau dekompresi dan penggabungan. Perintahnya tidak masalah.
Kusalananda
Mungkin, itu tergantung data. Jika Anda membagi dan mengompres gambar disk, Anda memiliki peluang untuk memulihkan bagian-bagian sistem file. Jika Anda pertama kali mengompres dan kemudian berpisah, Anda tidak memiliki peluang.
ingopingo
Tidak, dan itu juga bukan premis saya. Saya hanya mengatakan bahwa urutan di mana Anda melakukan penggabungan dan dekompresi ketika Anda memiliki bagian-bagian yang dikompresi secara individual tidak masalah (ini disebabkan oleh format file yang dikompresi). Jika mengompresi dulu, lalu membelah, maka orang jelas perlu mengkombinasikan kembali terlebih dahulu.
Kusalananda
Oh itu keren. Ini berfungsi, meskipun setiap bagian berisi tajuk file individual!
ingopingo