ข้อดีของการใช้ 'tar' ในวันนี้คืออะไร?


209

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

คำถาม:

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

  • มีคุณสมบัติของtarรูปแบบไฟล์ที่รูปแบบไฟล์อื่นเช่น.7zและ.zipไม่มีหรือไม่?

  • ตั้งแต่tarเป็นเช่นรูปแบบไฟล์เก่าและใหม่รูปแบบไฟล์ที่มีอยู่ในปัจจุบันทำไมtar(ไม่ว่าจะห่อหุ้มในgzip, bzip2หรือแม้กระทั่งใหม่xz) ยังคงใช้กันอย่างแพร่หลายในวันนี้ GNU / Linux, Android, BSD และอื่น ๆ เช่นระบบปฏิบัติการยูนิกซ์สำหรับแฟ้ม ถ่ายโอนแหล่งที่มาของโปรแกรมและการดาวน์โหลดแบบไบนารีและบางครั้งก็เป็นรูปแบบตัวจัดการแพคเกจ?


33
ฉันไม่เห็นด้วยว่า "เสียเวลา" หากคุณหมายถึงประสิทธิภาพไม่มีการลงโทษประสิทธิภาพที่แท้จริงสำหรับ tar เนื่องจากรูปแบบนั้นมีประสิทธิภาพมาก ถ้าคุณหมายความว่ามันทำให้คุณเสียเวลาฉันไม่เห็นว่าtar xvzfมันยากกว่า7z -x...
allquixotic

41
ดูเหมือนว่าเขาจะคร่ำครวญถึงความจริงที่ว่า tar ไม่เก็บแคตตาล็อกในตอนเริ่มต้นดังนั้นเครื่องมือบีบอัด gui ที่ต้องการแสดงรายการเนื้อหาก่อนที่จะทำการแตกจะต้องแตกตัว tar ทั้งหมดเพื่อแสดงรายการเนื้อหา .
psusi

10
@MarcusJ: คุณคิดว่า 7z จะรู้ได้อย่างไรว่าไฟล์แต่ละไฟล์เริ่มขึ้นในที่เก็บถาวรหรือไม่? นอกจากนี้อัลกอริทึมการบีบอัดตามปกติ (gzip, bzip2) ยังทำงานร่วมกับการสตรีมเนื้อหา: ไม่จำเป็นต้องทำขั้นตอนแรกให้เสร็จสมบูรณ์ 100% ก่อนหน้าถัดไป
souser12345

11
@MarcusJ ดูเหมือนว่าคุณสับสนสองสิ่งที่ต่างกัน: เมื่อคุณทำเช่นtar xvzfนั้นข้อมูลที่ไม่มีการบีบอัดจะไม่ถูกเขียนลงในฮาร์ดดิสก์ใน.tarรูปแบบ! คุณพูดถูกว่าถ้าคุณวิ่งgunzip blah.tar.gzแล้วtar xf blah.tarมันจะเขียนข้อมูลลงดิสก์สองครั้ง (หนึ่งครั้งเป็น. tar และอีกครั้งเป็นไฟล์ในระบบไฟล์) แต่ไม่มีใครทำแบบนั้นจริง ๆ The tar xzfใช้UNIX Pipe (โดยทั่วไปคือสำเนาหน่วยความจำ) เพื่อถ่ายโอนข้อมูลที่ไม่มีการบีบอัดจากgzip(หรือคอมเพรสเซอร์ใด ๆ ) ไปยังtarดังนั้นข้อมูลจะไม่ถูกเขียนลงดิสก์ใน.tarรูปแบบ
allquixotic

14
สิ่งหนึ่งที่ฉันรู้คือtar(บีบอัดโดยเฉพาะ) ทำงานอย่างน่ากลัวเมื่อมันมาถึงข้อมูลเสียหาย ข้อมูลซ้ำซ้อน / การกู้คืนขนาดเล็กที่เพิ่มเข้ามาในรูปแบบที่ทันสมัยมีค่าทองคำ
PPC

คำตอบ:


178

ส่วนที่ 1: ประสิทธิภาพ

นี่เป็นการเปรียบเทียบเวิร์กโฟลว์สองแบบแยกกันและสิ่งที่พวกเขาทำ

คุณมีไฟล์บนดิสก์blah.tar.gzซึ่งก็คือข้อมูลที่ถูกบีบอัด gzip ขนาด 1 GB ซึ่งเมื่อไม่มีการบีบอัดจะมีขนาด 2 GB (ดังนั้นอัตราการบีบอัด 50%)

วิธีที่คุณจะสร้างสิ่งนี้หากคุณต้องทำการเก็บถาวรและบีบอัดแยกต่างหากจะเป็น:

tar cf blah.tar files ...

ซึ่งจะส่งผลblah.tarซึ่งเป็นการรวมตัวของfiles ...ในรูปแบบที่ไม่มีการบีบอัดเท่านั้น

จากนั้นคุณจะทำ

gzip blah.tar

นี้จะอ่านเนื้อหาของblah.tarจากดิสก์บีบอัดพวกเขาผ่านวิธีการบีบอัด gzip เขียนเนื้อหาไปblah.tar.gzแล้วยกเลิกการเชื่อมโยง (ลบ) blah.tarไฟล์

ตอนนี้มาขยายขนาด!

วิธีที่ 1

คุณมีblah.tar.gzไม่ทางใดก็ทางหนึ่ง

คุณตัดสินใจที่จะเรียกใช้:

gunzip blah.tar.gz

นี่จะ

  • อ่าน 1 GB blah.tar.gzบีบอัดเนื้อหาข้อมูล
  • ประมวลผลข้อมูลที่บีบอัดผ่านตัวgzipขยายการบีบอัดในหน่วยความจำ
  • เมื่อบัฟเฟอร์ของหน่วยความจำเต็มไปด้วยค่า "บล็อก" ของข้อมูลให้เขียนข้อมูลที่ไม่มีการบีบอัดลงในไฟล์blah.tarบนดิสก์และทำซ้ำจนกว่าข้อมูลที่บีบอัดทั้งหมดจะถูกอ่าน
  • ยกเลิกการเชื่อมโยง (ลบ) blah.tar.gzไฟล์

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

คุณวิ่ง:

tar xvf blah.tar

