รูปแบบไฟล์เก็บถาวร GZIP

GZIP เป็นรูปแบบไฟล์และแอปพลิเคชันซอฟต์แวร์ยอดนิยมที่ใช้สำหรับการบีบอัดและคลายการบีบอัดไฟล์ ได้รับการพัฒนาเป็นอัลกอริธึมการบีบอัดโอเพ่นซอร์สฟรีโดย Jean-Loup Gailly และ Mark Adler ในช่วงต้นทศวรรษ 1990 ชื่อ “GZIP” ย่อมาจาก GNU ZIP ซึ่งบ่งบอกถึงความเกี่ยวข้องกับโครงการ GNU
การบีบอัด GZIP ทำงานโดยการลดขนาดไฟล์ ทำให้ถ่ายโอนผ่านเครือข่ายหรือจัดเก็บบนดิสก์ได้ง่ายขึ้น สามารถบีบอัดข้อมูลได้โดยการแทนที่สตริงข้อมูลซ้ำๆ ด้วยการอ้างอิง ซึ่งช่วยลดความซ้ำซ้อนและขนาดไฟล์โดยรวม GZIP มีประสิทธิภาพเป็นพิเศษในการบีบอัดไฟล์ที่เป็นข้อความ เช่น HTML, CSS, JavaScript, XML และ JSON แต่ยังสามารถใช้เพื่อบีบอัดไฟล์ประเภทอื่นๆ ได้ด้วย

เกี่ยวกับข้อมูลการเก็บถาวร GZIP

ข้อมูลการเก็บถาวร GZIP หมายถึงข้อมูลเมตาและข้อมูลที่มีอยู่ในไฟล์ที่ถูกบีบอัดโดยใช้อัลกอริทึมการบีบอัด GZIP โดยทั่วไปไฟล์เก็บถาวร GZIP จะมีข้อมูล เช่น คุณลักษณะของไฟล์ การประทับเวลา วิธีการบีบอัด และข้อมูลอื่น ๆ ที่เกี่ยวข้องที่จำเป็นสำหรับการขยายการบีบอัดและการกู้คืนไฟล์ ข้อมูลเมตานี้มีความสำคัญอย่างยิ่งต่อการระบุและประมวลผลไฟล์บีบอัดอย่างเหมาะสม
นอกจากนี้ ข้อมูลที่เก็บถาวรของ GZIP ยังอาจรวมถึงรายละเอียดเกี่ยวกับกระบวนการบีบอัด เช่น ระดับการบีบอัด เช็คซัม และแฟล็กหรือตัวเลือกเพิ่มเติมใด ๆ ที่ใช้ระหว่างการบีบอัด ข้อมูลนี้จำเป็นสำหรับการรับรองความสมบูรณ์และความถูกต้องของข้อมูลที่บีบอัดเมื่อทำการขยายขนาด โดยรวมแล้ว การทำความเข้าใจข้อมูลที่เก็บถาวรของ GZIP มีความสำคัญต่อการจัดการและการทำงานกับไฟล์บีบอัดอย่างมีประสิทธิภาพ ไม่ว่าจะเป็นสำหรับการจัดเก็บข้อมูล การส่งผ่านเครือข่าย หรือวัตถุประสงค์ในการเก็บถาวร

วิวัฒนาการของรูปแบบไฟล์เก็บถาวร GZIP

รูปแบบไฟล์เก็บถาวร GZIP มีรากฐานมาจากปลายทศวรรษ 1980 เมื่อ Jean-loup Gailly และ Mark Adler พัฒนาอัลกอริธึมการบีบอัด GZIP ซึ่งเป็นส่วนหนึ่งของโครงการ GNU GZIP ย่อมาจาก GNU ZIP ซึ่งสะท้อนถึงต้นกำเนิดภายในโครงการ GNU เป้าหมายคือการสร้างเครื่องมือบีบอัดที่สามารถลดขนาดไฟล์ได้อย่างมีประสิทธิภาพในขณะที่ยังคงความเข้ากันได้ในระบบคอมพิวเตอร์ต่างๆ
Jean-loup Gailly และ Mark Adler พัฒนาโปรแกรมให้เป็นทางเลือกฟรีแทนยูทิลิตี้การบีบอัดที่พบในระบบ Unix ยุคแรกๆ ได้รับการออกแบบมาเพื่อเป็นส่วนหนึ่งของโครงการ GNU ดังนั้น “g” ใน gzip การเปิดตัวครั้งแรก เวอร์ชัน 0.1 เผยแพร่สู่สาธารณะเมื่อวันที่ 31 ตุลาคม พ.ศ. 2535 ตามด้วยเวอร์ชัน 1.0 ในเดือนกุมภาพันธ์ พ.ศ. 2536

