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