นี่จะ

  • อ่านเนื้อหาข้อมูลที่ไม่มีการบีบอัดขนาด 2 GB blah.tarและtarโครงสร้างข้อมูลของรูปแบบไฟล์รวมถึงข้อมูลเกี่ยวกับการอนุญาตไฟล์ชื่อไฟล์ไดเรกทอรี ฯลฯ
  • เขียนข้อมูล 2 GB พร้อมข้อมูลเมตาลงในดิสก์ สิ่งนี้เกี่ยวข้องกับ: การแปลโครงสร้างข้อมูล / ข้อมูลเมตาดาต้าเป็นการสร้างไฟล์และไดเรกทอรีใหม่บนดิสก์ตามความเหมาะสมหรือการเขียนไฟล์และไดเรกทอรีที่มีอยู่ใหม่ด้วยเนื้อหาข้อมูลใหม่

ข้อมูลทั้งหมดที่เราอ่านจากดิสก์ในกระบวนการนี้คือ 1 GB (สำหรับ gunzip) + 2 GB (สำหรับ tar) = 3 GB

ข้อมูลทั้งหมดที่เราWROTEไปยังดิสก์ในกระบวนการนี้คือ 2 GB (สำหรับ gunzip) + 2 GB (สำหรับ tar) + ไม่กี่ไบต์สำหรับข้อมูลเมตา = ประมาณ 4 GB

วิธีที่ 2

คุณมีblah.tar.gzไม่ทางใดก็ทางหนึ่ง

คุณตัดสินใจที่จะเรียกใช้:

tar xvzf blah.tar.gz

นี่จะ

  • อ่านเนื้อหาข้อมูลที่ถูกบีบอัด 1 GB ของblah.tar.gzบล็อกในแต่ละครั้งลงในหน่วยความจำ
  • ประมวลผลข้อมูลที่บีบอัดผ่านตัวgzipขยายการบีบอัดในหน่วยความจำ
  • ในขณะที่บัฟเฟอร์หน่วยความจำเต็มมันจะไปป์ข้อมูลนั้นในหน่วยความจำจนถึงtarตัวแยกวิเคราะห์รูปแบบไฟล์ซึ่งจะอ่านข้อมูลเกี่ยวกับข้อมูลเมตา ฯลฯ และข้อมูลไฟล์ที่ไม่บีบอัด
  • เมื่อบัฟเฟอร์หน่วยความจำเต็มในtarตัวแยกวิเคราะห์ไฟล์มันจะเขียนข้อมูลที่ไม่มีการบีบอัดลงในดิสก์โดยการสร้างไฟล์และไดเรกทอรีและเติมข้อมูลด้วยเนื้อหาที่ไม่บีบอัด

ข้อมูลทั้งหมดที่เราอ่านจากดิสก์ในกระบวนการนี้คือ 1 GB ของข้อมูลที่ถูกบีบอัดระยะเวลา

ข้อมูลทั้งหมดที่เราWROTEไปยังดิสก์ในกระบวนการนี้คือ 2 GB ของข้อมูลที่ไม่มีการบีบอัด + สองสามไบต์สำหรับเมตาดาต้า = ประมาณ 2 GB

หากคุณสังเกตเห็นจำนวนของดิสก์ I / O ในวิธีที่ 2จะเหมือนกับดิสก์ I / O ที่ดำเนินการโดยพูดโปรแกรมZipหรือ7-Zipปรับความแตกต่างของอัตราส่วนการบีบอัด

และถ้าอัตราส่วนการบีบอัดเป็นปัญหาของคุณให้ใช้Xzคอมเพรสเซอร์เพื่อแค็tarซูลและคุณมีไฟล์เก็บถาวร TAR ของLZMA2ซึ่งมีประสิทธิภาพเท่ากับอัลกอริธึมที่ทันสมัยที่สุดที่มีใน 7-Zip :-)

ส่วนที่ 2: คุณสมบัติ

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

ส่วนที่ 3: ความเข้ากันได้

เครื่องมือจำนวนมากมีการแจกจ่ายในแหล่งที่มาหรือรูปแบบไบนารีเป็น. tar.gz หรือ. tar.bz2 เนื่องจากเป็นรูปแบบไฟล์ "ตัวหารร่วมที่ต่ำที่สุด": เหมือนกับผู้ใช้ Windows ส่วนใหญ่ที่มีการเข้าถึง. zip หรือ. decar ตัวบีบอัดส่วนใหญ่ แม้พื้นฐานที่สุดจะสามารถเข้าถึง tar และ gunzip ได้อย่างน้อยไม่ว่าจะอายุเท่าไร แม้แต่เฟิร์มแวร์ Android ก็สามารถเข้าถึงเครื่องมือเหล่านี้ได้

โครงการใหม่ที่กำหนดเป้าหมายผู้ชมที่ใช้การแจกแจงแบบสมัยใหม่อาจแจกจ่ายได้ดีในรูปแบบที่ทันสมัยกว่าเช่น. tar.xz (ใช้รูปแบบการบีบอัด Xz (LZMA) ซึ่งบีบอัดได้ดีกว่า gzip หรือ bzip2) หรือ. 7z ซึ่งคล้ายกับรูปแบบไฟล์ZIP หรือRARที่ทั้งคู่บีบอัดและระบุโครงร่างสำหรับการรวมหลายไฟล์ไว้ในไฟล์เดียว

คุณไม่เห็น .7z ใช้บ่อยมากขึ้นสำหรับเหตุผลเดียวกันกับที่เพลงไม่ได้ขายจากร้านค้าออนไลน์ดาวน์โหลดในรูปแบบใหม่ของแบรนด์เช่นบทประพันธ์หรือวิดีโอWebM เข้ากันได้กับคนที่ใช้ระบบโบราณหรือพื้นฐานมาก


ความรุ่งโรจน์สำหรับคำตอบที่ยอดเยี่ยมด้วยเนื้อหาทั้งหมดที่แยกจากกันภายใต้สามส่วนหัวที่แตกต่างกัน
JFW

2
"ตอนที่ 3: ความเข้ากันได้" ดูเหมือนจะคัดลอกมาจากคำตอบของ @ Kruug
titaniumdecoy

23
@titaniumdecoy คุณสังเกตเห็นว่ามันเป็น allquixotic ที่ แต่เดิมเขียนส่วนนั้นและแก้ไขมันเป็นคำตอบของ Kruug?
slhck

2
ขอบคุณที่ชี้ให้เห็นว่าฉันไม่ได้สังเกต อย่างไรก็ตามฉันรู้สึกโง่เล็กน้อยที่มีบล็อกข้อความเหมือนกันในสองคำตอบที่ต่างกันในหน้านี้
titaniumdecoy

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

101

นี้ได้รับการตอบรับในกองมากเกิน

