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

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 พบว่าตัวเองอยู่ในตำแหน่งกึ่งกลางที่อึดอัด:
- ชนะเรื่องความเร็วโดย GZIP: หากความหน่วงของการประมวลผลหรือการใช้ CPU ต่ำเป็นสิ่งสำคัญ GZIP จะเร็วกว่าอย่างมีนัยสำคัญ.
- ชนะเรื่องความหนาแน่นโดย XZ: หากการประหยัดแบนด์วิดท์และประสิทธิภาพการจัดเก็บเป็นสิ่งสำคัญ XZ จะสร้างไฟล์บีบอัดที่เล็กกว่ามาก.
- ชนะเรื่องความเร็วในการคลายบีบอัดโดยทั้งสอง: ในระบบการส่งมอบซอฟต์แวร์ ลูกค้าต้องรับโทษการใช้ 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 และหน่วยความจำเพิ่มขึ้นอย่างมาก.