เป็นไปได้ไหมที่จะรวมไฟล์เก็บถาวร bz2 หลายไฟล์เป็นไฟล์เดียว

ฉันมีไฟล์เก็บถาวร bz2 ขนาดใหญ่หลาย (27) ไฟล์ (แต่ละไฟล์มีหลาย GB) ที่ฉันต้องการรวมเป็นไฟล์เก็บถาวร bz2 ไฟล์เดียว การขยายขนาดไฟล์เหล่านั้นแล้วสร้างไฟล์เก็บถาวรใหม่จากสิ่งที่เพิ่งคลายการบีบอัดไม่ใช่ตัวเลือกสำหรับฉัน เนื่องจากการบีบอัดไฟล์ทั้งหมด 27 ไฟล์จะเพิ่มขนาดได้ประมาณ 100GB และขนาดที่ไม่บีบอัดจะอยู่ที่ประมาณ 5-6TB (ใช่แล้ว นั่นคือ TERAbytes lol)

สิ่งนี้สามารถทำได้ด้วยสคริปต์บางประเภท หรือมีรูปแบบการบีบอัดอื่นที่อนุญาตให้ทำสิ่งนี้ได้ (ง่ายกว่า) หรือไม่?


person dmn    schedule 04.08.2011    source แหล่งที่มา


คำตอบ (4)


หากคุณยินดีที่จะเบิร์น CPU สักสองสามวัน ต่อไปนี้คือวิธีแก้ปัญหาหนึ่งสำหรับระบบไปป์อันมหัศจรรย์ของระบบปฏิบัติการ UNIX(R) สมัยใหม่:

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

... จริงๆ แล้ว ให้คว้า lbzip2 เวอร์ชัน 2.0 และทำเช่นเดียวกัน ยกเว้น lbzip2 บนมัลติคอร์:

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

คุณสามารถต่อไฟล์ bz2 หลายๆ ไฟล์เข้าด้วยกันเป็นไฟล์ bz2 ไฟล์เดียวได้ เช่น:

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

bzip2 และยูทิลิตี้อื่นๆ เช่น lbzip2 จะสามารถขยายขนาดไฟล์ผลลัพธ์ตามที่คาดไว้

person Mikołaj Izdebski    schedule 01.11.2011
comment
มันใช้งานได้จริง! จากชาย 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

คุณควรพลิกคำถามไปรอบๆ - คุณไม่ควรพยายามขยายขนาดแล้วบีบอัดไฟล์ใหม่ เพียงแค่สร้างไฟล์เก็บถาวร tar ของไฟล์แยกกันทั้งหมด - tar เหมาะอย่างยิ่งที่จะเป็นคอนเทนเนอร์สำหรับไฟล์แยกกัน

tar cf tarofbzfiles.tar *.bz2
person Petesh    schedule 04.08.2011
comment
จริงๆ แล้วฉันต้องการไฟล์เก็บถาวรหนึ่งไฟล์ที่มีเนื้อหาทั้งหมดของไฟล์เก็บถาวร 27 รายการ ฮ่าๆ ฉันค่อนข้างแน่ใจว่าไฟล์เก็บถาวรหนึ่งรายการที่มีไฟล์เก็บถาวร 27 รายการจะไม่ทำงานตามวัตถุประสงค์ของฉัน น่าเสียดาย :( - person dmn; 04.08.2011
comment
ไฟล์เก็บถาวร .bz2 เป็นไฟล์ประเภทใด หากเป็นไฟล์ tar ก็สามารถต่อเข้าด้วยกันได้ มันจะต้องมีสคริปต์เชื่อมโยงการบีบอัดของแต่ละไฟล์เก็บถาวรเข้ากับไปป์/fifo ของตัวเองที่ใช้ในชุดคำสั่ง tar -A ซึ่งทั้งหมดสรุปเป็น fifo ที่ถูกไปป์ผ่าน bzip2 - person Petesh; 05.08.2011
comment
ฉัน คิดว่า แต่ละไฟล์เป็นไฟล์ XML ไฟล์เดียว (ขนาดใหญ่) ขณะนี้ฉันกำลังลองใช้คำสั่งที่เรียกว่า bzcat ดังนี้: bzcat *.bz2 > newfile.bz2 ฉันเริ่มมันเมื่อชั่วโมงที่แล้วแล้ว มาดูกันว่าจะเป็นยังไง...อีกมากในภายหลัง :) - person dmn; 05.08.2011
comment
bzcat *.bz2 | bzip2 -c › newfile.bz2 - ถ้าคุณไม่รี bzip2 ไฟล์ คุณจะไม่ได้รับการบีบอัด!! - person Petesh; 05.08.2011

คุณสามารถย่อคำตอบของ @lacos ให้สั้นลงได้โดยใช้ตัวย่อ bzcat สำหรับ bzip2 -dc และไพพ์กลับเข้าไปใน bzip2 ตามปกติ ไม่ถูกต้องไปกว่า @lacos แต่ลื่นกว่าเล็กน้อย;)

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