bzip และ gzip ทำงานกับไฟล์เดียวไม่ใช่กลุ่มของไฟล์ zip old ธรรมดา (และ pkzip) ทำงานกับกลุ่มของไฟล์และมีแนวคิดของการจัดเก็บในตัว

ปรัชญา * nix เป็นหนึ่งในเครื่องมือขนาดเล็กที่ทำงานเฉพาะอย่างดีและสามารถถูกผูกมัดเข้าด้วยกันได้ นั่นเป็นสาเหตุที่มีเครื่องมือสองอย่างที่นี่มีงานเฉพาะและพวกมันถูกออกแบบมาเพื่อให้เข้ากันได้ดี นอกจากนี้ยังหมายความว่าคุณสามารถใช้ tar เพื่อจัดกลุ่มไฟล์จากนั้นคุณมีตัวเลือกเครื่องมือบีบอัด (bzip, gzip, ฯลฯ )

เครื่องมือจำนวนมากมีการแจกจ่ายในแหล่งที่มาหรือรูปแบบไบนารีเป็น. tar.gz หรือ. tar.bz2 เนื่องจากเป็นรูปแบบไฟล์ "ตัวหารร่วมที่ต่ำที่สุด": เหมือนกับผู้ใช้ Windows ส่วนใหญ่ที่มีการเข้าถึง. zip หรือ. decar ตัวบีบอัดส่วนใหญ่ แม้ขั้นพื้นฐานที่สุดจะสามารถเข้าถึงอย่างน้อยที่สุดtarและgunzipไม่ว่าจะเก่าหรือลดลงก็ตาม แม้แต่เฟิร์มแวร์ Android ก็สามารถเข้าถึงเครื่องมือเหล่านี้ได้

โครงการใหม่ที่กำหนดเป้าหมายผู้ชมที่ใช้การแจกแจงแบบสมัยใหม่อาจแจกจ่ายได้ดีในรูปแบบที่ทันสมัยกว่าเช่น.tar.xz(ใช้รูปแบบการบีบอัดXz ( LZMA ) ซึ่งบีบอัดได้ดีกว่า gzip หรือ bzip2) หรือ. 7z ซึ่งคล้ายกับZIPหรือRARรูปแบบไฟล์ที่ทั้งบีบอัดและระบุโครงร่างเพื่อห่อหุ้มหลายไฟล์เป็นไฟล์เดียว

คุณไม่เห็น .7z ใช้บ่อยมากขึ้นสำหรับเหตุผลเดียวกันกับที่เพลงไม่ได้ขายจากร้านค้าออนไลน์ดาวน์โหลดในรูปแบบใหม่ของแบรนด์เช่นบทประพันธ์หรือวิดีโอWebM ความเข้ากันได้กับคนที่ใช้ระบบโบราณหรือพื้นฐานเป็นสิ่งสำคัญ


7
สวัสดี @Kruug ฉันแก้ไขโพสต์ของคุณเพื่อให้เข้าใจถึงเหตุผลว่าทำไมคนยังคงเลือกใช้รูปแบบเหล่านี้เมื่อพวกเขามีตัวเลือกให้ใช้อย่างอื่น ฉันไม่ได้เปลี่ยนข้อความที่คุณมีอยู่แล้ว นี่เป็นเพียงเพื่อให้แน่ใจว่าสิ่งที่ดูเหมือนจะเป็นคำตอบที่ยอมรับได้สำหรับคำถามนี้จะมีภาพเต็ม อย่าลังเลที่จะแก้ไขการแก้ไขของฉันหากคุณต้องการ :)
allquixotic

5
@ ทุกคนก่อตั้งกองทุน allquixotic? แก้ไขการแก้ไขและการแก้ไขเพื่อให้คุณสามารถแก้ไข ...
SnakeDoc

21
คำตอบนี้เป็นกรณีของ "บางครั้งฉันปลิวไปกับ upvotes ที่ไม่สมควร" มันไม่ได้ตอบปัญหาหลักของคำถามซึ่งอยู่ในรายการเนื้อหาของ tar น้ำมันบีบอัดและมันก็ไม่ใช่คำตอบดั้งเดิม!
ЯрославРахматуллин

5
-1 เพื่อความยุติธรรมที่ยิ่งใหญ่ สิ่งนี้ควรเป็นความคิดเห็น
Wim

6
ฉันไม่ซื้ออาร์กิวเมนต์ตัวหารร่วมที่เป็นมรดก / ต่ำที่สุด ฉันจำได้ว่าในระบบใหม่ (อาทิตย์) บ่อยครั้งที่ต้องดาวน์โหลด gzip / gunzip (จาก sunfreeware) เพียงเพื่อติดตั้งซอฟต์แวร์บรรจุอื่น tar.gz (บวก gnu tar เนื่องจาก tar ของดวงอาทิตย์ดูด) สำหรับตัวส่วนดั้งเดิม / ตัวส่วนที่ต่ำกว่าคุณมีtar.Z(บีบอัด / uncompress) ความก้าวหน้าของระบบสาธารณูปโภคเป็นกระแสที่คงที่ (ไม่ได้วางแผนไว้) เพื่อการเปลี่ยนแปลง & การปรับปรุง: Z => zip => gz => bz2 => 7z => xz (หรือสิ่งที่คุณต้องการ) สำหรับบทบาทของ tar มีการยกเลิก / บีบอัดเท่านั้นและยังต้องการ tar เพื่อรวมลำดับชั้นของไฟล์
ไมเคิล

63

