อัปเดตล่าสุด: 20 Aug, 2026

GZIP vs BZIP2 vs XZ: Which Linux Compression Format Is Best?

GZIP vs BZIP2 vs XZ: รูปแบบการบีบอัดของ Linux ตัวไหนดีที่สุด?

ไม่ว่าคุณจะกำลังบีบอัดการสำรองข้อมูลฐานข้อมูลประจำวัน, หมุนเวียนบันทึกเว็บเซิร์ฟเวอร์หลายกิกะไบต์, หรือแจกจ่ายไบนารีที่คอมไพล์แล้วไปยังโหนดหลายพันเครื่อง, การบีบอัดเป็นความจริงในชีวิตประจำวันของการดูแลระบบ Linux.

เมื่อเรียกใช้ tar หรือประมวลผลข้อมูลสตรีมผ่าน standard input, คุณมักจะพบกับยูทิลิตี้มาตรฐานสามตัว: GZIP (.gz), BZIP2 (.bz2), และ XZ (.xz).

แม้ว่าทั้งสามเครื่องมือจะมุ่งหมายบีบอัดไบต์ดิบให้เป็นไฟล์เก็บข้อมูลที่กะทัดรัด, พวกมันก็ทำการแลกเปลี่ยนด้านวิศวกรรมที่แตกต่างอย่างพื้นฐานระหว่างอัตราการบีบอัด, เวลาใช้ CPU, และการใช้หน่วยความจำ. การเลือกฟอร์แมตที่ไม่เหมาะสมอาจทำให้การปรับใช้อัตโนมัติของคุณชะงักโดยไม่รู้สึก, ทำให้ช่วงเวลาการสำรองข้อมูลที่กำหนดล่าช้า, หรือทำให้พื้นที่จัดเก็บที่มีค่าเสียหายไปตามเวลา.

คู่มือนี้จะแยกวิเคราะห์ว่าฟอร์แมตแต่ละแบบทำงานอย่างไรภายใน, การทำงานของพวกมันในภาระงานที่เป็นจริง, และวิธีเลือกแบบที่เหมาะสมสำหรับโครงสร้างพื้นฐานของคุณ.

1. โปรไฟล์เทคนิคสั้น: สามผู้แข่งขัน

GZIP (GNU Zip)

  • อัลกอริทึมพื้นฐาน: DEFLATE (การผสมผสานของ LZ77 และการเข้ารหัสฮัฟฟแมน)
  • ส่วนขยายเริ่มต้น: .tar.gz, .tgz, .gz
  • ยุคการปล่อย: 1992 (สร้างโดย Jean-loup Gailly และ Mark Adler เป็นทางเลือกที่ไม่มีสิทธิบัตรต่อ compress)
  • ข้อได้เปรียบหลัก: ความเร็วในการดำเนินการที่ไม่มีใครเทียบได้และการสนับสนุนระบบนิเวศที่เกือบทั่วโลก.
  • ข้อเสียหลัก: อัตราการบีบอัดที่ต่ำกว่าเมื่อเทียบกับตัวเข้ารหัสสถิติและพจนานุกรมสมัยใหม่.

GZIP ได้ทำหน้าที่เป็นเครื่องมือหลักเริ่มต้นของสภาพแวดล้อม Unix มานานกว่าสามทศวรรษ. เนื่องจากอัลกอริทึม DEFLATE ของมันทำงานด้วยหน้าต่างเลื่อนขนาดเล็ก (32 KB) GZIP ต้องการหน่วยความจำที่น้อยมากในระหว่างการบีบอัดและการคลายบีบอัด.

BZIP2

  • อัลกอริทึมพื้นฐาน: Burrows-Wheeler Transform (BWT) ร่วมกับการแปลง Move-to-Front (MTF) และการเข้ารหัสฮัฟฟแมน
  • ส่วนขยายเริ่มต้น: .tar.bz2, .tbz2, .bz2
  • ยุคการเปิดตัว: 1996 (สร้างโดย Julian Seward)
  • ข้อได้เปรียบหลัก: อัตราการบีบอัดที่ดีกว่าในไฟล์ ASCII ที่ซ้ำซ้อนและไฟล์บันทึกที่มีโครงสร้างเมื่อเทียบกับ GZIP.
  • ข้อเสียหลัก: ช้ากว่าในทุกด้าน โดยเฉพาะอย่างยิ่งระหว่างการแตกข้อมูล และส่วนใหญ่ถูกทำให้ล้าสมัยโดยอัลกอริทึมใหม่ๆ.

