อะไรคือความแตกต่างระหว่างระบบ“ การบีบอัด” ที่แตกต่างกัน?


9

ฉันใช้ TAR และ ZIP สำหรับการบีบอัดเสมอ แต่เมื่อเร็ว ๆ นี้ฉันเคยได้ยินเกี่ยวกับ*.Zอัลกอริทึมการบีบอัด คำถามนี้ทำให้ฉัน:

ด้วยระบบการบีบอัดทั้งหมดเหล่านี้ระบบใดที่ดีที่สุดสำหรับการใช้งานทั่วไปและการบีบอัด

เมื่อทำการทดสอบสองสามครั้งฉันได้ค้นพบtarแล้วว่าฉันไม่ได้บีบอัดจริงๆ ความหมายมันเป็นสิ่งที่ดีเมื่อเทียบกับวิธีการบีบอัดอื่น ๆ ?

ฉันรู้แล้วว่าไปรษณีย์เป็นระบบการบีบอัดใช้กันอย่างแพร่หลาย แต่ฉันควรจะใช้มันแทน*.Z, *.7z, .tarหรือ.tar.<insert ending here>?

สรุปโพสต์:

  1. ฉันควรใช้*.tar, *.Z, *.7z, .tarหรือ.tar.<insert ending here>สำหรับการบีบอัดที่ดีที่สุด?
  2. หากธรรมดา*.tarไม่บีบอัดทำไมเราถึงใช้มัน

แก้ไข: อัลกอริทึมทั้งหมดไม่อนุญาตให้จัดเก็บสิทธิ์ Linux (จากสิ่งที่ฉันเรียนรู้) ต้องทำอะไรและมีแฮ็ค (หรือสคริปต์) บางประเภทที่ฉันสามารถใช้เพื่อจัดเก็บสิทธิ์ได้หรือไม่


ไม่มีความจำเป็นที่จะพูดสิ่งที่เพียงอย่างใดอย่างหนึ่งเลือกด้านบนลงมติอย่างใดอย่างหนึ่งหรือคนที่คุณคิดว่าเป็นประโยชน์มากที่สุด :) เป็น
เซท

คำตอบ:


17

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

Zip และ 7z รวมการจัดเก็บลงสื่อถาวรและการบีบอัดเข้าด้วยกันในรูปแบบคอนเทนเนอร์ของตนเองและพวกเขาตั้งใจจะแพ็คไฟล์บนระบบ DOS / Windows ดังนั้นพวกเขาจึงไม่เก็บสิทธิ์และความเป็นเจ้าของของยูนิกซ์ ดังนั้นหากคุณต้องการจัดเก็บสิทธิ์สำหรับการสำรองข้อมูลที่เหมาะสมคุณต้องติดกับ tar หากคุณวางแผนที่จะแลกเปลี่ยนไฟล์กับผู้ใช้ Windows ซิปหรือ 7z นั้นดี อัลกอริทึมการบีบอัดที่เกิดขึ้นจริง zip และการใช้ 7zip สามารถใช้กับ tar ได้โดย uzing gzipและlzmaตามลำดับ

lzma (aka. * .xz) มีอัตราส่วนการบีบอัดที่ดีที่สุดตัวหนึ่งและค่อนข้างเร็วในการคลายการบีบอัดทำให้เป็นตัวเลือกอันดับต้น ๆ ในปัจจุบัน อย่างไรก็ตามมันต้องใช้ ram และ cpu time ในการบีบอัด ความน่าเชื่อถือgzipนั้นค่อนข้างเร็วกว่าการบีบอัดข้อมูลดังนั้นจึงอาจถูกนำมาใช้หากคุณไม่ต้องการอุทิศเวลาของ cpu มาก นอกจากนี้ยังมีตัวแปรที่เร็วกว่าเรียกว่า lzop bzip2ยังคงได้รับความนิยมอย่างมากเนื่องจากมันถูกแทนที่ด้วย gzip เป็นระยะเวลาหนึ่งก่อนที่ 7zip / lzma จะมาถึงเนื่องจากมันมีอัตราส่วนการบีบอัดที่ดีกว่า compressยูทิลิตี้ซึ่งปกติไฟล์ชื่อ * อัด Z เป็นโบราณและลืมยาว