Tar มีชุดการทำงานและตัวปรับแต่งมากมายที่รู้ทุกอย่างเกี่ยวกับระบบไฟล์ Unix รู้เกี่ยวกับสิทธิ์ของ Unix เกี่ยวกับเวลาต่าง ๆ ที่เกี่ยวข้องกับไฟล์, ฮาร์ดลิงก์, เกี่ยวกับซอฟต์ลิ้งค์ (และความเป็นไปได้ที่ลิงค์สัญลักษณ์สามารถแนะนำรอบในกราฟของระบบไฟล์) และอนุญาตให้คุณระบุวิธีต่างๆในการจัดการข้อมูลทั้งหมดนี้ .

  • คุณต้องการให้ข้อมูลที่แยกออกมาเพื่อรักษาเวลาการเข้าถึงไฟล์หรือไม่ น้ำมันดินสามารถทำเช่นนั้นได้ เพื่อสงวนสิทธิ์? น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการรักษาลิงก์สัญลักษณ์เป็นลิงก์สัญลักษณ์หรือไม่? ทาร์ทำอย่างนั้นโดยปริยาย ต้องการคัดลอกเป้าหมายแทนหรือไม่ น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการให้แน่ใจว่าข้อมูล hardlinked ถูกเก็บไว้เพียงครั้งเดียวเท่านั้น (นั่นคือเพื่อทำสิ่งที่ถูกต้อง)? ทาร์ทำเช่นนั้น

  • คุณต้องการจัดการไฟล์แบบเบาบางหรือไม่? น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการข้อมูลที่ไม่มีการบีบอัด (เพราะเหตุใด)? น้ำมันดินสามารถทำเช่นนั้นได้ บีบอัดด้วย gzip หรือไม่ น้ำมันดินสามารถทำเช่นนั้นได้ ด้วย bzip2 น้ำมันดินสามารถทำเช่นนั้นได้ ด้วยโปรแกรมบีบอัดภายนอกโดยพลการ? น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการที่จะเขียนหรือกู้คืนจากอุปกรณ์ดิบหรือไม่? รูปแบบของทาร์นั้นจัดการได้ดี

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

  • คุณต้องการให้แน่ใจว่าคุณไม่ได้เก็บถาวรในระบบไฟล์มากกว่าหนึ่งระบบหรือไม่? น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการคว้าเฉพาะไฟล์ที่ใหม่กว่าข้อมูลสำรองล่าสุดของคุณหรือไม่ น้ำมันดินสามารถทำเช่นนั้นได้

  • คุณต้องการสงวนชื่อผู้ใช้และกลุ่มหรือหมายเลข? น้ำมันดินสามารถทำอย่างใดอย่างหนึ่ง

  • คุณต้องการสงวนโหนดอุปกรณ์ (เช่นไฟล์ใน/dev) เพื่อให้หลังจากการแตกระบบจะทำงานอย่างถูกต้องหรือไม่? น้ำมันดินสามารถทำเช่นนั้นได้

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


12
คุณไม่จำเป็นต้องใช้ GNU tar เพื่อใช้ตัวบีบอัดโดยพลการ: เพียงบอก tar ให้เขียนไฟล์เก็บถาวรเพื่อ stdout ด้วยf -และไพพ์ไปยังคอมเพรสเซอร์
Ilmari Karonen

3
"คุณต้องการข้อมูลที่ไม่มีการบีบอัด (เพราะเหตุใด)?" ฉันใช้tarบ่อยมากในการคัดลอกทรีของระบบไฟล์จากที่หนึ่งไปอีกที่หนึ่งและสงวนสิทธิ์ ฯลฯ และการบีบอัดในกรณีนี้ใช้เวลาเพิ่มรอบ CPU tar cf - * | tar xf - -C /somewhereเช่น
Steve

1
นอกจากนี้คุณต้องการไฟล์. tar เมื่อระบบไฟล์ปลายทางทำการลบข้อมูลซ้ำ การสร้างไฟล์บีบอัดที่เก็บถาวรบนระบบไฟล์ที่ทำซ้ำการทำซ้ำจะลดอัตราส่วน dedupe ลงอย่างมาก ตัวอย่าง: เราเคยลบไฟล์ $ 10,000.00 tar.gz; ความหมายมันใช้พื้นที่เก็บข้อมูลมูลค่า 10,000 เหรียญเพราะมีคนใช้การบีบอัด
แอรอน

@ รอบการทำงานของ CPU อาจถูกกว่า disk IO สำหรับอัลกอริทึมเช่น LZ4 หรือ LZO นั่นเป็นเหตุผลที่พวกเขากำลังใช้ใน zram และระบบไฟล์บีบอัดโปร่งใสเช่น NTFS, ZFS, Btrfs ... ดังนั้นบางครั้งมันก็เป็นจริงได้เร็วกว่าการบีบอัดเนื่องจากปริมาณของดิสก์ IO จะลดลงมาก
phuclv

30

คุณสับสนทั้งสองกระบวนการที่แตกต่างของการเก็บข้อมูลและการบีบอัด

เหตุผลที่ใช้ Archiver

เหตุผลหนึ่งในการใช้การเก็บถาวรโดยไม่มีการบีบอัดคือตัวอย่างเช่นหากมีการคัดลอกไฟล์จำนวนมากจากโฮสต์หนึ่งไปยังอีกโฮสต์หนึ่ง คำสั่งดังต่อไปนี้

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

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

เหตุผลในการใช้ Archiver ที่มีการบีบอัด gzip

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

เหตุผลสำหรับการใช้tarในความโปรดปรานของscp, rsyncฯลฯ

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


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

2
คุณอาจไม่จำเป็นต้องหรือเนื้อหาของคุณอาจไม่สามารถบีบอัดได้
Hasturkun

4
ด้วยเหตุผลด้านประสิทธิภาพการใช้การรวมไฟล์แบบไม่บีบอัดเมื่อส่งข้อมูลผ่านลิงก์เครือข่ายแบนด์วิดท์ที่สูงมากซึ่งมักจะเร็วกว่าความเร็วที่คอมเพรสเซอร์สามารถบีบอัดข้อมูลได้ง่ายกว่า สิ่งนี้สามารถทำได้เช่นกับ Gigabit Ethernet อัลกอริธึมการบีบอัดที่ออกแบบมาอย่างดีเพียงไม่กี่ตัวเท่านั้นซึ่งมีอัตราส่วนการบีบอัดต่ำมากสามารถบีบอัดข้อมูลที่รวดเร็วแม้บนเดสก์ท็อปขนาดใหญ่ บนอุปกรณ์ฝังตัวคุณมีเวลา CPU น้อยลงในการทำงาน
allquixotic

3
ไม่เพียง แต่สิ่งนี้จะช่วยเร่งความเร็ว แต่ยังช่วยรักษาความเป็นเจ้าของไฟล์เวลาและคุณลักษณะ (หากสิทธิ์ของผู้ใช้อนุญาต)
Andre Holzner

3
@AndreHolzner ถูกต้อง tar cf - . | (cd ~/somewhere; tar xvf -)ฉันมักจะทำ มันมีประโยชน์จริงๆไม่ต้องรอจนกว่าจะเขียนดัชนีกลาง (เช่นในไฟล์ zip)
user239558

24

การเพิ่มคำตอบที่ดีอื่น ๆ ที่นี่ฉันชอบชุดค่าผสมtar+ gzip|bzip2|xzส่วนใหญ่เป็นเพราะไฟล์บีบอัดเหล่านี้เป็นเหมือนสตรีมและคุณสามารถไพพ์ได้อย่างง่ายดาย