BZIP2 ประมวลผลข้อมูลเป็นบล็อกแยก (โดยทั่วไป 900 KB) โดยใช้การจัดเรียงที่ย้อนกลับได้ซึ่งจัดกลุ่มอักขระที่คล้ายกันเข้าด้วยกันก่อนการเข้ารหัส. แม้ว่าจะได้รับการยกย่องอย่างกว้างขวางในช่วงปลายทศวรรษ 1990 และทศวรรษ 2000 เนื่องจากทำให้ขนาดไฟล์เล็กกว่า GZIP แต่ค่าใช้จ่ายในการคำนวณค่อนข้างสูง.

XZ (LZMA2)

  • อัลกอริทึมพื้นฐาน: LZMA2 (อัลกอริทึม Lempel-Ziv-Markov chain, ปรับปรุงแล้ว)
  • ส่วนขยายเริ่มต้น: .tar.xz, .txz, .xz
  • ยุคการเปิดตัว: 2009 (แนะนำเพื่อสืบทอดรูปแบบ lzma เก่า)
  • ข้อได้เปรียบหลัก: อัตราการบีบอัดสูงเป็นพิเศษและการแตกข้อมูลที่รวดเร็วและเบา.
  • ข้อเสียหลัก: การใช้ RAM มากและระยะเวลาการทำงานของ CPU ที่ยาวนานในระหว่างการบีบอัดครั้งแรก.

XZ ใช้ขนาดพจนานุกรมที่เปลี่ยนแปลงได้ (มักสูงสุดถึง 32 MB หรือ 64 MB ตามค่าเริ่มต้น) เพื่อค้นหารูปแบบไบต์ที่ซ้ำกันในหน้าต่างข้อมูลที่กว้างกว่ามากเมื่อเทียบกับ GZIP สิ่งนี้ทำให้มันมีประสิทธิภาพอย่างมหาศาลในการย่อไฟล์ขนาดใหญ่ที่ซ้ำซ้อน เช่น สื่อการติดตั้งระบบปฏิบัติการ, ต้นไม้ซอร์สของเคอร์เนล, และภาพเฟิร์มแวร์

2. ตารางเปรียบเทียบประสิทธิภาพ

ตารางด้านล่างสรุปพลวัตประสิทธิภาพเชิงปฏิบัติของแต่ละยูทิลิตี้เมื่อทำงานด้วยการกำหนดค่าเริ่มต้นบนฮาร์ดแวร์เซิร์ฟเวอร์มาตรฐาน:

เมตริก / มิติGZIP (-6)BZIP2 (-9)XZ (-6)
อัตราการบีบอัดระดับปานกลาง (~65-75% การลดลง)ดี (~75-80% ลดลง)ยอดเยี่ยม (~80-88% ลดลง)
ความเร็วการบีบอัดเร็วมากช้าช้ามาก
ความเร็วการแตกข้อมูลเร็วอย่างมากช้าไปจนถึงปานกลางเร็ว
การใช้ RAM สำหรับการบีบอัดน้อยมาก (~1–2 MB)ต่ำ (~8–10 MB)สูง (~100–700 MB+)
การใช้ RAM สำหรับการแตกไฟล์น้อยมาก (< 1 MB)ต่ำ (~4 MB)ปานกลาง (~10–65 MB)
จุดที่เหมาะสมหลักบันทึก, ระบบ CI/CD, สตรีมแบบเรียลไทม์ความเข้ากันได้ของไฟล์เก่าที่เก็บแพ็กเกจ, ISO ของระบบปฏิบัติการ, การจัดเก็บเย็น

3. ข้อมูลเชิงลึกจากการทดสอบจริง

เพื่อทำความเข้าใจว่าเครื่องมือเหล่านี้ทำงานอย่างไรภายใต้โหลดที่เป็นจริง ให้พิจารณาบันทึกการเข้าถึงเซิร์ฟเวอร์ดิบขนาด 1 GB ตัวอย่างหนึ่งและไดเรกทอรีซอร์สโค้ดซอฟต์แวร์ขนาด 500 MB ที่ไม่ได้บีบอัด

