ไฟล์เก็บถาวร BZIP2 (.bz2)

Bzip2 มาตรฐาน

Bzip2 (BZ2) คือยูทิลิตี้การบีบอัดและรูปแบบไฟล์แบบ Unix แบบดั้งเดิมที่ไม่มีสิทธิบัตร สร้างขึ้นโดย Julian Seward โดยใช้การแปลงแบบ Burrows-Wheeler เพื่อให้บีบอัดข้อมูลได้ดีกว่า Gzip แบบดั้งเดิมอย่างเห็นได้ชัด

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BZ2 โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BZ2 โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

42 5A 68

การแสดงผลรูปแบบ ASCII: BZh

มาตรฐาน: Bzip2 Open Source Standard

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์ส่วนหัวสตรีม ('BZh' + ตัวเลขขนาดบล็อก 1-9) ตามด้วยบล็อกข้อมูลที่บีบอัดและ CRC 32 บิต
การบีบอัดการแปลง Burrows-Wheeler (BWT), การแปลง Move-to-Front (MTF) และการเข้ารหัส Huffman
การจัดลำดับไบต์การจัดกรอบบิตสตรีมแบบ Big-Endian
พื้นที่สีไม่เกี่ยวข้อง (สตรีมบีบอัดไบต์)
ช่องสัญญาณและโครงสร้างสตรีมไบต์ที่บีบอัดสำหรับไฟล์เดียว
ขนาดสูงสุดความยาวสตรีมไม่จำกัด (รองรับไฟล์ทุกขนาด)
ความโปร่งใสรักษาข้อมูลโดยไม่สูญเสียและตรงระดับบิต 100%
การสตรีมและแบบโปรเกรสซีฟสตรีมตามลำดับทีละบล็อก พร้อมค่า checksum CRC แยกอิสระสำหรับแต่ละบล็อก

ตารางเปรียบเทียบทางเทคนิค: BZ2 กับคู่แข่ง

คุณลักษณะทางเทคนิคBZ2 (ปัจจุบัน)GZXZZSTD
อัลกอริทึมหลักเบอร์โรว์ส-วีเลอร์ ทรานสฟอร์ม (BWT)ดีเฟลท (LZ77 + ฮัฟแมน)LZMA / LZMA2ไฟไนต์ สเตต เอ็นโทรปี + LZ77
การบีบอัดเทียบกับ Gzipเล็กกว่า Gzip 10% - 20%มาตรฐานพื้นฐานเล็กกว่า Gzip 20% - 30%เล็กกว่า Gzip 10% - 20%
ความเร็วในการคลายการบีบอัดช้า (~30-50 MB/s)เร็ว (~300 MB/s)ปานกลาง (~100 MB/s)เร็วมาก (>1.5 GB/s)
ค่าตรวจสอบความถูกต้องของบล็อกCRC 32 บิตต่อบล็อกสตรีมเดี่ยว CRC32สตรีม CRC64สตรีม xxHash64

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

การแตกไฟล์หยุดทำงานพร้อมข้อความ 'bzip2: Data integrity error when decompressing'

สาเหตุหลัก: บิตที่พลิกในบล็อกที่บีบอัดทำให้เมทริกซ์การสลับย้อนกลับของ BWT ล้มเหลวในการตรวจสอบความถูกต้องของ CRC32

การกู้คืน: ใช้ยูทิลิตี้ 'bzip2recover' เพื่อกู้คืนบล็อกที่ไม่เสียหายรอบ ๆ เซกเตอร์ที่เสียหาย

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

การใช้งาน Bzip2 เกี่ยวข้องกับการเรียงลำดับบิตสตรีมที่ซับซ้อนและการวิเคราะห์ตาราง Huffman ซึ่งในอดีตเคยมีข้อบกพร่องเรื่องจำนวนเต็มล้น (integer overflow)