ฉันต้องคลายการบีบอัดไฟล์ที่มีอยู่ในอินเทอร์เน็ต กับทั้งzipหรือrarรูปแบบที่ฉันต้องดาวน์โหลดได้ก่อนแล้วจึงบีบอัดได้ ด้วยtar.{gz,bz2,xz}ฉันสามารถดาวน์โหลดและคลายการบีบอัดในขั้นตอนเดียวกันโดยไม่จำเป็นต้องมีการบีบอัดไฟล์เก็บถาวรบนดิสก์:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

สิ่งนี้จะทำให้มีเพียงไฟล์ที่ไม่มีการบีบอัดในดิสก์ของฉันและจะเร่งกระบวนการทั้งหมดให้เร็วขึ้นเพราะฉันไม่ได้ลดเวลาดาวน์โหลดไฟล์ทั้งหมดก่อนและหลังจากการดาวน์โหลดเสร็จสิ้นฉันจะคลายการบีบอัดไฟล์ ฉันกำลังคลายการบีบอัดขณะดาวน์โหลด คุณไม่สามารถทำได้ด้วยไฟล์zipหรือrar


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

3
@psusi ไม่ถูกต้อง คุณสามารถแฮ็กแบบนี้ได้ แต่สิ่งที่มันทำคือดาวน์โหลดไฟล์ทั้งหมดในหน่วยความจำแล้วทำการแตกไฟล์แทนการคลายซิปขณะทำการดาวน์โหลด และfunzipแยกไฟล์แรกใน zipfile ไม่ใช่ทั้งหมด
Carlos Campderrós

2
@ Stu เพียงเพื่อชี้แจงไม่เป็นปัญหาเป็นเพียงการเพิ่มประสิทธิภาพเวลาของคุณ (ฉันไม่สนใจเกี่ยวกับพื้นที่ถ้านั่นคือสิ่งที่คุณคิดว่า)
คาร์ลอCampderrós

1
ทั้งสองทำงาน: คุณสามารถ tar ด้านหนึ่งและ untar ในอีกด้วย:tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Carlos Campderrós

1
@psusi ตามที่ฉันจำได้ตั้งแต่ครั้งเก่าเมื่อใช้ pkzip เพื่อจัดเก็บไฟล์ในหลายแผ่นฟล็อปปี้แคตตาล็อกร้านค้าซิปที่ส่วนท้ายของไฟล์เก็บถาวร มันขอฟลอปปี้ล่าสุดเสมอสำหรับการเริ่มต้นการแยกหรือแสดงแคตตาล็อก ดังนั้นen.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg
Mikhail Moskalev

13

มีหลายเหตุผลที่จะยึดติดกับ (GNU) Tar

มันคือ:

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

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


1
มันเป็นซอฟต์แวร์ฟรี - ดังนั้นจึงมีหลายอย่างดีในสิ่งที่มันทำ - แทบจะไม่เมื่อเทียบกับสิ่งอื่น ๆ มันได้รับการบันทึกไว้อย่างดีและมีคุณสมบัติมากมาย - มีการใช้งานคุณสมบัติแทบจะไม่น่าเชื่อถือและใช้งานง่าย มันสนับสนุนกลไกการบีบอัดหลาย - ไม่มากเท่าที่บางคนอื่น ๆ
กริฟฟิ

4
The Unix Gods สร้างขึ้น - ดังนั้นเราต้องใช้มัน!
SnakeDoc

28
ทาร์ยังเก็บสิทธิ์ UNIX โดยกำเนิดและเป็นที่รู้จักและทดสอบเป็นอย่างดี มีมากกว่าสองสามตัวอย่างที่บางคนอาจต้องการทำให้ไฟล์เป็นไฟล์หรือสตรีมไฟล์เดียว แต่ไม่จำเป็นต้องบีบอัดไฟล์
LawrenceC

3
โชคดีที่ tar ไม่ได้ จำกัด อยู่แค่รุ่น GNU เท่านั้น ในขณะที่ GNU tar เป็นซอฟต์แวร์ที่ดีอย่างแน่นอนส่วนหน้า + libarchive ที่เกี่ยวข้องจะเร็วและง่ายต่อการฝังในโครงการซอฟต์แวร์อื่น ๆ คุณสามารถทะเลาะกันเรื่องน้ำมันดินได้โดยไม่ต้องเปลี่ยนเป็นการต่อสู้เรื่องลิขสิทธิ์
ลูคัสโฮลต์

1
ฉันไม่ได้เหน็บแนม ฉันชอบอาร์เอ็มเอสและวิธีการที่เขาเชื่อมั่น
ЯрославРахматуллин

11

รูปแบบไฟล์เช่น. zip ต้องใช้ซอฟต์แวร์เพื่ออ่านจุดสิ้นสุดไฟล์ก่อนเพื่ออ่านแคตตาล็อกของชื่อไฟล์ ในทางกลับกัน tar จะเก็บข้อมูลนั้นไว้ในสตรีมที่ถูกบีบอัด

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

ข้อดีของวิธี zip คือสำหรับไฟล์แบบคงที่บนดิสก์คุณสามารถเรียกดูเนื้อหาและข้อมูลเมตาได้โดยไม่ต้องคลายการบีบอัดไฟล์ทั้งหมดก่อน

ทั้งสองมีประโยชน์ของพวกเขาขึ้นอยู่กับสิ่งที่คุณทำ


5
ไม่คุณสามารถอ่านและเขียนไฟล์ zip เป็นสตรีมจากและไปป์ได้
Mark Adler

นั่นอาจจะเป็นเฉพาะการใช้งานแล้วมันไม่ได้รับการสนับสนุนโดย pkzip ดั้งเดิมอย่างแน่นอน
xorsyst

1
ใช่ซอฟต์แวร์ต้องถูกเขียนขึ้นเพื่อรองรับ รูปแบบซิปรองรับได้อย่างสมบูรณ์ด้วยตัวอธิบายข้อมูลที่สามารถติดตามข้อมูลที่ถูกบีบอัดด้วยความยาวและ CRC
Mark Adler

@ MarkAdler ซอฟต์แวร์อะไร Infozip ไม่รองรับการขยายไฟล์จากไพพ์
psusi


11

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

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

ไม่ความจริงแล้วเนื่องจาก tar และ gzip นั้นเป็นสองกระบวนการคุณก็จะได้รับประโยชน์จากความเร็วของมัลติคอร์ที่ผู้จัดเก็บเช่นซิปของ Info-ZIP ไม่มีให้ ในแง่ของอัตราส่วนการบีบอัด tar + gzip มักจะทำได้ดีกว่า zip ด้วยแฟบเนื่องจากแฟรกเมนต์จะได้รับประโยชน์จากความสัมพันธ์ระหว่างไฟล์ในขณะที่ไฟล์บีบอัดหลังแยกกัน ข้อดีของการบีบอัดนั้นแปลเป็นประโยชน์ความเร็วเมื่อทำการแตกเนื่องจากไฟล์บีบอัดที่บีบอัดมากกว่านั้นจะแตกในเวลาที่น้อยลง