โครงสร้าง GZIP

GZIP ใช้อัลกอริธึม DEFLATE ซึ่งผสานเทคนิคการเข้ารหัส LZ77 และ Huffman DEFLATE ได้รับการพัฒนาเพื่อแทนที่ LZW และอัลกอริธึมการบีบอัดอื่นๆ ที่เต็มไปด้วยสิทธิบัตร ซึ่งจำกัดประสิทธิภาพของการบีบอัดและยูทิลิตี้การเก็บถาวรที่คล้ายกันซึ่งแพร่หลายในขณะนั้น รูปแบบไฟล์ GZIP มีโครงสร้างที่กำหนดไว้อย่างดีซึ่งประกอบด้วยสามส่วนหลัก:

  • ส่วนหัว (10 ไบต์): ส่วนนี้จะให้ข้อมูลที่จำเป็นเกี่ยวกับไฟล์เก็บถาวรและเนื้อหาในไฟล์ นี่คือรายละเอียดข้อมูลส่วนหัว
  • Magic Number (4 ไบต์): ข้อมูลนี้ระบุว่าไฟล์เป็นไฟล์เก็บถาวร GZIP มีค่าฐานสิบหกเฉพาะ (1f 8b) ที่เครื่องมือคลายการบีบอัดรู้จัก
  • วิธีการบีบอัด (1 ไบต์): โดยทั่วไปไบต์นี้จะเก็บค่า 8 ซึ่งบ่งชี้ถึงอัลกอริธึมการบีบอัด DEFLATE ที่ GZIP ใช้
  • แฟล็กส่วนหัว (1 ไบต์): แฟล็กเหล่านี้ควบคุมลักษณะเฉพาะของการขยายการบีบอัด เช่น การเข้ารหัสชื่อไฟล์ หรือการแสดงความคิดเห็น
  • เวลาในการสร้าง (4 ไบต์): ส่วนนี้จะจัดเก็บการประทับเวลา Unix ที่ระบุเวลาที่สร้างไฟล์เก็บถาวร
  • CRC-32 (4 ไบต์): ค่า Cyclic Redundancy Check นี้ใช้สำหรับการตรวจจับข้อผิดพลาดระหว่างการขยายการบีบอัด โดยคำนวณจากข้อมูลที่ไม่มีการบีบอัด และอนุญาตให้ซอฟต์แวร์คลายการบีบอัดตรวจสอบความสมบูรณ์ของไฟล์ที่แยกออกมา

