ซึ่งมีประสิทธิภาพมากขึ้น - การบีบอัด tar หรือ zip? tar และ zip แตกต่างกันอย่างไร?


68

ฉันทำงานในสภาพแวดล้อม Linux และต้องการทราบเกี่ยวกับคำสั่ง tar และ zip

ซึ่งมีประสิทธิภาพมากขึ้น - tar หรือ zip? ฉันต้องทราบความแตกต่างระหว่างคำสั่ง tar และ zip ทุกคนสามารถอธิบายให้ฉันได้ไหม

คำตอบ:


77

tarสร้างไฟล์เดียวจากหลายไฟล์โดยไม่บีบอัดเว้นแต่จะรวมโปรแกรมบีบอัดเช่นgzipหรือbzip2(ซึ่งคุณสามารถโทรจากภายในtarโดยใช้-zหรือ-jตัวเลือกตามลำดับ) zipรวมทั้งการเก็บถาวรและการบีบอัดในโปรแกรมเดียว


60

น้ำมันดิน

  • สมมติว่าคุณกำลังอ่านจากปลายด้านหนึ่งไปยังอีกด้านหนึ่ง - "Tape ARchive" (อายุของคำสั่งแสดงให้เห็น ... )
  • ไม่ทำการบีบอัด แต่คุณสามารถบีบอัดสตรีมผลลัพธ์ทั้งหมดโดยการไพพ์ผ่าน gzip และ bzip2 (ทำภายในด้วย -z หรือ -j)
  • เก็บแอตทริบิวต์ของไฟล์ unix : uid, gid, การอนุญาต (ที่สามารถเรียกใช้งานได้) ค่าเริ่มต้นอาจขึ้นอยู่กับการกระจายของคุณและสามารถสลับกับตัวเลือก

ซิป

  • ร้านค้าแอตทริบิวต์ MSDOS (เก็บถาวรอ่านอย่างเดียวซ่อนระบบ)
  • บีบอัดแต่ละไฟล์แล้วเพิ่มลงในไฟล์เก็บถาวร
  • รวมตารางไฟล์ท้ายไฟล์
  • และเป็นผลมาจากสองอดีตอนุญาตให้อ่านเฉพาะส่วนที่แน่นอนเกี่ยวกับไฟล์ที่คุณต้องการ

ความจริงที่ว่า zip บีบอัดไฟล์แยกกันจะส่งผลต่ออัตราส่วนการบีบอัดโดยเฉพาะอย่างยิ่งในไฟล์ขนาดเล็กที่คล้ายกัน

(อย่างน้อยก็ถูกต้องตรงนี้เมื่อสิบปีก่อน)


22

Tar เก็บรักษาข้อมูลเมตามากกว่า Zip ดูการเปรียบเทียบของฉัน (มันล้าสมัยเล็กน้อย):

ป้อนคำอธิบายรูปภาพที่นี่

(คลิกเพื่อขยาย)

ทาร์ผ่านการทดสอบ 65% โดยที่ Zip ผ่านการทดสอบ 17% เท่านั้น ฉันได้จัดทำชุดทดสอบบน github ภายใต้ใบอนุญาต BSDเพื่อให้คุณสามารถลองด้วยตัวคุณเองถ้าคุณมี Mac สำหรับ linux นั้นฉันไม่แน่ใจว่ามี metadata ใด ๆ หรือไม่ดังนั้นการทดสอบเหล่านี้อาจไม่เกี่ยวข้อง


ที่น่าสนใจ! +1 สำหรับสิ่งนี้ แต่แล้วอีกครั้งนั่นเป็นโปรแกรมที่ยิ่งใหญ่ คุณเขียนสิ่งนี้เพื่อจุดประสงค์อื่นหรือไม่? แค่สงสัย.
CppLearner

ฉันเขียนบททดสอบสำหรับตัวจัดการไฟล์ที่ฉันทำงานเมื่อหลายปีก่อน ไม่เคยปล่อยแม้ว่า
neoneye

1
Linux มีข้อมูลเมตาเช่นกันดังนั้นควรใช้งานได้ดี
zeitue

14

สามารถวัดประสิทธิภาพได้หลายวิธี:

  1. กระบวนการใช้เวลานานเท่าไหร่?
  2. ไฟล์ผลลัพธ์มีขนาดใหญ่เท่าใด