มีคุณสมบัติของรูปแบบไฟล์ tar ที่รูปแบบไฟล์อื่นเช่น. 7z และ. zip หรือไม่?

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

เนื่องจาก tar เป็นรูปแบบไฟล์เก่าและมีรูปแบบไฟล์ที่ใหม่กว่าอยู่ในปัจจุบันทำไม tar (ไม่ว่าจะเป็น encapsulated ใน gzip, bzip2 หรือแม้แต่ xz ใหม่) ยังคงใช้กันอย่างแพร่หลายในปัจจุบันใน GNU / Linux, Android, BSD และ UNIX อื่น ๆ ระบบปฏิบัติการสำหรับการถ่ายโอนไฟล์ที่มาของโปรแกรมและดาวน์โหลดไบนารีและบางครั้งก็เป็นรูปแบบตัวจัดการแพคเกจ?

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

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


CWย่อมาจากชุมชนวิกิพีเดีย ดูเพิ่มเติมโพสต์ "Community Wiki" คืออะไร .
ctype.h

ฉันเดาว่ามันเป็น CW เพราะคำถามมีมากกว่า 15 คำตอบ เมื่อคุณโพสต์คำตอบนี้เพราะมันคือวันที่ 15 คำถามและคำตอบทั้งหมดถูกทำเครื่องหมาย CW
ctype.h

ฉันไม่ได้เห็นว่าคำตอบนี้พูดอะไรบางอย่างที่ไม่มีคำตอบอื่นทำนอกเหนือจากการอ้างคำถามโดยตรง (ซึ่งฉันเขียน BTW เพราะการแก้ไขคำถามดั้งเดิมนั้นน่ากลัวมากพอที่จะปิดในฐานะ NARQ) แม้ว่าจะลองดี
allquixotic

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

โดยวิธีการสนทนาเวิร์กโฟลว์ของคุณเกี่ยวกับสิ่งที่ไม่เคยทำซึ่งก็คือการเขียนไฟล์ tar ไปยังดิสก์แล้วบีบอัดมัน tar ใช้เสมอเรียกโปรแกรมบีบอัดโดยตรงหรือโดยตรงไปยังไพพ์ไปยังโปรแกรมบีบอัด
Mark Adler

11

ประสิทธิภาพ

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

คุณสามารถจินตนาการได้โดยคิดถึงไฟล์สองไฟล์โดยที่ 500 ไบต์แรกของไฟล์ที่สองจะเหมือนกับ 500 ไบต์สุดท้ายของไฟล์แรก ด้วยzipวิธีการนี้คอมเพรสเซอร์จะถูกรีสตาร์ทสำหรับไฟล์ที่สองดังนั้นอย่าจำไว้ว่าไฟล์แรกจบลงด้วยข้อมูลเดียวกันดังนั้นจึงไม่สามารถลบข้อมูลที่ซ้ำกันออกจากไฟล์ที่สอง

ความนิยม

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

เหตุผลที่ทุกคนยังคงใช้tarเป็นเหตุผลเดียวกันที่ทุกคนยังคงใช้ Windows และFlash : คนไม่ชอบการเปลี่ยนแปลง หากไม่มีเหตุผลอันสมควรที่จะเปลี่ยนแปลงผู้คนก็ยึดมั่นในสิ่งที่พวกเขารู้ darไม่ได้ให้ประโยชน์เพียงพอที่จะปรับการเผยแพร่ไฟล์ในรูปแบบเมื่อคนส่วนใหญ่tarติดตั้งแล้วและมีคนรู้น้อยมากdarดังนั้นความเฉื่อยที่เรียบง่ายทำให้เราอยู่ในมาตรฐานเดิม


2
zip สามารถจัดเก็บและกู้คืนสิทธิ์ Unix ยูทิลิตี้ zip และ unzip จาก InfoZIP ที่กระจายตามปกติด้วยระบบ Unix ทำเช่นนี้
Mark Adler

3
zip ไม่บีบอัดไฟล์ในกลุ่ม 32K คุณกำลังสับสนขนาดหน้าต่างบานเลื่อนของ 32K กับวิธีการบีบอัดจะทำ
Mark Adler

1
gzip -9 ไม่มีพจนานุกรม 900 kB gzip ทุกระดับใช้พจนานุกรม 32K คุณอาจคิดถึง bzip2
Mark Adler

ข้อมูลที่ผิดมากในหนึ่งคำตอบ
Mark Adler

1
คุณต้องแก้ไขคำตอบของคุณหรือลบคำตอบ
Mark Adler

7

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

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

  • เป็นเจ้าของไฟล์
  • สิทธิ์ของไฟล์
  • การอนุญาตให้ใช้ไฟล์ที่พบได้น้อย (เช่น setuid, sticky bit)
  • ลิงก์สัญลักษณ์
  • ลิงค์ยาก
  • รายการอุปกรณ์ (เช่นตัวละครและอุปกรณ์บล็อก)
  • ไฟล์กระจัดกระจาย
  • รายการ ACL ( ไม่รองรับในทุกรุ่น )
  • คุณสมบัติเพิ่มเติม / ผู้ใช้ ( ไม่รองรับทุกเวอร์ชั่น )
  • ป้ายกำกับ SElinux ( ไม่รองรับทุกรุ่น )

นอกจากนี้ยังมี--one-file-systemตัวเลือกที่มีประโยชน์เป็นพิเศษเมื่อทำการสำรองข้อมูล

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


คำตอบนี้เป็นคำตอบเดียวที่สมเหตุสมผล ขอบคุณสำหรับการโพสต์
gaborous

5

เรามีไฟล์บีบอัดมากมายที่ลอยอยู่รอบ ๆ วันนี้ MP3, JPG, วิดีโอ, ไฟล์ tar.gz, แพ็คเกจ JAR, RPMs, DEB และอื่น ๆ หากคุณต้องการรวมกลุ่มของสิ่งเหล่านี้ลงในไฟล์เดียวสำหรับการถ่ายโอนมันจะมีประโยชน์ที่จะมียูทิลิตี้ 'tar' ซึ่งรวมเฉพาะไฟล์โดยไม่พยายามบีบอัดไฟล์

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

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