ประโยชน์ของรูปแบบนี้

  • การบีบอัดแบบไม่สูญเสียข้อมูล: GZIP บีบอัดข้อมูลโดยไม่ทำให้ข้อมูลสูญหาย ต่างจากเทคนิคการบีบอัดบางอย่าง ไฟล์ต้นฉบับสามารถสร้างขึ้นใหม่ได้อย่างสมบูรณ์แบบหลังการบีบอัด นี่เป็นสิ่งสำคัญสำหรับเอกสาร รูปภาพ หรือโค้ดที่สำคัญซึ่งการรักษาความสมบูรณ์ของข้อมูลเป็นสิ่งสำคัญ
  • ความเข้ากันได้ในวงกว้าง: จุดแข็งที่ใหญ่ที่สุดประการหนึ่งของ GZIP คือการนำไปใช้อย่างแพร่หลาย ได้รับการสนับสนุนโดยระบบปฏิบัติการส่วนใหญ่ โปรแกรมอรรถประโยชน์การเก็บถาวร (WinRAR, 7-Zip) และเว็บเซิร์ฟเวอร์ ซึ่งจะทำให้คุณสามารถเปิดไฟล์ GZIP บนแพลตฟอร์มต่างๆ ได้อย่างง่ายดายโดยไม่ต้องใช้ซอฟต์แวร์เฉพาะ นอกจากนี้ GZIP ยังได้รับการสนับสนุนอย่างกว้างขวางในระบบปฏิบัติการต่างๆ รวมถึงระบบที่ใช้ Unix, Linux, Windows และ macOS ความเข้ากันได้ข้ามแพลตฟอร์มนี้ทำให้มั่นใจได้ว่าไฟล์ที่บีบอัด GZIP จะสามารถสร้างและแตกไฟล์ได้อย่างราบรื่นในสภาพแวดล้อมที่แตกต่างกัน
  • การบีบอัดแบบสตรีมได้: GZIP รองรับการบีบอัดสตรีม ทำให้สามารถบีบอัดหรือแตกไฟล์ได้ทันทีโดยไม่ต้องรอให้ประมวลผลไฟล์ทั้งหมด ทำให้เหมาะสำหรับสถานการณ์ที่มีการสร้างหรือส่งข้อมูลอย่างต่อเนื่อง เช่น การสื่อสารผ่านเครือข่ายและการดำเนินการสำรองข้อมูล
  • มาตรฐานแบบเปิด: GZIP เป็นมาตรฐานแบบเปิดและนำมาใช้กันอย่างแพร่หลายสำหรับการบีบอัดไฟล์ โดยมีข้อกำหนดที่เปิดเผยต่อสาธารณะ การเปิดกว้างนี้ส่งเสริมการทำงานร่วมกันและความเข้ากันได้ระหว่างแอปพลิเคชันซอฟต์แวร์และระบบต่างๆ ส่งเสริมระบบนิเวศที่มีชีวิตชีวาของเครื่องมือและไลบรารีสำหรับการทำงานกับไฟล์บีบอัด GZIP โดยทั่วไปการใช้ GZIP นั้นตรงไปตรงมา เครื่องมือและซอฟต์แวร์จำนวนมากบีบอัดหรือขยายขนาดไฟล์ในรูปแบบนี้โดยอัตโนมัติ นอกจากนี้ กระบวนการคลายการบีบอัดยังมีประสิทธิภาพและต้องใช้ทรัพยากรน้อยที่สุด

การดำเนินการที่รองรับการเก็บถาวร GZIP

Aspose.ZIP อนุญาตให้ผู้ใช้แยกรายการเฉพาะหรือไฟล์เก็บถาวรทั้งหมด สำหรับ Aspose.ZIP สำหรับ .NET คุณสามารถใช้ GzipArchiveClass เพื่อเปิดไฟล์ .gz จากนั้นวนซ้ำรายการต่างๆ และแยกไฟล์เหล่านั้นไปยังตำแหน่งที่ต้องการ สำหรับ Aspose.ZIP สำหรับ Java วิธีการที่คล้ายกันโดยใช้ GzipArchive เพื่อเปิดไฟล์ .gz และแยกรายการ

ไฟล์ GZIP - โครงสร้างภายใน

ไฟล์เก็บถาวร GZIP เปรียบเสมือนแพ็คเกจที่ห่ออย่างประณีต เริ่มต้นด้วยส่วนหัวขนาด 10 ไบต์ที่แนะนำรูปแบบและวิธีการบีบอัด หัวใจอยู่ที่ส่วนข้อมูลที่บีบอัด ซึ่งย่อลงโดยใช้อัลกอริธึมที่ชาญฉลาด สุดท้าย ส่วนท้ายขนาด 8 ไบต์จะตรวจสอบความสมบูรณ์ของข้อมูลด้วยเช็คซัม เพื่อให้มั่นใจว่าไฟล์ของคุณจะมาถึงอย่างปลอดภัยหลังจากการคลายการบีบอัด

ไฟล์ GZIP - โครงสร้างภายใน