หนึ่งในความแตกต่างที่สำคัญอื่น ๆ ระหว่าง zip และ tar คือ zip จะบีบอัดข้อมูลเป็นกลุ่มเล็ก ๆ ในขณะที่เมื่อคุณบีบอัดไฟล์ tar คุณจะบีบอัดข้อมูลทั้งหมดในคราวเดียว ส่วนหลังให้อัตราส่วนการบีบอัดที่ดีกว่า แต่เพื่อที่จะแยกไฟล์เดียวที่ส่วนท้ายของไฟล์เก็บถาวรคุณต้องขยายไฟล์ทั้งหมดเพื่อไปที่ไฟล์นั้น ดังนั้นรูปแบบซิปจะดีกว่าในการแตกไฟล์เดียวหรือสองไฟล์จากไฟล์เก็บถาวรขนาดใหญ่ 7z และdarอนุญาตให้คุณเลือกที่จะบีบอัดสิ่งทั้งหมด (เรียกว่าโหมด "ของแข็ง") หรือชิ้นเล็ก ๆ สำหรับการสกัดทีละน้อยได้ง่าย


แต่มีเพียง TAR เท่านั้นที่รองรับข้อมูลเมตา หรือตอนนี้ gzip / bzip2 รองรับ metadata แล้ว
Kaz Wolfe

@pacificfils ยูทิลิตี้การบีบอัดบีบอัดไฟล์เดียวเท่านั้นโดยไม่มีข้อมูลเมตา
psusi

หนึ่ง tar น้ำมันดินโฟลเดอร์แล้วใส่ใน zip และรักษาสิทธิ์ได้อย่างไร
Kaz Wolfe

@pacificfils ใช่ gzipแต่มันจะโง่บิตเนื่องจากคุณจะให้ขึ้นประโยชน์ของซิปและอัตราการบีบอัดที่ดีขึ้นของ
psusi

@pacificfils tar cfpจะสงวนสิทธิ์ ไฟล์ tar จะไม่ถูกบีบอัดดังนั้น zip (7-zip), gzip2, gzip, lzo และอื่น ๆ ทั้งหมดจะบีบอัดไฟล์ tar อย่างดี (โดยทั่วไป tar ของไฟล์บีบอัดไม่น่าจะบีบอัดได้)
Elliott Frisch

9

รายละเอียดของอัลกอริทึมอยู่นอกหัวข้อที่นี่1เนื่องจากพวกเขาไม่ได้อยู่ใน Linux แต่อย่างใดโดยเฉพาะ Ubuntu คุณจะได้ แต่หาข้อมูลที่ดีบางอย่างที่นี่

ต่อไปtarนี้อย่างที่คุณพูดtarไม่ใช่และไม่เคยเป็นโปรแกรมบีบอัด แต่มันเป็นArchiver ; วัตถุประสงค์หลักคือการสร้างไฟล์ขนาดใหญ่หนึ่งไฟล์จากไฟล์ขนาดเล็กจำนวนมาก ในอดีตนี้เพื่ออำนวยความสะดวกในการจัดเก็บในเทปไดรฟ์จึงชื่อ: Tape ARchive

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

เพื่อแสดงให้เห็นเนื่องจากสิ่งนี้ได้ถูกโต้แย้งในความคิดเห็นบน/พาร์ติชัน68G ของฉันฉันมีจำนวนทั้งหมดและใช้ inodes (จำไว้ว่าจำนวน inode ขึ้นอยู่กับประเภทของระบบไฟล์และขนาดของพาร์ติชัน):

Inode count:              393216
Free inodes:              171421

หากตอนนี้ฉันพยายามสร้างไฟล์มากกว่าที่ฉันมี inodes:

$ touch {1..171422}
touch: cannot touch ‘171388’: No space left on device
touch: cannot touch ‘171389’: No space left on device
touch: cannot touch ‘171390’: No space left on device
touch: cannot touch ‘171391’: No space left on device
touch: cannot touch ‘171392’: No space left on device
touch: cannot touch ‘171393’: No space left on device
touch: cannot touch ‘171394’: No space left on device
touch: cannot touch ‘171395’: No space left on device
touch: cannot touch ‘171396’: No space left on device
touch: cannot touch ‘171397’: No space left on device

ไม่มีที่ว่าง? แต่ฉันมีพื้นที่เหลือเฟือ:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       5,8G  4,3G  1,2G  79% /