ฉันพบว่า tar 'มีความเกี่ยวข้องมากในวันนี้และฉันชอบที่จะใช้ ZIP ในสำนักงานของเราทุกคนที่ติดตั้ง Windows มี 7-zip ดังนั้นสำหรับเราไฟล์ tar สามารถใช้งานข้ามแพลตฟอร์มได้อย่างสมบูรณ์


คุณแทบไม่เคยเห็นtarไฟล์ที่ไม่มีการบีบอัดและมีเหตุผลในเรื่องนั้น tarใช้ชิ้นที่มีขนาดใหญ่มากซึ่งหมายความว่าคุณจะได้รับจำนวนมากในตอนท้ายของไฟล์ เพื่อกำจัดศูนย์เหล่านี้มันเกือบจะจ่ายให้แค่ใช้gzipโดยไม่ต้องคิดเลย
Christian

ข้อยกเว้นที่น่าขบขันคือซอร์สโค้ด gzip มีให้ในรูปแบบ tar น้ำมันด้วยเหตุผลที่ชัดเจน
Mark Adler

4

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

ที่ฉันเข้าใจมันมีเหตุผลทางประวัติศาสตร์ (ที่เกี่ยวข้องกับประวัติศาสตร์ OS, สิทธิบัตร "การป้องกัน" ความสามารถในการขายซอฟแวร์ขายเครื่องมือ ฯลฯ )

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

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

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


3

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


3

tar คือ UNIX เนื่องจาก UNIX เป็น tar

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

การมองอย่างใกล้ชิดถึงขั้นตอนที่เกี่ยวข้องในการสร้างคลังข้อมูลฉันหวังว่าคุณจะเห็นด้วยว่าวิธีการแยกงานที่แตกต่างกันเกิดขึ้นที่นี่คือปรัชญาของ UNIXที่ดีที่สุด:

  • หนึ่งเครื่องมือ ( tarที่จะให้มันชื่อที่นี่) ผู้เชี่ยวชาญในการปรับเปลี่ยนใด ๆการเลือกไฟล์ไดเรกทอรีและการเชื่อมโยงสัญลักษณ์รวมทุกข้อมูล meta-ที่เกี่ยวข้องเช่นการประทับเวลาเจ้าของและสิทธิ์เข้าสู่กระแสหนึ่งไบต์

  • และเป็นอีกเครื่องมือหนึ่งที่ใช้แทนกันได้ตามอำเภอใจ ( gzip bz2 xzเพื่อตั้งชื่อเพียงไม่กี่ตัวเลือก) ที่แปลงอินพุตสตรีมใด ๆของไบต์เป็นสตรีมเอาท์พุทขนาดเล็ก (หวังว่า)

การใช้และวิธีการดังกล่าวให้ประโยชน์ทั้งสองแก่ผู้ใช้และผู้พัฒนา:

  • ความสามารถในการขยาย ให้คู่tarกับอัลกอริทึมการบีบอัดใด ๆที่มีอยู่แล้วหรืออัลกอริทึมการบีบอัดใด ๆ ที่ยังคงได้รับการพัฒนาโดยไม่ต้องเปลี่ยนอะไรในการทำงานภายในของtarเลย

    ทันทีที่ทุกยี่ห้อใหม่ "ไฮเปอร์ซิป Utra" หรือโปรแกรมบีบอัด whater tarออกมาคุณอยู่แล้วพร้อมที่จะใช้กอดคนรับใช้ใหม่ของคุณด้วยพลังทั้งหมดของ

  • ความเสถียร tarมีการใช้งานอย่างหนักตั้งแต่ช่วงต้นยุค 80 และได้รับการทดสอบบนระบบปฏิบัติการและเครื่องจักรจำนวนมาก

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

  • ความสอดคล้องส่วนติดต่อผู้ใช้จะยังคงเหมือนเดิมตลอดเวลา

    ไม่จำเป็นต้องจำไว้ว่าการคืนค่าการอนุญาตโดยใช้เครื่องมือ A คุณต้องผ่านตัวเลือก--i-hope-you-rember-this-oneและการใช้เครื่องมือ B ที่คุณต้องใช้--this-time-its-another-one ในขณะที่ใช้เครื่องมือ C มัน - หวังว่าคุณไม่ได้ลองกับเครื่องมือเป็นสวิตช์

    ในขณะที่ในการใช้เครื่องมือที่ดีที่คุณจะได้จริงๆ messed --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-nowขึ้นได้ถ้าคุณไม่ได้ใช้


3

คำตอบที่ดีมากมาย แต่พวกเขาละเลยข้อเท็จจริงที่สำคัญทั้งหมด Tar มีระบบนิเวศที่เป็นที่ยอมรับของผู้ใช้และนักพัฒนาในโลกที่คล้าย Unix ที่ทำให้มันดำเนินต่อไปเช่นเดียวกับที่ ZIP ถูกเก็บไว้ในระบบนิเวศของ DOS / Windows การมีระบบนิเวศดังกล่าวเป็นสิ่งที่ค้ำจุนเทคโนโลยีไม่ใช่ข้อได้เปรียบทางเทคนิค


ความคิดเห็นที่ดีจริงๆฉันไม่ได้คิดอย่างนั้นและนั่นเป็นจุดที่ดีมากที่จะทำ
MarcusJ

3

เหตุผลคือ "ยึดมั่นในวัฒนธรรม" มีคนจำนวนมากเช่นฉันที่สายตาจ้องมองหากพวกเขาถูกขอให้ดำเนินการสิ่งอื่นนอกเหนือจากที่เก็บถาวร tar ที่ถูกบีบอัดหรือ ZIP เป็นครั้งคราวหากมาจากโลกของ Windows

ฉันไม่ต้องการได้ยินเกี่ยวกับ 7-Zip, RAR หรืออย่างอื่น หากฉันต้องติดตั้งโปรแกรมเพื่อคลายการบีบอัดไฟล์ของคุณแสดงว่าใช้ได้ ฉันจะทำมันถ้ามันทำให้ฉันถูกจ่ายหรือถ้าเนื้อหาเป็นสิ่งที่ฉัน "ต้องมี" และไม่สามารถใช้ได้ในทางอื่น

ข้อดีอย่างหนึ่งของ tar คือถ้าคุณส่ง tarball ให้ใครบางคนมันจะถูกจดจำทันที ผู้รับสามารถพิมพ์คำสั่งการดึงข้อมูลโดยใช้หน่วยความจำของกล้ามเนื้อ