โครงสร้างเอกสารเก่าภายใน

  • ข้อมูลเมตาของไฟล์ - คล้ายกับไฟล์เก็บถาวร tar แต่ละไฟล์จะจัดเก็บข้อมูลพื้นฐาน เช่น เวลาในการแก้ไขและการอนุญาต อย่างไรก็ตาม ส่วนนี้มีความยืดหยุ่นและอนุญาตให้ละเว้นหรือรวมรายละเอียดเพิ่มเติม เช่น รายการควบคุมการเข้าถึง (ACL) หรือคุณลักษณะเพิ่มเติม (EA) ตามความต้องการของคุณ ขอแนะนำให้รวมฟังก์ชันแฮชที่รัดกุม (เช่น SHA1) สำหรับไฟล์ปกติเพื่อให้มั่นใจในความสมบูรณ์ของข้อมูล
  • สตรีมเนื้อหาหลายรายการ - ต่างจากไฟล์เก็บถาวรแบบเดิม ไฟล์สามารถมีสตรีมข้อมูลได้มากกว่าหนึ่งสตรีมภายในไฟล์ข้อมูลภายใน สิ่งนี้มีประโยชน์สำหรับการจัดเก็บแอตทริบิวต์เพิ่มเติมหรือทางแยกทรัพยากรที่เกี่ยวข้องกับไฟล์
  • ส่วนหัว - ไฟล์ดัชนีภายในเก็บส่วนหัวของไฟล์ สะท้อนส่วนหัวที่กระจัดกระจายไปทั่วไฟล์ข้อมูลภายใน แต่เมื่อจัดเก็บแยกกัน ส่วนหัวของดัชนีจะต้องอ้างอิงตำแหน่งเริ่มต้นของข้อมูลที่เกี่ยวข้องภายในไฟล์ข้อมูล นอกจากนี้ รายการไดเร็กทอรีในดัชนีจะแสดงรายการไฟล์ที่มีอยู่และออฟเซ็ตที่เกี่ยวข้องภายในดัชนีไฟล์ภายใน
  • เหตุผลสำหรับข้อมูลเมตาที่ซ้ำกัน - ตัวเลือกการออกแบบนี้ช่วยให้มั่นใจได้ทั้งการสตรีม/ถอดรหัสข้อมูลที่มีประสิทธิภาพ และการเข้าถึงไฟล์แบบสุ่ม นอกจากนี้ ข้อมูลเมตายังบีบอัดได้ดี ส่งผลให้มีค่าใช้จ่ายในการจัดเก็บข้อมูลน้อยที่สุด การทดสอบแสดงให้เห็นว่าโดยทั่วไปแล้วข้อมูลเมตาจะใช้พื้นที่จัดเก็บข้อมูลน้อยกว่า 0.3% ทำให้การแลกเปลี่ยนนั้นคุ้มค่า
  • ส่วนหัวของบล็อก - ส่วนหัวของบล็อก คล้ายกับไฟล์ภายนอก ประกอบด้วยข้อมูลขนาดบล็อกและลำดับตัวระบุที่ไม่ซ้ำกัน

ตัวอย่างการใช้ GZIP

Aspose.ZIP API ช่วยให้แยกไฟล์เก็บถาวรในแอปพลิเคชันของคุณได้โดยไม่จำเป็นต้องใช้แอปพลิเคชันบุคคลที่สามอื่นๆ Aspose.ZIP API จัดให้มีคลาส GzipArchive เพื่อทำงานกับไฟล์เก็บถาวร GZIP

GZIP with compress only single source via C#

Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (GzipArchive archive = new GzipArchive())
        {
            archive.SetSource(source);
            archive.Save(«archive.gz);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

ข้อมูลเพิ่มเติมเกี่ยวกับไฟล์เก็บถาวร GZIP

มีคนถาม

1. GZIP คืออะไร?

GZIP (ไฟล์บีบอัด GNU) เป็นรูปแบบไฟล์ยอดนิยมที่จะลดขนาดไฟล์เพื่อให้จัดเก็บและถ่ายโอนได้ง่ายขึ้น

2. การบีบอัด GZIP เปรียบเทียบกับรูปแบบอื่นๆ เช่น ZIP อย่างไร

โดยทั่วไป GZIP จะมีอัตราส่วนการบีบอัดที่สูงกว่าเมื่อเทียบกับ ZIP โดยเฉพาะเมื่อบีบอัดไฟล์แบบข้อความ อย่างไรก็ตาม ไฟล์เก็บถาวร ZIP มักจะรองรับไฟล์และไดเร็กทอรีหลายไฟล์ ทำให้มีความหลากหลายมากขึ้นสำหรับการรวมไฟล์หลายไฟล์เข้าด้วยกัน .

3. GZIP สามารถบีบอัดหลายไฟล์เป็นไฟล์เก็บถาวรเดียวได้หรือไม่

GZIP ได้รับการออกแบบมาเพื่อบีบอัดไฟล์เดียว ไม่ใช่หลายไฟล์หรือไดเร็กทอรี อย่างไรก็ตาม เป็นเรื่องปกติที่จะใช้เครื่องมืออย่าง tar ร่วมกับ GZIP เพื่อสร้าง tarball tar archive จากนั้น บีบอัดโดยใช้ GZIP เพื่อสร้างไฟล์บีบอัดไฟล์เดียว