สถานการณ์ A: การบีบอัดไฟล์บันทึกขนาดใหญ่ (ข้อความ 1 GB)

  • GZIP: เสร็จภายในไม่เกิน 12 วินาที ส่งมอบไฟล์อาร์ไคฟ์ประมาณ 180 MB.
  • BZIP2: เสร็จประมาณ 45–50 วินาที ลดขนาดไฟล์เหลือประมาณ 130 MB.
  • XZ: ใช้เวลา 80–90 วินาทีในตั้งค่าเริ่มต้น ให้ไฟล์อาร์ไคฟ์ประมาณ 95 MB.

สถานการณ์ B: งานถอดบีบอัด

เมตริกสำคัญที่มักถูกมองข้ามคือ asymmetry.

  • GZIP แตกข้อมูลได้ใน 2–3 วินาทีโดยใช้หน่วยความจำเพียงเล็กน้อย.
  • XZ แตกข้อมูลได้ใน 4–6 วินาที ขณะที่การบีบอัดเริ่มต้นช้า การสกัด .xz เกือบเร็วเท่ากับการสกัด .gz.
  • BZIP2 ต้องใช้เวลาประมาณ 25–30 วินาทีเพียงเพื่อคลายบีบอัด เนื่องจากการย้อนกลับ Burrows-Wheeler Transform มีความซับซ้อนเชิงคำนวณเทียบเท่ากับการเข้ารหัส.

4. ทำไม BZIP2 ถึงกำลังสูญเสียความนิยม

ในโครงสร้างพื้นฐานสมัยใหม่ BZIP2 พบว่าตัวเองอยู่ในตำแหน่งกึ่งกลางที่อึดอัด:

  1. ชนะเรื่องความเร็วโดย GZIP: หากความหน่วงของการประมวลผลหรือการใช้ CPU ต่ำเป็นสิ่งสำคัญ GZIP จะเร็วกว่าอย่างมีนัยสำคัญ.
  2. ชนะเรื่องความหนาแน่นโดย XZ: หากการประหยัดแบนด์วิดท์และประสิทธิภาพการจัดเก็บเป็นสิ่งสำคัญ XZ จะสร้างไฟล์บีบอัดที่เล็กกว่ามาก.
  3. ชนะเรื่องความเร็วในการคลายบีบอัดโดยทั้งสอง: ในระบบการส่งมอบซอฟต์แวร์ ลูกค้าต้องรับโทษการใช้ CPU ที่วัดได้เมื่อสกัดไฟล์ .tar.bz2 เทียบกับ .tar.gz หรือ .tar.xz.

ผลที่ตามมาคือ การแจกจ่ายลีนุกซ์หลัก (รวมถึง Debian, Arch และ Fedora) ได้ย้ายการแจกจ่ายแพ็กเกจอย่างเป็นทางการและ tarball ของเคอร์เนลจาก BZIP2 ไปยัง XZ (และล่าสุดคือ Zstandard สำหรับการดำเนินงานแบบรันไทม์).

5. การใช้งานบรรทัดคำสั่งอย่างเป็นจริง

การรวม Tar (กระบวนการทำงานที่พบบ่อยที่สุด)

การทำงานของ GNU tar รุ่นใหม่จะตรวจจับรูปแบบการบีบอัตโนมัติตามส่วนขยายของไฟล์ แต่การใช้แฟล็กอย่างชัดเจนยังคงเป็นแนวปฏิบัติมาตรฐาน:

# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/

# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/

# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/

# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*

การบีบอัดไฟล์แบบแยกส่วน

เพื่อบีบอัดไฟล์เดี่ยวโดยไม่ต้องรวมเป็นกลุ่ม:

# Compress keeping the original file intact (-k)
gzip -k access.log      # Output: access.log.gz
bzip2 -k access.log     # Output: access.log.bz2
xz -k access.log        # Output: access.log.xz

# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz

การใช้ระบบหลายคอร์

โดยค่าเริ่มต้น การทำงานแบบ single-thread ของเครื่องมือต่าง ๆ จะใช้เพียงหนึ่งคอร์ของ CPU หากคุณกำลังบีบอัดไฟล์อาร์ไคฟ์หลายกิกะไบต์บนเซิร์ฟเวอร์หลายคอร์สมัยใหม่ การประมวลผลแบบ single-thread อาจใช้เวลาหลายชั่วโมง

  • XZ Multi-threading: รองรับโดยเนทีฟผ่าน -T หรือ --threads:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • Parallel GZIP (pigz): ตัวทดแทนที่สามารถใช้ได้ทันทีซึ่งใช้ทุกคอร์ของ CPU สำหรับการทำงานของ GZIP:
    pigz -k database_dump.sql
    
  • Parallel BZIP2 (pbzip2): การทำงานแบบหลายเธรดสำหรับ BZIP2:
    pbzip2 -k database_dump.sql
    