คำถามที่แท้จริงคือทำไมบางคนหมกมุ่นอยู่กับการประหยัดพื้นที่อีกหนึ่งไบต์ที่พวกเขาขอให้คนอื่นเสียเวลาติดตั้งยูทิลิตี้แปลกใหม่และเรียนรู้วิธีการใช้งาน? แล้วมีการใช้รูปแบบการบีบอัดและไฟล์เก็บถาวรแบบแปลก ๆ ที่ไม่H.264วิดีโอที่มีAACเสียงจริงๆต้องใส่ลงไปใน Mult ส่วน RAR?

รูปแบบ tar อาจเก่า แต่เก็บทุกอย่างที่เกี่ยวข้อง: เนื้อหาไฟล์พา ธ การประทับเวลาการอนุญาตและการเป็นเจ้าของ มันจัดเก็บลิงค์สัญลักษณ์ไม่เพียง แต่จะสามารถรักษาโครงสร้างการเชื่อมโยงอย่างหนัก มันเก็บไฟล์พิเศษด้วยดังนั้นเทปสามารถใช้เก็บถาวรสำหรับสิ่งต่าง ๆ เช่น/devไดเรกทอรีย่อที่ใช้ในระหว่างการ bootstrapping คุณสามารถรวมการกระจาย Linux ไว้ด้วยกันซึ่งรูปแบบแพ็คเกจไบนารีประกอบด้วยอะไร แต่ tarballs ที่ไม่ได้บีบอัดจะสัมพันธ์กับรูทของระบบไฟล์


Re "หมกมุ่นอยู่กับสิ่งนั้นมาก" ... ลองจินตนาการว่าคุณติดอยู่ในเขตสงครามกับแล็ปท็อปที่ชุบแข็งเพียงครั้งเดียวและฮาร์ดไดรฟ์ขนาด 20G ที่แทบจะเกือบเต็มอาจเป็นกิ๊กเหลือและได้ยินเสียงปืนจากที่ไกลออกไป คู่มือ 100MB .PDF ที่แสดงวิธีซ่อมแซมรถจี๊ป แต่ไฟล์อยู่ในไฟล์ 2 Gig .tgz และแล็ปท็อปนั้นใช้ระบบปฏิบัติการที่แปลกประหลาดซึ่งเป็นระบบปิดและคุณไม่มีสิทธิ์เข้าถึงรูทเพื่อลบไฟล์ระบบไม่ใช่ว่ามันชัดเจนว่าจะลบ 4G + อย่างไรโดยไม่ทำลายเครื่องมือค้นหาหรือโปรแกรมดู PDF หากคุณสามารถแยกไฟล์ขนาด 100MB นั้นได้ ...
agc

2

ตอบคำถามที่คุณโพสต์โดยตรง:

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

มีการปรับปรุงประสิทธิภาพเฉพาะในกรณีทั่วไปโดยใช้tarโดยเฉพาะอย่างยิ่งกับไลบรารีการบีบอัดในตัว ( tar xvzfหรือtar xvjfบรรทัดคำสั่งสไตล์ที่ใช้ไลบรารีการบีบอัดมากกว่ากระบวนการที่สอง) สิ่งนี้มาจากสองสาเหตุหลัก:

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

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

มีคุณสมบัติของรูปแบบไฟล์ tar ที่รูปแบบไฟล์อื่นเช่น. 7z และ. zip หรือไม่?

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

เมตาดาต้า Unix ได้พัฒนาสิ่งแปลก ๆ ในช่วงหลายปีที่ผ่านมา ชื่อไฟล์อักขระ 14 ตัวชื่อไฟล์แบบยาวลิงก์ลิงก์ sym บิตเหนียวบิต superuser สิทธิ์การเข้าถึงกลุ่มที่สืบทอดมาและอื่น ๆ Tar เข้าใจและทำซ้ำสิ่งเหล่านี้ เครื่องมือแบ่งปันไฟล์ ... ไม่มาก ผู้คนจำนวนมากไม่ใช้ลิงก์อย่างที่ควรจะเป็น ... หากคุณเคยทำงานกับซอฟต์แวร์ที่ใช้ลิงก์แล้วใช้เครื่องมือที่ไม่ทราบว่าจะสำรองข้อมูลและคืนค่าตอนนี้คุณมีอิสระมากมาย ไฟล์แทนไฟล์เดียวที่มีหลายชื่อ ความเจ็บปวด ซอฟต์แวร์ของคุณล้มเหลวและคุณมีดิสก์ขยายตัว

เนื่องจาก tar เป็นรูปแบบไฟล์เก่าและมีรูปแบบไฟล์ที่ใหม่กว่าอยู่ในปัจจุบันทำไม tar (ไม่ว่าจะเป็น encapsulated ใน gzip, bzip2 หรือแม้แต่ xz ใหม่) ยังคงใช้กันอย่างแพร่หลายในปัจจุบันใน GNU / Linux, Android, BSD และ UNIX อื่น ๆ ระบบปฏิบัติการสำหรับการถ่ายโอนไฟล์ที่มาของโปรแกรมและดาวน์โหลดไบนารีและบางครั้งก็เป็นรูปแบบตัวจัดการแพคเกจ?

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

ฉันคิดว่าคำถามที่สำคัญที่สุดที่คุณไม่ได้ถามคืองาน 'tar' ไม่เหมาะกับงาน

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

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

tarด้วยการบีบอัดยังเล่นได้ไม่ดีกับไฟล์ที่บีบอัดไว้ล่วงหน้า หากคุณกำลังส่งข้อมูลที่บีบอัดไปแล้ว ... เพียงแค่ใช้ tar และไม่ต้องกังวลกับขั้นตอนการบีบอัด - มันแค่เพิ่มรอบการทำงานของ CPU เพื่อไม่มาก นั่นหมายความว่าคุณต้องรู้ว่าคุณส่งอะไรไปไหนและทำไม ถ้าคุณแคร์ หากคุณไม่สนใจเกี่ยวกับกรณีพิเศษเหล่านั้น tar จะคัดลอกข้อมูลอย่างซื่อสัตย์และการบีบอัดจะล้มเหลวในการทำสิ่งที่มีประโยชน์มากมายให้เล็กลง ไม่มีปัญหาใหญ่นอกจาก CPU บางรอบ


-3

TAR เป็นที่เก็บเทป มันมีมานานหลายทศวรรษแล้วและมีการใช้งานและรองรับอย่างกว้างขวาง มันเป็นผลิตภัณฑ์ที่เป็นผู้ใหญ่และดูแลความต้องการในปัจจุบันเช่นเดียวกับที่เป็นมรดก

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