อ่าน 5 นาที
จีซิป
gzip เป็น รูปแบบไฟล์ และ โปรแกรม บีบอัดไฟล์ โปรแกรมนี้ใช้ อัลกอริธึม Deflate ในการบีบอัดและคลายไฟล์เดียวโดยใช้ รูปแบบไฟล์ gzip
จีซิป
| gzip (ซอฟต์แวร์) | |
|---|---|
| ผู้เขียนต้นฉบับ | |
| นักพัฒนา | โครงการ GNU |
| ปล่อย | 31 ตุลาคม 2535 |
| เวอร์ชันเสถียร | 1.14 [ 1 ] |
| เขียนเป็น | ซี |
| ระบบปฏิบัติการ | คล้าย Unix , Plan 9 , Inferno |
| พิมพ์ | การบีบอัดข้อมูล |
| ใบอนุญาต | จีพีแอล-3.0 หรือเวอร์ชันที่ใหม่กว่า |
| เว็บไซต์ | gnu.org/software/gzip [ 2 ] gzip |
| ที่เก็บข้อมูล | savannah.gnu.org/projects/gzip [ |
gzipเป็นรูปแบบไฟล์และโปรแกรมบีบอัดไฟล์ โปรแกรมนี้ใช้ อัลกอริธึม Deflateในการบีบอัดและคลายไฟล์เดียวโดยใช้รูปแบบไฟล์ gzip
gzip เปิดตัวในปี 1992 ในฐานะซอฟต์แวร์ฟรีที่ใช้แทน โปรแกรม compressเนื่องจากอัลกอริทึมการบีบอัด LZW ของมันได้รับการคุ้มครองโดยสิทธิบัตรจาก Unisys และ IBM [4] ซึ่งหมดอายุในปี 2003 และ 2004 [ 5 ] Jean - Loup Gailly ออกแบบรูปแบบไฟล์ gzip [ 6 ]ซึ่งต่อมาได้รับการกำหนดโดย RFC 1952 [ 7 ]และเป็นผู้เขียนโปรแกรม gzip ในตอนแรกMark Adlerเขียนส่วนการคลายการบีบอัด ปัจจุบัน gzip ได้รับการพัฒนาโดยโครงการGNU [ 8 ]
เนื่องจากรูปแบบไฟล์นี้สามารถคลายการบีบอัดได้โดยใช้อัลกอริธึมแบบสตรีมมิ่งจึงนิยมใช้ในเทคโนโลยีแบบสตรีมมิ่ง เช่นโปรโตคอลเว็บการแลกเปลี่ยนข้อมูลและETL (ในท่อส่งข้อมูลมาตรฐาน )
รูปแบบไฟล์
| gzip (รูปแบบไฟล์) | |
|---|---|
| นามสกุลไฟล์ | .gz, .tgz,.gzip |
| สื่อประเภทอินเทอร์เน็ต | application/gzip[ 9 ] |
| ตัวระบุประเภทมาตรฐาน (UTI) |
|
| เลขมหัศจรรย์ |
|
| ข้อจำกัดด้านขนาด | ไม่จำกัด |
| พัฒนาโดย | ฌอง-ลูป ไกยี |
| ประเภทของรูปแบบ | การบีบอัดข้อมูล |
| การบีบอัด | ไม่มีการสูญเสียข้อมูล |
| ภาชนะสำหรับ | กระแสลมออก |
| มาตรฐาน | อาร์เอฟซี 1952 |

ไฟล์ gzip (ตามที่อธิบายไว้ในตารางด้านล่าง) ประกอบด้วยส่วนหัว ขนาด 10 ไบต์ ฟิลด์ส่วนหัวเพิ่มเติมที่ ไม่บังคับ ข้อมูลที่บีบอัด ด้วย Deflateและส่วนท้าย ขนาด 8 ไบต์
แม้ว่าสตรีมหลายสตรีมอาจถูกรวมเข้าด้วยกัน (ไฟล์ gzip จะถูกคลายการบีบอัดและรวมเข้าด้วยกันราวกับว่าเดิมเป็นไฟล์เดียว) [ 10 ]โดยปกติแล้วจะมีการบีบอัดเพียงไฟล์เดียว[ 11 ]โดยทั่วไปแล้วไฟล์เก็บถาวรที่ถูกบีบอัดจะถูกสร้างขึ้นโดยการรวบรวมชุดไฟล์เข้าไว้ใน ไฟล์เก็บถาวร tar เดียว (เรียกอีกอย่างว่าtarball ) [ 12 ]จากนั้นจึงบีบอัดไฟล์เก็บถาวรนั้นด้วย gzip ไฟล์ที่ถูกบีบอัดขั้นสุดท้ายมักจะมีนามสกุล.tar.gz, .tgz, .gz, หรือ.gzip.
gzip ไม่ควรสับสนกับ รูปแบบไฟล์เก็บถาวร ZIPซึ่งใช้DEFLATE เช่นกัน รูปแบบ ZIP สามารถเก็บชุดไฟล์ได้โดยไม่ต้องใช้โปรแกรมบีบอัดภายนอก แต่มีขนาดกะทัดรัดน้อยกว่าไฟล์ tarball ที่บีบอัด ซึ่งมีข้อมูลเดียวกัน เนื่องจากบีบอัดไฟล์ทีละไฟล์และไม่สามารถใช้ประโยชน์จากความซ้ำซ้อนระหว่างไฟล์ได้ ( การบีบอัดแบบแข็ง ) รูปแบบไฟล์ gzip ไม่ควรสับสนกับรูปแบบของยูทิลิตี้ compress ซึ่งใช้ LZW และมีนามสกุล.Z.gzip อย่างไรก็ตาม ยูทิลิตี้ gunzip สามารถคลาย.Zไฟล์ ได้ [ 13 ]
โครงสร้างไฟล์
เอนเดียนเนสคือลิตเติลเอนเดียน[ 14 ]
| ออฟเซ็ต (ไบต์) | ฟิลด์[ 15 ] | ขนาด (ไบต์) | คำอธิบาย |
|---|---|---|---|
| 0 | รหัส 1 | 1 | เลขมหัศจรรย์ต้องเป็นเลข1F 8Bๆ |
| 1 | ไอดี2 | 1 | |
| 2 | ซีเอ็ม | 1 | วิธีการบีอัดต้องเป็น 8 (ลดลม) |
| 3 | เอฟแอลจี | 1 | แฟล็กบิตที่สงวนไว้ต้องเป็นศูนย์ |
| 4 | เอ็มไทม์ | 4 | เวลา Unixที่ไฟล์ถูกแก้ไขครั้งล่าสุดหากข้อมูลที่บีบอัดไม่ได้มาจากไฟล์MTIMEเวลา Unix ที่เริ่มการบีบอัดจะเป็นค่าที่แสดงอยู่ 0 หมายถึงไม่มีการประทับเวลา |
| 8 | เอ็กซ์เอฟแอล | 1 | ธง เพิ่มเติม
|
| 9 | โอเอส | 1 | ระบบไฟล์ที่เกิดการบีบอัด |
| 10 | เอ็กซ์เลน | 0 หรือ 2 | ฟิลด์พิเศษคือลำดับของฟิลด์ย่อยXLENคือขนาดเป็นไบต์ของฟิลด์พิเศษ ทั้งสองอย่างจะมีอยู่หากตั้งค่าแฟล็กFEXTRASI1 SI2 ไว้ ฟิลด์ย่อยแต่ละฟิลด์เริ่มต้นด้วย (ตัวระบุสองไบต์ โดยทั่วไปจะเป็นตัวอักษร ASCII สองตัวที่มี ค่า ช่วยจำ บางอย่าง ) ตามด้วยค่าสองไบต์LENที่ระบุจำนวนไบต์ที่เหลือในฟิลด์ย่อย รหัสฟิลด์ย่อยที่มีSI2 = 0ถูกสงวนไว้สำหรับการใช้งานในอนาคต |
| 12 | ช่องเพิ่มเติม | 0 หรือXLEN | |
| แตกต่างกันไป | ชื่อไฟล์ | 0 หรือแตกต่างกันไป | ชื่อไฟล์ที่ถูกบีบอัดซึ่งลงท้ายด้วยค่าว่างจะมีอยู่หาก มีการตั้งค่าแฟล็ก FNAMEเข้ารหัสเป็นISO 8859-1 ( latin-1) แปลงเป็นตัวพิมพ์เล็กใน ระบบไฟล์ ที่ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก ว่างเปล่าหากข้อมูลที่ถูกบีบอัดไม่ได้มาจากไฟล์ที่มีชื่อ |
| ความเห็นไฟล์ | 0 หรือแตกต่างกันไป | ข้อความแสดงความคิดเห็นไฟล์ที่ลงท้ายด้วยค่าว่าง (null) ซึ่งมีไว้สำหรับการอ่านของมนุษย์ จะปรากฏหากมีการตั้งค่าแฟล็กFCOMMENTlatin-1 เข้ารหัสเป็น ISO 8859-1 ( ) การขึ้นบรรทัดใหม่ควรใช้ตัวป้อนบรรทัดเดียว (LF) | |
| ซีอาร์ซี16 | 0 หรือ 2 | สองไบต์ที่มีค่าน้อยที่สุดของCRC-32 (ISO 3309) ของไบต์ทั้งหมดในไฟล์ gzip จนถึง (ไม่รวม) ฟิลด์นี้ จะปรากฏหากมีการตั้งค่าแฟล็ก FHCRC | |
| ข้อมูลที่ถูกบีบอัด | แตกต่างกันไป | ลดแรงดันลมในสตรีม | |
| ซีอาร์ซี32 | 4 | ค่า CRC-32 (ISO 3309) ของข้อมูลที่ยังไม่ได้บีบอัด | |
| ขนาด | 4 | ขนาด (เป็นไบต์) ของข้อมูลที่ไม่ได้บีบอัดโมดูลัส. |
การนำไปใช้
| NetBSD Gzip / FreeBSD Gzip | |
|---|---|
| นักพัฒนา | มูลนิธิเน็ตบีเอสดี |
| เขียนเป็น | ซี |
| พิมพ์ | การบีบอัดข้อมูล |
| ใบอนุญาต | ใบอนุญาต BSD แบบง่าย |
| ที่เก็บข้อมูล | cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/ |
มีการเขียนโปรแกรมเวอร์ชันต่างๆ ขึ้นมา เวอร์ชันที่รู้จักกันมากที่สุดคือเวอร์ชันของโครงการ GNU ที่ใช้ การเข้ารหัส Lempel-Ziv (LZ77) เวอร์ชัน gzip ของOpenBSD จริงๆ แล้วคือโปรแกรม บีบอัดซึ่งมีการเพิ่มการสนับสนุนรูปแบบ gzip ใน OpenBSD 3.4 ตัวอักษร "g" ในเวอร์ชันนี้หมายถึงgratis [ 16 ] FreeBSD , DragonFly BSDและNetBSD ใช้เวอร์ชันที่ ได้รับอนุญาตภายใต้ BSD แทนเวอร์ชัน GNU ซึ่งจริงๆ แล้วเป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับzlibที่ตั้งใจให้เข้ากันได้กับตัวเลือกของเวอร์ชัน GNU [ 17 ]เวอร์ชันเหล่านี้มาจากNetBSDและรองรับการคลายการบีบอัดของbzip2 และ รูปแบบ แพ็คของ Unix
โปรแกรมบีบอัดข้อมูลทางเลือกอีกโปรแกรมหนึ่งที่ให้ผลลัพธ์การบีบอัดดีกว่า 3-8% คือZopfliโปรแกรมนี้ใช้อัลกอริทึมที่ละเอียดกว่าในการบีบอัดแบบ gzip แต่แลกมาด้วยเวลาที่ใช้ในการบีบอัดที่นานขึ้น อย่างไรก็ตาม เวลาในการคลายการบีบอัดจะไม่ได้รับผลกระทบ
pigzซึ่งเขียนโดย Mark Adler เข้ากันได้กับ gzip และเร่งความเร็วการบีบอัดโดยใช้คอร์และเธรด CPU ที่มีอยู่ทั้งหมด[ 18 ]
การกู้คืนความเสียหาย
ข้อมูลในบล็อกก่อนส่วนที่เสียหายส่วนแรกของไฟล์เก็บถาวรมักจะสามารถอ่านได้อย่างสมบูรณ์ ข้อมูลจากบล็อกที่ไม่ได้ถูกทำลายเนื่องจากความเสียหายซึ่งอยู่หลังจากนั้นอาจสามารถกู้คืนได้ผ่านวิธีการแก้ไขที่ยุ่งยาก[ 19 ]
อนุพันธ์และการใช้งานอื่นๆ
ยู ทิลิตี้ tarที่รวมอยู่ในระบบปฏิบัติการ Linux ส่วนใหญ่สามารถแตกไฟล์ .tar.gz ได้โดยการส่ง ตัวเลือก zเช่นtar -zxf file.tar.gzโดยที่ z หมายถึงการคลายการบีบอัด หมายถึงการแตกไฟล์ และz หมายถึงการระบุชื่อไฟล์เก็บถาวรที่ถูกบีบอัดที่จะแตกไฟล์ออกมา นอกจากนี้( verbose ) ยังแสดงรายการไฟล์ขณะที่กำลังแตกไฟล์อีกด้วย[ 20 ]-z-x-f-v
ไลบรารีzlibรองรับรูปแบบไฟล์ gzip [ 21 ]
รูปแบบ gzip ใช้ในการบีบอัด HTTPซึ่งเป็นเทคนิคที่ใช้เพื่อเร่งความเร็วในการส่งHTMLและเนื้อหาอื่นๆ บนเวิลด์ไวด์เว็บเป็นหนึ่งในสามรูปแบบมาตรฐานสำหรับการบีบอัด HTTP ตามที่ระบุไว้ใน RFC 2616 RFC นี้ ยังระบุรูปแบบ zlib (เรียกว่า "DEFLATE") ซึ่งเทียบเท่ากับรูปแบบ gzip ยกเว้นว่า gzip เพิ่มส่วนหัวและส่วนท้ายอีก 11 ไบต์ อย่างไรก็ตาม บางครั้งแนะนำให้ใช้รูปแบบ gzip มากกว่า zlib เนื่องจากInternet Explorerไม่ได้ใช้งานมาตรฐานอย่างถูกต้องและไม่สามารถจัดการรูปแบบ zlib ตามที่ระบุไว้ใน RFC 1950 ได้[ 22 ]
ตั้งแต่ช่วงปลายทศวรรษ 1990 bzip2ซึ่งเป็นยูทิลิตี้การบีบอัดไฟล์ที่ใช้หลักการเรียงลำดับบล็อก ได้รับความนิยมมากขึ้นในฐานะตัวเลือกทดแทน gzip โดยสร้างไฟล์ที่มีขนาดเล็กกว่ามาก (โดยเฉพาะสำหรับซอร์สโค้ดและข้อความที่มีโครงสร้างอื่นๆ) แต่ต้องแลกมาด้วยหน่วยความจำและเวลาในการประมวลผลที่มากขึ้น (มากถึง 4 เท่า) [ 23 ]
AdvanceCOMP, Zopfli , libdeflate และ7-Zipสามารถสร้างไฟล์ที่เข้ากันได้กับ gzip โดยใช้การใช้งาน DEFLATE ภายในที่มีอัตราการบีบอัดที่ดีกว่า gzip เอง แต่ต้องแลกมาด้วยการใช้เวลาประมวลผลมากกว่าเมื่อเทียบกับการใช้งานแบบอ้างอิง
งานวิจัยที่ตีพิมพ์ในปี 2023 แสดงให้เห็นว่าเทคนิคการบีบอัดแบบไม่สูญเสียข้อมูลอย่างง่าย เช่น gzip สามารถนำมาใช้ร่วมกับตัวจำแนก k-nearest-neighborเพื่อสร้างทางเลือกที่น่าสนใจแทนโครงข่ายประสาทเทียมเชิงลึกสำหรับการจำแนกข้อความในการประมวลผลภาษาธรรมชาติวิธีการนี้แสดงให้เห็นว่ามีประสิทธิภาพเท่าเทียมและในบางกรณีมีประสิทธิภาพเหนือกว่าวิธีการทั่วไป เช่นBERTเนื่องจากความต้องการทรัพยากรต่ำ เช่น ไม่จำเป็นต้องใช้ฮาร์ดแวร์GPU [ 24 ]
ดูเพิ่มเติม
- Brotli – อัลกอริทึมการบีบอัดแบบไม่สูญเสียข้อมูล
- การเปรียบเทียบโปรแกรมบีบอัดไฟล์
- รายการรูปแบบไฟล์เก็บถาวร
- รายการคำสั่ง POSIX
- รูปแบบไฟล์แบบเปิด – ข้อกำหนดที่เผยแพร่สำหรับการจัดเก็บข้อมูลดิจิทัล
- zlib – ไลบรารีสำหรับการจัดรูปแบบและการบีบอัดข้อมูล
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ จีซิป
gzip เป็น รูปแบบไฟล์ และ โปรแกรม บีบอัดไฟล์ โปรแกรมนี้ใช้ อัลกอริธึม Deflate ในการบีบอัดและคลายไฟล์เดียวโดยใช้ รูปแบบไฟล์ gzip
รูปแบบไฟล์
ไฟล์ gzip (ตามที่อธิบายไว้ในตารางด้านล่าง) ประกอบด้วยส่วน หัว ขนาด 10 ไบต์ ฟิลด์ส่วนหัวเพิ่มเติมที่ ไม่บังคับ ข้อมูลที่บีบอัด ด้วย Deflate และ ส่วนท้าย ขนาด 8 ไบต์
การนำไปใช้
มีการเขียนโปรแกรมเวอร์ชันต่างๆ ขึ้นมา เวอร์ชันที่รู้จักกันมากที่สุดคือเวอร์ชันของโครงการ GNU ที่ใช้ การเข้ารหัส Lempel-Ziv (LZ77) เวอร์ชัน gzip ของ OpenBSD จริงๆ แล้วคือโปรแกรม บีบอัด ซึ่งมีการเพิ่มการสนับสนุนรูปแบบ gzip ใน OpenBSD 3.
การกู้คืนความเสียหาย
ข้อมูลในบล็อกก่อนส่วนที่เสียหายส่วนแรกของไฟล์เก็บถาวรมักจะสามารถอ่านได้อย่างสมบูรณ์ ข้อมูลจากบล็อกที่ไม่ได้ถูกทำลายเนื่องจากความเสียหายซึ่งอยู่หลังจากนั้น อาจสามารถ กู้ คืนได้ ผ่านวิธีการแก้ไขที่ยุ่งยาก [ 19 ]