ดังที่คุณเห็นด้านบนการสร้างไฟล์เปล่าสองสามแสนไฟล์ทำให้ฉันหมด inodes อย่างรวดเร็วและฉันไม่สามารถสร้างไฟล์ใหม่ได้อีกต่อไป หากฉันเป็นคนtarเหล่านี้ฉันจะสามารถเริ่มสร้างไฟล์ได้อีกครั้ง

การมีไฟล์น้อยลงยังเพิ่มความเร็วของระบบไฟล์ I / O อย่างมากโดยเฉพาะในระบบไฟล์ที่เมาท์ NFS ฉันมักจะเก็บไดเรกทอรีงานเก่าของฉันไว้เมื่อโครงการเสร็จสิ้นเนื่องจากมีไฟล์น้อยลงโปรแกรมที่เร็วขึ้นเช่นfindนี้จะทำงานได้

มีคำตอบที่ยอดเยี่ยมเกี่ยวกับ Super User ซึ่งมีรายละเอียดมากกว่านี้ แต่นอกเหนือจากข้างต้นเหตุผลพื้นฐานอื่น ๆ ที่ว่าทำไมถึงtarได้รับความนิยมในปัจจุบันคือ:

  1. ประสิทธิภาพ: การใช้tarไปป์ไลน์ผ่านโปรแกรมบีบอัดอย่างgzipมีประสิทธิภาพมากขึ้นเนื่องจากจะหลีกเลี่ยงการสร้างไฟล์กลาง

  2. tar มาพร้อมกับ bells และ whistles ทุกประเภทคุณสมบัติที่ได้รับการออกแบบมาอย่างยาวนานซึ่งทำให้มีประโยชน์อย่างยิ่งสำหรับการสำรองข้อมูล * nix (คิดว่าการอนุญาต, ความเป็นเจ้าของไฟล์, ความสามารถในการไพพ์ข้อมูลตรงไปยัง STDOUT และผ่านลิงค์ SSH ... )

  3. ความเฉื่อย tarเรากำลังใช้ในการ มันปลอดภัยที่จะสมมติว่ามันจะมีให้ใน * ระวังที่คุณอาจใช้งานซึ่งทำให้พกพาสะดวกและมีประโยชน์สำหรับ tarballs ซอร์สโค้ด


1สิ่งนี้เป็นความจริงอย่างแน่นอนและไม่เกี่ยวข้องกับความจริงที่ว่าฉันไม่สามารถอธิบายได้อย่างเพียงพอ :)


3
คอมพิวเตอร์ของฉันมีมากกว่า 10,000,000 ไฟล์ (ในอดีต) และนั่นก็ไม่ได้บ้าเกินไป ฉันไม่เคยใช้tarเพื่อ "ลดจำนวนไฟล์" เนื่องจากระบบไฟล์ส่วนใหญ่ไม่สนใจและมันก็ไม่ได้ดีที่สุดเพราะtarมันไม่รองรับการเข้าถึงไฟล์แบบสุ่ม แต่การใช้งานหลัก (สำหรับฉันและฉันคิดว่าสำหรับคนส่วนใหญ่) คือการแบ่งปันไฟล์ (เช่นซอร์สโค้ด) กับคนอื่น ๆ ในวิธีที่ง่าย
nneonneo

@neonneo คุณเคยทำงานกับไฟล์หลายล้านไฟล์ในไดเรกทอรีเดียวหรือไม่? ฉันมีและเชื่อฉันมันไม่ใช่เรื่องง่าย นอกเหนือจากปัญหาที่เห็นได้ชัดARG_MAXแล้วสิ่งนี้สามารถจัดการกับไฟล์ของคุณในทางที่ยุ่งยากและสามารถนำเครือข่ายที่มีการจัดเก็บไฟล์ในเซิร์ฟเวอร์กลางและแชร์กับ NFS ที่หัวเข่า สำหรับการลดจำนวนไฟล์โดยรวมคุณจะต้องมีไฟล์มากกว่าที่จะสังเกตเห็น แต่ในการตั้งค่าผู้ใช้หลายคนจำนวนของ inode สามารถ จำกัด ได้อย่างแน่นอน
terdon

