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

Bzip2 มาตรฐาน

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

ตรวจสอบและดู Metadata

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

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

การแปลงไฟล์แบบส่วนตัว 100% ในเบราว์เซอร์ - ไฟล์จะไม่ rời ออกจากอุปกรณ์ของคุณ

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

ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)

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

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

42 5A 68

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

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

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

สถาปัตยกรรมคอนเทนเนอร์Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC
การบีบอัดBurrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding
การจัดลำดับไบต์ (Byte Endianness)Big-Endian bitstream framing
พื้นที่สีN/A (Byte Compression Stream)
ช่องสัญญาณและโครงสร้างSingle-file compressed byte stream
ขนาดสูงสุดUnbounded stream length (supports arbitrary file sizes)
ความโปร่งใส100% bit-exact lossless data preservation
การสตรีมและแบบโปรเกรสซีฟSequential block-by-block streaming with independent per-block CRC checksums

ตารางเปรียบเทียบทางเทคนิค: 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
  • การปฏิเสธการให้บริการ (Denial of Service) ผ่านรูปแบบอินพุตที่ผิดปกติซึ่งทำให้เกิดเวลาการเรียงลำดับ BWT ที่แย่ที่สุดในกรณีคอดราติก

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:

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

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)