วิธีการบีบอัดที่ใช้ในการzlibเป็นหลักเช่นเดียวกับที่ในgzipและซิป อะไรคือgzipและซิป ? แตกต่างกันอย่างไรและเหมือนกันอย่างไร
วิธีการบีบอัดที่ใช้ในการzlibเป็นหลักเช่นเดียวกับที่ในgzipและซิป อะไรคือgzipและซิป ? แตกต่างกันอย่างไรและเหมือนกันอย่างไร
คำตอบ:
แบบสั้น:
.zip
เป็นรูปแบบที่เก็บโดยใช้มักจะที่วิธีการบีบอัดยุบ .gz
รูปแบบ gzipเป็นไฟล์เดียวยังใช้วิธีการบีบอัดยุบ มักจะถูกนำมาใช้ gzip ร่วมกับน้ำมันดินที่จะทำให้รูปแบบที่เก็บบีบอัด.tar.gz
, ห้องสมุด zlibมีการบีบอัดและการบีบอัดรหัสยุบสำหรับการใช้งานโดยซิป gzip, PNG (ซึ่งใช้กระดาษห่อ zlibกับข้อมูลยุบ) และการใช้งานอื่น ๆ อีกมากมาย
แบบยาว:
รูปแบบ ZIPถูกพัฒนาขึ้นโดยฟิลแคทซ์เป็นรูปแบบเปิดที่มีสเปคเปิดที่การดำเนินงานของเขา PKZIP เป็นแชร์แวร์ เป็นรูปแบบไฟล์เก็บถาวรที่จัดเก็บไฟล์และโครงสร้างไดเรกทอรีซึ่งแต่ละไฟล์ถูกบีบอัดแยกกัน ประเภทไฟล์คือ.zip
ประเภทไฟล์ไฟล์รวมถึงโครงสร้างไดเรกทอรีสามารถเลือกที่จะเข้ารหัส
รูปแบบ ZIP รองรับวิธีการบีบอัดหลายวิธี:
0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1
วิธีที่ 1 ถึง 7 เป็นข้อมูลในอดีตและไม่ได้ใช้งาน วิธีการที่ 9 ถึง 98 เป็นการเพิ่มเติมล่าสุดและมีการใช้งานที่แตกต่างกันเล็กน้อย วิธีการเดียวที่ใช้กันอย่างแพร่หลายอย่างแท้จริงในรูปแบบ ZIP คือวิธีที่ 8, ยุบและวิธีที่มีขนาดเล็กกว่า 0 ซึ่งไม่มีการบีบอัดเลย แทบทุกคน.zip
ไฟล์ที่คุณจะพบในป่าจะใช้วิธีการเฉพาะ 8 และ 0 น่าจะเป็นเพียงวิธีที่ 8 (วิธีที่ 8 ยังมีวิธีการจัดเก็บข้อมูลอย่างมีประสิทธิภาพโดยไม่มีการบีบอัดและการขยายตัวค่อนข้างน้อยและวิธีที่ 0 ไม่สามารถสตรีม ในขณะที่วิธีที่ 8 สามารถ)
มาตรฐาน ISO / IEC 21320-1: 2015 มาตรฐานสำหรับบรรจุไฟล์เป็นรูปแบบซิป จำกัด เช่นใช้ในการเก็บไฟล์ Java (ขวด) สำนักงานเปิดไฟล์ XML (Microsoft Office .docx, .xlsx, .pptx) สำนักงานเอกสาร จัดรูปแบบไฟล์ (.odt, .ods, .odp) และไฟล์ EPUB (.epub) มาตรฐานนั้น จำกัด วิธีการบีบอัดไว้ที่ 0 และ 8 รวมถึงข้อ จำกัด อื่น ๆ เช่นไม่มีการเข้ารหัสหรือลายเซ็น
ประมาณปี 1990 กลุ่มInfo-ZIPเขียนการใช้งานzip
และunzip
สาธารณูปโภคแบบพกพาฟรีและโอเพนซอร์สรองรับการบีบอัดด้วยรูปแบบ Deflate และการคลายการบีบอัดของรูปแบบนั้นและรูปแบบก่อนหน้า นี่เป็นการขยายการใช้.zip
รูปแบบอย่างมาก
ในช่วงต้นยุค 90 รูปแบบ gzipได้รับการพัฒนาเพื่อทดแทนยูทิลิตีUnixcompress
ซึ่งได้มาจากรหัส Deflate ในโปรแกรมอรรถประโยชน์ Info-ZIP Unix compress
ได้รับการออกแบบมาเพื่อบีบอัดไฟล์หรือสตรีมเดียวต่อท้าย.Z
ชื่อไฟล์ compress
ใช้อัลกอริธึมการบีบอัด LZWซึ่งในเวลานั้นอยู่ภายใต้สิทธิบัตรและการใช้งานฟรีนั้นถูกโต้แย้งโดยผู้ถือสิทธิบัตร แม้ว่าการใช้งานเฉพาะของ Deflate ได้รับการจดสิทธิบัตรโดย Phil Katz แต่รูปแบบก็ไม่ได้และดังนั้นจึงเป็นไปได้ที่จะเขียนการนำ Deflate ไปใช้ซึ่งไม่ได้ละเมิดสิทธิบัตรใด ๆ การดำเนินการดังกล่าวไม่ได้รับการท้าทายในช่วง 20 ปีที่ผ่านมา gzip
ยูทิลิตีUnix นั้นมีจุดประสงค์เพื่อใช้แทนที่compress
และในความเป็นจริงก็สามารถที่จะขยายcompress
ข้อมูลที่บีบอัด (สมมติว่าคุณสามารถแยกประโยคได้) gzip
ผนวก a .gz
เข้ากับชื่อไฟล์ gzip
ใช้รูปแบบข้อมูลที่บีบอัดของ Deflate ซึ่งบีบอัดได้ดีกว่า Unix เล็กน้อยcompress
มีการบีบอัดข้อมูลที่รวดเร็วมากและเพิ่ม CRC-32 เป็นการตรวจสอบความสมบูรณ์ของข้อมูล รูปแบบส่วนหัวยังอนุญาตการจัดเก็บข้อมูลมากกว่าcompress
รูปแบบที่อนุญาตเช่นชื่อไฟล์ดั้งเดิมและเวลาแก้ไขไฟล์
แม้ว่าจะcompress
บีบอัดไฟล์เดียวเท่านั้นมันเป็นเรื่องปกติที่จะใช้tar
ยูทิลิตี้เพื่อสร้างไฟล์เก็บถาวรคุณลักษณะของพวกเขาและโครงสร้างไดเรกทอรีของพวกเขาเป็น.tar
ไฟล์เดียวและจากนั้นบีบอัดมันด้วยcompress
เพื่อสร้าง.tar.Z
ไฟล์ ในความเป็นจริงtar
ยูทิลิตี้มีและยังคงมีตัวเลือกที่จะทำการบีบอัดในเวลาเดียวกันแทนที่จะต้องท่อส่งออกของที่จะtar
compress
ทั้งหมดนี้นำไปสู่รูปแบบ gzip และtar
มีตัวเลือกในการบีบอัดโดยตรงกับ.tar.gz
รูปแบบ tar.gz
รูปแบบการบีบอัดที่ดีกว่า.zip
วิธีตั้งแต่การบีบอัดที่.tar
สามารถใช้ประโยชน์จากความซ้ำซ้อนทั่วแฟ้มขนาดเล็กโดยเฉพาะอย่างยิ่งจำนวนมาก .tar.gz
เป็นรูปแบบไฟล์เก็บถาวรที่ใช้กันมากที่สุดใน Unix เนื่องจากมีความสะดวกในการพกพาสูง แต่มีวิธีการบีบอัดที่มีประสิทธิภาพมากกว่าในการใช้งานเช่นกันดังนั้นคุณมักจะเห็น.tar.bz2
และ.tar.xz
เก็บถาวร
ซึ่งแตกต่างจาก.tar
, .zip
มีไดเรกทอรีกลางที่สิ้นสุดซึ่งมีรายการของเนื้อหาที่ นั่นและการบีบอัดแยกต่างหากให้การเข้าถึงแบบสุ่มไปยังแต่ละรายการใน.zip
ไฟล์ .tar
ไฟล์จะต้องมีการแตกไฟล์และสแกนตั้งแต่ต้นจนจบเพื่อสร้างไดเรกทอรีซึ่งเป็นวิธีแสดง.tar
ไฟล์
หลังจากการแนะนำของ gzip ในช่วงกลางทศวรรษที่ 1990 มีข้อพิพาทเรื่องสิทธิบัตรเดียวกันที่เรียกว่าเป็นคำถามเกี่ยวกับการใช้.gif
รูปแบบภาพฟรีใช้กันอย่างแพร่หลายบนกระดานข่าวและเวิลด์ไวด์เว็บ (สิ่งใหม่ในเวลานั้น) ดังนั้นคนกลุ่มเล็ก ๆ ที่สร้างรูปแบบการบีบอัดภาพ PNG losslessly กับประเภทของไฟล์เพื่อแทนที่.png
.gif
รูปแบบนั้นยังใช้รูปแบบ Deflate สำหรับการบีบอัดซึ่งจะถูกนำไปใช้หลังจากตัวกรองในข้อมูลภาพทำให้เกิดความซ้ำซ้อนมากขึ้น เพื่อส่งเสริมการใช้งานรูปแบบ PNG อย่างแพร่หลายจึงมีการสร้างไลบรารี่โค้ดฟรีสองแห่ง libpngและ zlib. libpng จัดการคุณสมบัติทั้งหมดของรูปแบบ PNG และ zlib ได้จัดเตรียมรหัสการบีบอัดและการคลายการบีบอัดสำหรับใช้งานโดย libpng รวมถึงแอปพลิเคชันอื่น ๆ zlib ถูกดัดแปลงจากgzip
รหัส
สิทธิบัตรดังกล่าวทั้งหมดได้หมดอายุแล้ว
ไลบรารี zlib สนับสนุนการบีบอัดและคลายการบีบอัดและการห่อสามรอบ ๆ กระแสการยุบ สิ่งเหล่านี้คือ: ไม่มีการตัดคำทั้งหมด ("raw" deflate), การตัด zlibซึ่งใช้ในบล็อกข้อมูลรูปแบบ PNG และการตัด gzip เพื่อจัดทำรูทีน gzip สำหรับโปรแกรมเมอร์ ข้อแตกต่างที่สำคัญระหว่างการตัด zlib และ gzip คือการตัด zlib มีขนาดกะทัดรัดมากขึ้นหกไบต์เทียบกับขั้นต่ำ 18 ไบต์สำหรับ gzip และการตรวจสอบความสมบูรณ์ Adler-32 ทำงานได้เร็วกว่า CRC-32 ที่ gzip ใช้ Raw Deflate ถูกใช้โดยโปรแกรมที่อ่านและเขียน.zip
รูปแบบซึ่งเป็นรูปแบบอื่นที่ล้อมรอบข้อมูลที่บีบอัด
ขณะนี้ Zlib ใช้งานอย่างกว้างขวางสำหรับการส่งข้อมูลและการจัดเก็บ ยกตัวอย่างเช่น HTTP ที่สุดการทำธุรกรรมโดยเซิร์ฟเวอร์และเบราว์เซอร์บีบอัดและขยายข้อมูลโดยใช้ zlib เฉพาะส่วนหัว HTTP Content-Encoding: deflate
หมายถึงวิธีการบีบอัดยุบห่อภายในรูปแบบข้อมูล zlib
การนำไปใช้งานที่แตกต่างกันของแฟบจะส่งผลในการบีบอัดเอาท์พุทที่แตกต่างกันสำหรับข้อมูลอินพุตเดียวกันเป็นหลักฐานโดยการดำรงอยู่ของระดับการบีบอัดที่เลือกได้ที่ช่วยให้การซื้อขายปิดประสิทธิภาพการบีบอัดสำหรับเวลา CPU zlib และ PKZIP ไม่ได้เป็นการใช้งานเพียงอย่างเดียวของการบีบอัดแบบยุบและการบีบอัด ทั้งยูทิลิตีการเก็บถาวร 7-Zipและไลบรารี่ zopfliของ Google มีความสามารถในการใช้เวลา CPU มากกว่า zlib เพื่อบีบบิตสองสามบิตสุดท้ายที่เป็นไปได้เมื่อใช้รูปแบบการยุบลดขนาดบีบอัดลงเล็กน้อยเมื่อเทียบกับสูงสุดของ zlib ระดับการบีบอัด ยูทิลิตี้ pigzเป็นการใช้งานแบบขนานของ gzip รวมถึงตัวเลือกในการใช้ zlib (ระดับการบีบอัด 1-9) หรือ zopfli (ระดับการบีบอัด 11) และลดผลกระทบด้านเวลาของการใช้ zopfli โดยแบ่งการบีบอัดไฟล์ขนาดใหญ่ผ่านโปรเซสเซอร์และแกนประมวลผลหลายตัว
.tar.gz
ไฟล์นั่นคือสิ่งที่มันเป็น) ขั้นแรก tar + gzip บีบอัดได้ดีกว่า zip เนื่องจากการบีบอัดของไฟล์ถัดไปสามารถใช้ประวัติจากไฟล์ก่อนหน้า (บางครั้งเรียกว่าไฟล์ "solid") zip สามารถบีบอัดไฟล์ได้ทีละไฟล์เท่านั้น ประการที่สอง tar เก็บรักษาข้อมูลไดเรกทอรี Unix ทั้งหมดในขณะที่ zip ไม่ได้ออกแบบมาให้ทำเช่นนั้น (ส่วนขยายในภายหลังในรูปแบบ zip พร้อมบล็อกเสริมเฉพาะ Unix พยายามแก้ไขปัญหานี้)
ZIPเป็นรูปแบบไฟล์ที่ใช้สำหรับจัดเก็บไฟล์และโฟลเดอร์ตามจำนวนที่ต้องการพร้อมกับการบีบอัดแบบไม่สูญเสียข้อมูล มันทำให้ไม่มีสมมติฐานที่เข้มงวดเกี่ยวกับวิธีการบีบอัดที่ใช้ แต่มักจะถูกใช้มากที่สุดกับการยุบ
Gzipเป็นทั้งอัลกอริทึมการบีบอัดที่อิงตาม DEFLATE แต่มีข้อ จำกัด น้อยกว่ากับสิทธิบัตรที่เป็นไปได้และรูปแบบไฟล์สำหรับจัดเก็บไฟล์บีบอัดไฟล์เดียว สนับสนุนการบีบอัดจำนวนข้อของไฟล์และโฟลเดอร์เมื่อรวมกับน้ำมันดิน แฟ้มผลมีการขยาย.tgz
หรือ.tar.gz
และเป็นที่นิยมเรียกว่าtarball
zlibเป็นห้องสมุดของฟังก์ชั่นที่ห่อหุ้ม DEFLATE ในการเกิดชาติLZ77 ที่พบบ่อยที่สุด
ความแตกต่างที่สำคัญที่สุดคือ gzip สามารถบีบอัดไฟล์เดียวในขณะที่ zip บีบอัดไฟล์หลายไฟล์ทีละไฟล์และเก็บเป็นไฟล์เดียวหลังจากนั้น ดังนั้น gzip มาพร้อมกับ tar ส่วนใหญ่ (มีความเป็นไปได้อื่น ๆ ) สิ่งนี้มาพร้อมกับข้อดี (dis)
หากคุณมีไฟล์เก็บถาวรขนาดใหญ่และคุณต้องการไฟล์เดียวไฟล์เดียวคุณจะต้องแตกไฟล์ gzip ทั้งหมดเพื่อไปยังไฟล์นั้น ไม่จำเป็นถ้าคุณมีไฟล์ซิป
ในทางตรงกันข้ามถ้าคุณบีบอัดไฟล์ที่คล้ายกัน 10 ไฟล์หรือแม้แต่ไฟล์ที่เหมือนกันไฟล์ zip จะใหญ่กว่าเพราะแต่ละไฟล์ถูกบีบอัดทีละไฟล์ในขณะที่ gzip เมื่อใช้ร่วมกับ tar ไฟล์เดียวจะถูกบีบอัดซึ่งจะมีประสิทธิภาพมากกว่า คล้ายกัน (เท่ากัน)