ไฟล์เก็บถาวร GZIP (.gz)
IETF มาตรฐานGzip (GZ) คือยูทิลิตี้การบีบอัดและรูปแบบไฟล์มาตรฐานของ GNU ซึ่งใช้งานอย่างแพร่หลายในระบบปฏิบัติการ Unix และเซิร์ฟเวอร์เว็บ HTTP สำหรับการบีบอัดไฟล์และทรัพยากรเว็บอย่างรวดเร็ว.
แปลง TAR เป็น GZ
ตัวแปลงจาก TAR เป็น GZ ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GZ โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GZ โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
1F 8B 08การแสดงผลรูปแบบ ASCII: ..\x08
มาตรฐาน: IETF RFC 1952
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ส่วนหัว 10 ไบต์ (magic 0x1F 0x8B, method 8, flags, mtime, OS) ตามด้วยสตรีม DEFLATE และส่วนท้าย 8 ไบต์ |
| การบีบอัด | อัลกอริทึม DEFLATE (หน้าต่างเลื่อน LZ77 + การเข้ารหัส Huffman) |
| การจัดลำดับไบต์ | จำนวนเต็มในส่วนหัวและส่วนท้ายแบบ Little-Endian |
| พื้นที่สี | ไม่เกี่ยวข้อง (คอนเทนเนอร์ไฟล์เก็บถาวร) |
| ช่องสัญญาณและโครงสร้าง | สตรีมไบต์ที่บีบอัดสำหรับไฟล์เดียว |
| ขนาดสูงสุด | บันทึกขนาดหลังคลายการบีบอัดแบบ modulo 2^32 (รองรับความยาวสตรีมไม่จำกัด) |
| ความโปร่งใส | รักษาข้อมูลโดยไม่สูญเสียและตรงระดับบิต 100% |
| การสตรีมและแบบโปรเกรสซีฟ | เล่นสตรีมผ่าน pipe และเครือข่าย HTTP ตามลำดับในรอบเดียว |
ตารางเปรียบเทียบทางเทคนิค: GZ กับคู่แข่ง
| คุณลักษณะทางเทคนิค | GZ (ปัจจุบัน) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| ความเร็วในการคลายการบีบอัด | เร็ว (~300 MB/s) | ช้า (~40 MB/s) | เร็วมาก (~400 MB/s) | เร็วสุดขีด (>1.5 GB/s) |
| ใช้งานอย่างแพร่หลายบนเว็บ | เบราว์เซอร์และเซิร์ฟเวอร์ทั้งหมด 100% | ไม่รองรับบนเว็บเบราว์เซอร์ | รองรับผ่าน HTTPS ในเบราว์เซอร์ทั้งหมด | การรองรับจากเบราว์เซอร์และเซิร์ฟเวอร์กำลังเพิ่มขึ้น |
| การจัดเก็บไฟล์หลายไฟล์ในแพ็กเกจเดียว | ต้องใช้คอนเทนเนอร์ TAR (.tar.gz) | ต้องใช้คอนเทนเนอร์ TAR (.tar.bz2) | สตรีมดิบหรือคอนเทนเนอร์กำหนดเอง | ต้องใช้คอนเทนเนอร์ TAR (.tar.zst) |
| การตรวจสอบค่าความถูกต้อง | CRC 32 บิต (CRC-32) | CRC 32 บิตต่อบล็อก | ไม่มีในสตรีม | xxHash 64 บิต |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ข้อผิดพลาดในการแตกไฟล์: 'gzip: stdin: unexpected end of file'
สาเหตุหลัก: การสิ้นสุดการถ่ายโอนไฟล์ก่อนกำหนดทำให้ตัดสตรีม DEFLATE หรือส่วนท้าย CRC32 ขนาด 8 ไบต์
การกู้คืน: ดึงข้อมูลบางส่วนโดยใช้ 'gzip -d --keep broken.gz' หรือ File2File.app Gzip Extractor
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัววิเคราะห์ Gzip ประมวลผลส่วนหัวที่ผู้ใช้ควบคุมและบิตสตรีม DEFLATE ซึ่งต้องได้รับการปกป้องจากระเบิดการคลายการบีบอัด
เวกเตอร์การโจมตีที่ทราบ
- ระเบิดการคลายการบีบอัด (zip bomb) ที่ขยายข้อมูล Gzip ขนาดเมกะไบต์ให้กลายเป็นพื้นที่ดิสก์หลายร้อยจิกะไบต์
- บัฟเฟอร์ล้นเมื่ออ่านสตริงชื่อไฟล์ต้นฉบับที่เป็นตัวเลือกจากส่วนหัว
- จำนวนเต็มล้นระหว่างการเปรียบเทียบการตรวจสอบ CRC 32 บิต
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: กำหนดโควต้าการคลายการบีบอัดอย่างเข้มงวดและเพดานหน่วยความจำสูงสุดในบริการรับข้อมูลอัตโนมัติ
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- เกณฑ์มาตรฐานสากลสำหรับการบีบอัดเว็บ HTTP ('Content-Encoding: gzip') ที่รองรับโดยไคลเอนต์เว็บ 100%
- เก็บรักษาเวลาที่แก้ไขไฟล์ต้นฉบับและชื่อไฟล์ต้นฉบับ (หากมี) ไว้ในส่วนหัวขนาด 10 ไบต์
- การคลายการบีบอัดใช้หน่วยประมวลผล (CPU) น้อย จึงทำงานได้อย่างราบรื่นบนอุปกรณ์มือถือและเราเตอร์ที่ใช้พลังงานต่ำ
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- การบีบอัดไฟล์เดี่ยวเท่านั้น: ไม่สามารถบีบอัดไฟล์หรือไดเรกทอรีหลายไฟล์ได้โดยไม่ต้องรวมเข้ากับคอนเทนเนอร์ TAR ก่อน
- อัตราส่วนการบีบอัดต่ำกว่าอัลกอริทึมสมัยใหม่ เช่น Brotli และ Zstandard บนข้อความเว็บสมัยใหม่
- ฟิลด์ขนาดข้อมูลก่อนบีบอัดที่ส่วนท้ายมีขนาด 32 บิตและใช้ค่า modulo 2^32 ทำให้เกิดข้อผิดพลาดในการแสดงผลเมื่อไฟล์มีขนาดใหญ่กว่า 4 GB
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ไบต์เมจิก 0x1F 0x8B ถูกเลือกเพราะ 0x1F เป็นไบต์แรกของไฟล์ 'compress' บน Unix ในอดีต ส่วน 0x8B ใช้ระบุ Gzip
- เว็บไซต์มากกว่า 80% บนอินเทอร์เน็ตใช้การบีบอัด Gzip เพื่อส่งหน้าเว็บไปยังเบราว์เซอร์
- Jean-loup Gailly เขียนโค้ดการบีบอัดในขณะที่ Mark Adler เขียนโค้ดการคลายการบีบอัด (inflate); ทั้งคู่ได้รับรางวัล ACM Software System Award
คำถามทางเทคนิคที่พบบ่อย
ทำไมฉันจึงไม่สามารถบีบอัดโฟลเดอร์ด้วย Gzip ได้?
Gzip ถูกออกแบบมาเพื่อบีบอัดสตรีมไบต์เดี่ยวๆ การจะบีบอัดโฟลเดอร์ ระบบยูนิกซ์ (Unix) จะรวมโฟลเดอร์เป็นไฟล์ .tar เดียวเสียก่อน แล้วจึงบีบอัดด้วย Gzip เพื่อสร้างเป็นไฟล์ .tar.gz
ความแตกต่างระหว่าง .gz และ .zip คืออะไร?
.zip เป็นรูปแบบไฟล์จัดเก็บ (archive format) ที่รวบรวมไฟล์หลายไฟล์เข้าด้วยกันพร้อมดัชนีไดเรกทอรี ส่วน .gz จะบีบอัดไฟล์เดี่ยวๆ เท่านั้น และมักใช้คู่กับ tar บนระบบยูนิกซ์ (Unix)
ฉันจะคลายไฟล์ .gz บน Windows หรือ Mac ได้อย่างไร?
ใช้ File2File.app เพื่อคลายไฟล์ .gz ทันทีในเว็บเบราว์เซอร์ของคุณโดยไม่ต้องติดตั้งซอฟต์แวร์ใดๆ