6. วิธีการเลือก: กรอบการตัดสินใจเชิงปฏิบัติ

เลือกเครื่องมือของคุณตามข้อจำกัดหลักของกระบวนการทำงาน:

ใช้ GZIP หาก:

  • คุณกำลังตั้งค่าการบีบอัดสตรีมแบบเรียลไทม์หรือการส่งข้อมูลผ่านเครือข่ายที่อัตราการส่งข้อมูลเป็นปัจจัยจำกัด.
  • คุณกำลังจัดการการหมุนเวียนบันทึกอัตโนมัติ (logrotate) บนเซิร์ฟเวอร์การผลิตที่ต้องสำรองทรัพยากร CPU สำหรับงานแอปพลิเคชัน
  • ต้องการความพกพาสูงสุดระหว่างระบบฝังตัวแบบเก่าและอิมเมจฐานมาตรฐาน

ใช้ XZ หาก:

  • คุณกำลังเผยแพร่ artifact การปล่อย, การสร้างเคอร์เนล, อิมเมจฐานของคอนเทนเนอร์ หรือที่เก็บแพ็กเกจแบบสแตติกที่ถูกดาวน์โหลดบ่อยโดยบุคคลภายนอก
  • คุณกำลังเตรียมคลังเก็บข้อมูลเย็นระยะยาว (การสำรองข้อมูลนอกสถานที่รายสัปดาห์/รายเดือน) ที่ค่าใช้จ่ายการจัดเก็บสูงกว่าต้นทุนการบีบอัดครั้งเดียว
  • คุณต้องการไฟล์ขนาดเล็ก แต่ผู้ใช้ของคุณยังคงต้องการการดาวน์โหลดที่เร็วและเวลาการแตกไฟล์ที่รวดเร็ว

เก็บ BZIP2 ไว้เฉพาะเมื่อ:

  • คุณกำลังรักษาความเข้ากันได้ย้อนหลังกับสคริปต์เก่า, ขั้นตอนการกู้คืนสำรองข้อมูลที่มีอยู่, หรืออุปกรณ์ซอฟต์แวร์ที่ไม่มีตัวถอดรหัส XZ

7. คำถามที่พบบ่อย (FAQ)

Q1. รูปแบบใดให้ขนาดไฟล์บีบอัดที่เล็กที่สุด? XZ ให้ขนาดไฟล์บีบอัดที่เล็กที่สุดอย่างต่อเนื่องในสามรูปแบบ เนื่องจากมีหน้าต่างพจนานุกรม LZMA2 ที่ใหญ่กว่า

Q2. XZ ช้ากว่า GZIP หรือไม่เมื่อทำการแตกไฟล์? XZ ช้ากว่า GZIP เล็กน้อยเท่านั้นในการแตกไฟล์, แต่เร็วกว่า BZIP2 อย่างมาก

Q3. GZIP และ XZ สามารถใช้ประโยชน์จากหลายคอร์ของ CPU ได้หรือไม่? XZ รองรับการทำงานหลายเธรดโดยใช้แฟล็ก -T0 ในขณะที่ GZIP สามารถทำงานแบบขนานบนหลายคอร์ได้โดยใช้ยูทิลิตี้ pigz แทน.

Q4. ทำไมการแจกจ่าย Linux จึงกำลังละทิ้ง BZIP2? การแจกจ่ายส่วนใหญ่ได้ยกเลิกการใช้ BZIP2 เนื่องจาก XZ บีบอัดได้ขนาดเล็กกว่าและแตกไฟล์ได้เร็วกว่า ในขณะที่ GZIP ยังคงเร็วกว่าในการทำงานที่ต้องการความเร็ว.

Q5. การตั้งค่าระดับการบีบอัดที่สูงขึ้นเช่น -9 ทำให้เห็นความแตกต่างหรือไม่? การตั้งค่าระดับ -9 ให้การลดขนาดเพียงประมาณ 1% ถึง 3% โดยเฉลี่ยในขณะที่ทำให้การใช้วงจร CPU และหน่วยความจำเพิ่มขึ้นอย่างมาก.

ดูเพิ่มเติม