Mungkinkah menggabungkan beberapa arsip bz2 menjadi satu?

Saya memiliki beberapa (27) file arsip bz2 berukuran besar (masing-masing beberapa GB) yang perlu saya gabungkan menjadi satu arsip bz2. Membuka kompresinya lalu membuat arsip baru dari apa yang baru saja tidak dikompresi bukanlah pilihan bagi saya, karena dikompresi, ke-27 file tersebut berjumlah sekitar 100 GB, dan jika tidak dikompresi, ukurannya sekitar 5-6 TB (ya, itu TERAbytes haha).

Bisakah ini dilakukan dengan semacam skrip, atau adakah format kompresi lain yang memungkinkan hal ini dilakukan (lebih mudah)?


person dmn    schedule 04.08.2011    source sumber


Jawaban (4)


Jika Anda ingin menghabiskan CPU selama beberapa hari, inilah salah satu solusi dengan fasilitas pipa ajaib sistem operasi UNIX(R) modern:

bzip2 -dc file*.bz2 | bzip2 >resulting_file.bz2

... sebenarnya, ambil lbzip2 versi 2.0, dan lakukan hal yang sama, kecuali dengan lbzip2, pada multicore:

lbzip2 -dc file*.bz2 | lbzip2 >resulting_file.bz2
person lacos    schedule 08.11.2011

Anda cukup menggabungkan banyak file bz2 menjadi satu file bz2, seperti itu:

$ cat file1.bz2 file2.bz2 file3.bz2 >resulting_file.bz2

bzip2 dan utilitas lain seperti lbzip2 akan dapat mendekompresi file yang dihasilkan seperti yang diharapkan.

person Mikołaj Izdebski    schedule 01.11.2011
comment
Faktanya, itu berhasil! Dari man bzip2: bunzip2 will correctly decompress a file which is the concatenation of two or more compressed files. The result is the concatenation of the corresponding uncompressed files. Integrity testing (-t) of concatenated compressed files is also supported. - person ventura10; 18.08.2014

Anda harus membalik pertanyaannya - Anda tidak boleh mencoba mendekompresi dan mengompresi ulang file, cukup buat arsip tar dari semua file terpisah - tar sangat ideal sebagai wadah untuk file terpisah.

tar cf tarofbzfiles.tar *.bz2
person Petesh    schedule 04.08.2011
comment
Sebenarnya saya sangat membutuhkan satu arsip yang berisi seluruh isi dari 27 arsip tersebut, haha. Sayangnya, saya cukup yakin satu arsip yang berisi 27 arsip tidak akan berfungsi untuk tujuan saya. :( - person dmn; 04.08.2011
comment
Jenis file apa yang merupakan arsip .bz2? jika itu file tar, maka dimungkinkan untuk menggabungkannya. Ini akan memerlukan skrip yang merangkai uncompression masing-masing arsip ke dalam pipa/fifo mereka sendiri yang digunakan dalam serangkaian perintah tar -A, yang semuanya disimpulkan menjadi fifo yang disalurkan melalui bzip2 - person Petesh; 05.08.2011
comment
Saya berpikir setiap file adalah satu file XML (besar). Saat ini saya sedang mencoba perintah bernama bzcat seperti ini: bzcat *.bz2 > newfile.bz2. Saya memulainya lebih dari satu jam yang lalu jadi kita akan lihat bagaimana kelanjutannya...nanti. :) - person dmn; 05.08.2011
comment
bzcat *.bz2 | bzip2 -c › newfile.bz2 - jika Anda tidak melakukan bzip2 ulang file tersebut, Anda tidak akan mendapatkan kompresi!! - person Petesh; 05.08.2011

Anda dapat mempersingkat jawaban @ lacos dengan singkatan bzcat bawaan untuk bzip2 -dc dan menyalurkannya kembali ke bzip2 seperti biasa. Tidak lebih tepat dari @lacos tapi sedikit lebih apik ;)

bzcat file*.bz2 | bzip2 >resulting_file.bz2
person tannermares    schedule 22.02.2013