เวกเตอร์การโจมตีที่ทราบ

  • จำนวนเต็มล้นในการจัดสรรอาร์เรย์การเรียงลำดับ BWT (เช่น CVE-2016-3189)
  • การเขียนนอกขอบเขตระหว่างการประกอบตารางการถอดรหัส Huffman
  • การปฏิเสธการให้บริการผ่านรูปแบบอินพุตที่ผิดปกติ ซึ่งทำให้การเรียงลำดับ BWT ใช้เวลาระดับกำลังสองในกรณีเลวร้ายที่สุด

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ถอดรหัสไฟล์ BZ2 โดยใช้ตัวถอดรหัส WASM ที่ปลอดภัยต่อหน่วยความจำพร้อมบังคับใช้ขอบเขตหน่วยความจำ

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2019Federico Mena Quintero ทำการปรับปรุงการบำรุงรักษาซอร์สโค้ดของ bzip2 ให้ทันสมัยภายใต้ bzip3 และโครงการริเริ่มโอเพนซอร์สสมัยใหม่
2000เปิดตัวเวอร์ชัน 1.0 ซึ่งทำให้รูปแบบ bzip2 มีเสถียรภาพทั่วทั้งการแจกจ่าย Linux และตัวจัดการแพ็กเกจ
1996Julian Seward เปิดตัว bzip2 0.15 เพื่อแทนที่รูปแบบ bzip รุ่นก่อนหน้าที่มีปัญหาเรื่องสิทธิบัตร

ข้อได้เปรียบและจุดเด่นสำคัญ

  • บีบอัดได้ดีกว่า Gzip แบบดั้งเดิมอย่างสม่ำเสมอ 10% ถึง 20% บนซอร์สโค้ด tarball, บันทึกของระบบ และฐานข้อมูลข้อความ
  • สถาปัตยกรรมบล็อกอิสระ (100k ถึง 900k) รวมถึงการตรวจสอบความสมบูรณ์แบบ CRC 32 บิตต่อบล็อก เพื่อการตรวจสอบความสมบูรณ์ที่แข็งแกร่ง
  • มีให้ใช้งานในตัวในดิสทริบิวชันบรรทัดคำสั่ง Linux, BSD และ macOS หลายรุ่น โดยแต่ละดิสทริบิวชันอาจรวมมาไม่เหมือนกัน

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ความเร็วในการบีบอัดและการคลายการบีบอัดช้ากว่าอัลกอริทึมสมัยใหม่ เช่น Zstandard อย่างมาก
  • การบีบอัดไฟล์เดี่ยวเท่านั้น: ต้องจับคู่กับ TAR (.tar.bz2) เพื่อแพ็กเกจไฟล์หรือไดเรกทอรีหลายไฟล์
  • การใช้ CPU สูงกว่าระหว่างการคลายการบีบอัดเมื่อเทียบกับ Gzip หรือ Zstd

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • ไบต์ระบุรูปแบบไฟล์ 'BZh' ย่อมาจาก 'Burrows-Wheeler Zip Huffman' ตามด้วยตัวเลข ('1' ถึง '9') ที่ระบุขนาดบล็อกเป็นร้อยกิโลไบต์ (เช่น 'BZh9' = 900 KB)
  • ซอร์สโค้ดของ Linux Kernel ถูกแจกจ่ายเฉพาะในรูปแบบ .tar.bz2 นานกว่าทศวรรษก่อนที่จะย้ายไปที่ .xz
  • การแปลงแบบ Burrows-Wheeler ไม่ได้บีบอัดข้อมูลโดยตรง แต่จะเรียงลำดับอักขระใหม่เพื่อให้ตัวอักษรที่เหมือนกันมารวมกัน ทำให้สามารถบีบอัดได้ง่ายด้วยการเข้ารหัสแบบ Huffman

คำถามทางเทคนิคที่พบบ่อย

ความแตกต่างระหว่าง .gz และ .bz2 คืออะไร?

.bz2 ใช้ขั้นตอนวิธี Burrows-Wheeler เพื่อให้ขนาดไฟล์เล็กกว่า .gz แต่ต้องใช้เวลาในการบีบอัดและคลายบีบอัดนานกว่า

ทำไม bzip2 ถึงมีคำสั่ง 'bzip2recover'?

เนื่องจาก bzip2 บีบอัดข้อมูลเป็นบล็อกขนาด 900 KB ที่เป็นอิสระต่อกัน และแต่ละบล็อกจะมีค่า CRC ของตัวเอง bzip2recover จึงสามารถดึงข้อมูลในบล็อกที่ไม่เสียหายออกมาได้ แม้ว่าบางส่วนของไฟล์จะเสียหายก็ตาม

ฉันจะคลายไฟล์ .tar.bz2 ได้อย่างไร?

คุณสามารถแตกไฟล์ .tar.bz2 ได้โดยตรงในเว็บเบราว์เซอร์ของคุณด้วย File2File.app โดยไม่ต้องใช้เครื่องมือบรรทัดคำสั่ง (command-line tools)