มีคำถามอื่นด้วยเช่น "เครื่องมือทั่วไปในการจัดการกับไฟล์เก็บถาวรที่เกิดขึ้นเป็นอย่างไร"

ตัวอย่างเช่นbzip2สร้างไฟล์ที่เล็กกว่าgzipแต่อาจใช้เวลานานกว่ามาก นอกจากนี้ในประสบการณ์ของฉันgzipเป็นสากลในระบบที่คล้าย Unix แต่bzip2ก็ยังไม่ (แม้ว่าจะเป็นเรื่องปกติและมักจะได้รับ)


3
7zip ( 7-zip.org ) เป็นอีกตัวเลือกที่ดีสำหรับการบีบอัดข้อมูลที่ยอดเยี่ยมโดยเสียเวลาของ CPU พบได้น้อยกว่า bzip2 (ไม่ได้ติดตั้งไว้ที่ใดที่ฉันรู้) แต่ติดตั้งได้ง่ายในสถานที่ส่วนใหญ่ (อยู่ในที่เก็บมาตรฐานสำหรับการแจกแจง Linux ส่วนใหญ่และมีแพ็คเกจติดตั้งง่ายสำหรับ Windows เช่น tar + gzip หน้าต่างการบีบอัดในไฟล์อินพุตจึงได้รับการประหยัดยิ่งขึ้นเมื่อซิปรวมไฟล์ขนาดเล็กจำนวนมาก
David Spillett

3
ประสิทธิภาพสามารถวัดได้ด้วยวิธีการที่รักษาข้อมูลไว้ดูคำตอบของคำถามนี้ น้ำมันดินดีกว่า zip ในการเก็บรักษาข้อมูล
neoneye

1
วัดอีกหนึ่งจะเข้ากันได้นอก UNIX Windows ใช้งานได้ดีกับ zip (อยู่ใน Windows) โดยปกติสามารถประมวลผล tar.gz ได้อย่างง่ายดายด้วย shareware แต่ bzip2 นั้นหายาก น่าเสียดายที่คำถามดั้งเดิมไม่ได้กล่าวถึงเกณฑ์เหล่านี้ดังนั้นจึงไม่สามารถดูว่ามีความเกี่ยวข้องหรือไม่
Rich Homolka

1
ฉันเคยตรวจทานอัตราส่วนการบีบอัดอย่างละเอียดกับเวลาที่ต้องใช้สำหรับคอมเพรสเซอร์ทั่วไปซึ่งจะมีประสิทธิภาพมากที่สุดโดยขึ้นอยู่กับว่าคุณให้ความสำคัญกับพื้นที่ว่างกับเวลาอย่างไร: blog.grandtrunk.net/2004/07/practical-compressor-test
Wim

9

ดังที่ Wim ตั้งข้อสังเกตว่า tar เองไม่ได้บีบอัด หากคุณเพิ่มการบีบอัด tar (เช่นเพื่อรับ. tar.gz หรือ. tar.bz2) แสดงว่าคุณกำลังบีบอัดไฟล์ tar ทั้งหมดในครั้งเดียว ในทางตรงกันข้าม zip บีบอัดไฟล์แต่ละไฟล์แยกกัน

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


4
... ในทางกลับกันคุณจะต้องรับไฟล์ zip ทั้งหมดก่อนจึงจะสามารถเข้าถึงเนื้อหาได้เนื่องจาก toc ถูกวางไว้ที่ท้าย ในทางตรงกันข้ามคุณสามารถ Untar น้ำมันดินให้เร็วที่สุดเท่าไบต์มาถึง ...
อากิระ

6

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

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

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

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

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


5

ดังที่ได้กล่าวไปแล้ว tar สร้าง "บล็อก" ขนาดใหญ่ของไฟล์ทั้งหมดที่สามารถบีบอัดด้วยสตรีม comrpessor เช่น gzip หรือ bzip2

ข้อเสียของสิ่งนี้คือคุณต้องแตกไฟล์ทั้งหมดเพื่อเข้าถึงไฟล์เดียวภายในไฟล์เก็บถาวร

ข้อดีของการทำเช่นนี้คืออัตราส่วนการบีบอัดมักจะสูงกว่าโดยเฉพาะอย่างยิ่งเมื่อไฟล์บีบอัดคล้ายกันมาก

ผู้แบ่งบรรจุรายอื่นเช่น "rar" มี "โหมดบล็อก" (หรือคล้ายกัน) เพื่อให้มีผลเหมือนกัน

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