@neonneo ให้ตัวอย่างที่เป็นรูปธรรมมากขึ้นtune2fs -lในพาร์ทิชันที่ถือ $ HOME ของฉันบอกฉันฉันมี inodes 19,300,352 ฉันจะไม่สามารถสร้างไฟล์ได้มากกว่านั้น อย่างที่คุณพูด 10 ^ 6 นั้นไม่ได้บ้าเลยแม้แต่ในระดับที่สูงขึ้นจริงๆ ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณทำคุณสามารถมีความต้องการของวิธีที่มากไปกว่านั้น
terdon

@nneonneo ดูคำตอบที่ปรับปรุงแล้วสำหรับตัวอย่างจริงของวิธีที่คุณสามารถเรียกใช้ inodes
terdon

เซิร์ฟเวอร์ของฉันใช้ inode มากกว่า 1 ล้านตัวและนั่นเป็นเพราะฉันมีเมล์จำนวนมาก (มีการส่งเมลทราฟฟิกจำนวนมากที่ต้องย้อนกลับไปหลายปี) และเก็บไว้ในรูปแบบเมลดีร์ ฉันไม่รู้เลยว่าคุณจะทำอะไรเพื่อใช้ไอโอเอส 19 ล้าน คุณจะต้องสร้างไฟล์ใหม่ทุกวินาที 24 ชั่วโมงต่อวันนานกว่า 7 เดือน
psusi

4

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

บน Unix การดำเนินการทั้งสองจะถูกแยกด้วยเครื่องมือที่แตกต่างกัน บนแพลตฟอร์มอื่น ๆ ส่วนใหญ่ (ในปัจจุบันและในอดีต) เครื่องมือที่ทำงานร่วมกันนั้นมีทั้งการเก็บถาวรและการบีบอัด

(gzip และโปรแกรมอื่น ๆ ที่เลียนแบบอินเทอร์เฟซของ gzip มักจะมีตัวเลือกในการจัดเก็บชื่อไฟล์ต้นฉบับในเอาต์พุตที่บีบอัด แต่สิ่งนี้พร้อมกับ CRC หรือการตรวจสอบอื่น ๆ เพื่อตรวจสอบความเสียหาย

มีข้อดีในการแยกการบีบอัดจากการเก็บถาวร การเก็บถาวรเป็นแพลตฟอร์มเฉพาะ (ข้อมูลเมตาของระบบไฟล์ที่ต้องการการเก็บรักษาแตกต่างกันมาก) แต่การใช้งานนั้นเรียบง่าย I / O-bound ส่วนใหญ่และการเปลี่ยนแปลงในช่วงเวลาเล็กน้อย การบีบอัดนั้นไม่ขึ้นอยู่กับแพลตฟอร์ม แต่การใช้งานนั้นผูกกับ CPU และอัลกอริทึมนั้นมีการปรับปรุงอย่างต่อเนื่องเพื่อใช้ประโยชน์จากทรัพยากรที่เพิ่มขึ้นซึ่งฮาร์ดแวร์ที่ทันสมัยสามารถทำให้เกิดปัญหาได้

ที่นิยมมากที่สุด Unix Archiver คือtarถึงแม้จะมีอยู่อื่น ๆ เช่นและcpio ar(แพคเกจ Debian เป็นarจดหมายเหตุในขณะที่ cpioมักใช้สำหรับ ram indisks inital) tarหรือมักจะถูกรวมเข้ากับเครื่องมือบีบอัดเช่นcompress(.Z), gzip(.gz), (.bz2) bzip2และxz(.xz) จากที่เก่าแก่ที่สุดจนถึงอายุน้อยที่สุด และไม่บังเอิญจากการบีบอัดที่แย่ที่สุดไปจนถึงดีที่สุด

การจัดทำtarไฟล์บีบอัดและบีบอัดเป็นขั้นตอนที่แตกต่าง: คอมเพรสเซอร์ไม่รู้เรื่องtarรูปแบบไฟล์ ซึ่งหมายความว่าการแตกไฟล์เดียวจากไฟล์tarเก็บถาวรที่บีบอัดต้องใช้การคลายไฟล์ไฟล์ก่อนหน้าทั้งหมด ซึ่งมักเรียกว่าไฟล์เก็บถาวร "solid"

อย่างเท่าเทียมกันเนื่องจาก tar เป็นรูปแบบ "การสตรีม" ซึ่งจำเป็นสำหรับการเป็นประโยชน์ในไปป์ไลน์จึงไม่มีดัชนีโกลบอลในไฟล์เก็บถาวร tar และการแสดงรายการเนื้อหาของไฟล์เก็บถาวร tar นั้นแพงพอ ๆ กับการแตกไฟล์

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

มีการผสมเกสรข้ามระหว่างแพลตฟอร์มที่แตกต่างกันและปรัชญา: คอมเพรสเซอร์gzipเป็นหลักzipโดยไม่ต้องเก็บของและxzเป็น7-zipคอมเพรสเซอร์ของหลักโดยไม่ต้องเก็บ

มีคอมเพรสเซอร์แบบพิเศษอื่น ๆ ตัวแปร PPM และตัวตายตัวแทนได้ZPAQรับการปรับให้เหมาะสมสำหรับการบีบอัดสูงสุดโดยไม่คำนึงถึงการใช้ทรัพยากร พวกเขาสามารถเคี้ยวขึ้นเป็นมาก CPU และ RAM ที่คุณสามารถโยนที่พวกเขาและการบีบอัดเป็นเพียงการเก็บภาษีการบีบอัด (คมเครื่องมือบีบอัดใช้กันอย่างแพร่หลายเป็น สมมาตร : decompressing มีราคาถูกกว่าการบีบอัด)

ในส่วนอื่น ๆ ของสเปกตรัมlzo, snappyและLZ4มีคอมเพรสเซอร์ "ไฟ" ที่ออกแบบมาสำหรับความเร็วสูงสุดและใช้ทรัพยากรน้อยที่สุดที่ค่าใช้จ่ายของการบีบอัด พวกมันใช้กันอย่างแพร่หลายในระบบไฟล์และที่เก็บวัตถุอื่น ๆ แต่ก็น้อยกว่าเพื่อเป็นเครื่องมือแบบสแตนด์อโลน


คุณควรเลือกแบบไหน?

เก็บ:

เนื่องจากคุณอยู่บน Ubuntu ไม่มีเหตุผลที่จะใช้สิ่งใดนอกจากtarการเก็บถาวรเว้นแต่ว่าคุณกำลังพยายามสร้างไฟล์ที่สามารถอ่านได้ที่อื่น

zipยากที่จะเอาชนะเพื่อความแพร่หลาย แต่ไม่ใช่ Unix-centric และจะไม่ให้สิทธิ์ระบบไฟล์และข้อมูลการเป็นเจ้าของของคุณและการบีบอัดในไฟล์นั้นจะล้าสมัย 7-zip และ RAR (และ ZPAQ) มีการบีบอัดที่ทันสมัยกว่า แต่ไม่เหมาะสำหรับการเก็บถาวรระบบไฟล์ Unix (แม้ว่าจะไม่มีอะไรหยุดคุณได้ใช้มันเหมือนกับการบีบอัด); RAR ยังเป็นกรรมสิทธิ์

การบีบอัด:

สำหรับการบีบอัดสูงสุดที่คุณสามารถดูได้ที่มาตรฐานเช่นหนึ่งมหาศาลที่http://mattmahoney.net/dc/text.html สิ่งนี้จะทำให้คุณมีความคิดที่ดีขึ้นเกี่ยวกับการแลกเปลี่ยนที่เกี่ยวข้อง

คุณอาจไม่ต้องการบีบอัดสูงสุด มันแพงเกินไป

xzเป็นเครื่องมือบีบอัดข้อมูลเอนกประสงค์ที่นิยมมากที่สุดในระบบ Unix ที่ทันสมัย ฉันเชื่อว่า 7-zip สามารถอ่านไฟล์ xz ได้เช่นกันเนื่องจากเกี่ยวข้องกัน

ในที่สุด: หากคุณเก็บถาวรข้อมูลสำหรับสิ่งอื่นที่ไม่ใช่ที่เก็บข้อมูลระยะสั้นคุณควรเลือกสิ่งที่เป็นโอเพ่นซอร์สและแพร่หลายมากขึ้น


1

lzo, gz, b2, lzma (.lzma2 =.xz)คือ "stream" compressors: มันบีบอัดสตรีม byes ไม่รู้และไม่สนใจเกี่ยวกับไฟล์ไดเรกทอรีและข้อมูลเมตาเช่นสิทธิ์ คุณต้องใช้ Archiver เช่น tar เพื่อรวมข้อมูลทั้งหมดลงในสตรีมของไบต์ (ไฟล์ tar) และบีบอัดไฟล์นั้นด้วยคอมเพรสเซอร์ หากเป็นข้อมูลของไฟล์เดียวที่คุณสนใจคุณสามารถป้อนไฟล์นั้นเพียงอย่างเดียวให้กับหนึ่งในคอมเพรสเซอร์เหล่านี้

Tar, cpio and paxเป็นผู้จัดเก็บ: พวกเขาใช้ไฟล์และไดเรกทอรีจำนวนมากและเข้ารหัสข้อมูลและข้อมูลเมตาในไฟล์เดียว น้ำมันดินเป็นที่นิยมมากที่สุดและเข้ากันได้มากที่สุดแม้ว่าข้อดีทางเทคนิคระหว่างสามจะน้อยพอที่จะมีสงครามทางศาสนาเกี่ยวกับเรื่องนี้ในช่วงเช้า

7z และ zip เป็นตัวบีบอัดและส่วนโค้ง: จากนั้นเก็บข้อมูลทั้งหมดและข้อมูลเมตาและบีบอัด อย่างไรก็ตาม AFAICT ทั้งคู่ไม่ได้บันทึกการอนุญาตยูนิกซ์

Zip ใช้อัลกอริทึมเดียวกันกับ gzip ชื่อ DEFLATE 7z ใช้อัลกอริทึม lzma

หากต้องการอ่านไฟล์เดียวจาก tar.gz หรือสิ่งที่คล้ายกันคุณจะต้องคลายการบีบอัด gz ทั้งหมดจนกระทั่งเปิดไฟล์ tar เพียงพอเพื่อให้คุณสามารถแตกไฟล์ได้ Zip ให้คุณบีบอัดและดึงไฟล์แต่ละไฟล์แยกกัน 7z สามารถมีพฤติกรรมอย่างใดอย่างหนึ่ง

อัตราส่วนการบีบอัดและความเร็ว: gzip และ lzo มีความเร็วในการบีบอัดและการบีบอัดที่รวดเร็วมาก แต่อัตราส่วนการบีบอัดต่ำ มันไม่ได้ใช้หน่วยความจำมากในการบีบอัด gzip นั้นช้ากว่าเล็กน้อยและให้อัตราการบีบอัดที่ดีกว่า lzo เล็กน้อย

มันเร็วมากมันเร็วกว่าที่จะอ่านไฟล์บีบอัด gz หรือ lzo จากดิสก์และคลายการบีบอัดแทนการอ่านไฟล์ที่ไม่บีบอัดจากดิสก์โดยตรง

LZMA (xz) ให้การบีบอัดข้อมูลทั่วไปที่ยอดเยี่ยม แต่ใช้เวลานานในการบีบอัดและคลายการบีบอัดพร้อมกับการบีบอัดหน่วยความจำจำนวนมาก

bz2 เคยเป็นอัลกอริธึมการบีบอัดสูงของตัวเลือก แต่หลุดจากความโปรดปรานเพราะทั้งคู่ช้ากว่า lzma และใช้เวลาในการบีบอัดและคลายการบีบอัดนานกว่า อย่างไรก็ตามสำหรับข้อมูลบางประเภท (ลำดับดีเอ็นเอ, ไฟล์ที่มีขนาดใหญ่มากที่ทำงานของไบต์เดียวกัน) bzip2 สามารถเอาชนะทุกอย่างอื่นลง ตัวอย่างเช่นเมื่อก่อนฉันต้องบีบอัดไฟล์ 4GB ของ 1 และ b2 ลด i ลงเหลือ 10 kb สองสามตัวในขณะที่ lzma ใช้ MB บางส่วน 10 ถ้าฉันจำได้อย่างถูกต้อง


อันที่จริง lzma นั้นค่อนข้างเร็วในการคลายการบีบอัด
psusi

0

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

ผลกระทบ? เร็วกว่าxz, lzmaหรือและในประสบการณ์ของฉันของคู่แข่งอัตราส่วนการอัดที่bzip2 lzmaมันเป็นแรมหมู

http://en.wikipedia.org/wiki/Rzip

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.