ประโยชน์ของการใช้รูปแบบไฟล์ Tar วันนี้คืออะไร
รูปแบบการเก็บถาวร tar คือในปีที่คำนวณได้ Methuselah ที่แท้จริง แต่มันก็ยังคงมีการใช้งานอย่างหนักในปัจจุบัน สิ่งที่ทำให้รูปแบบ tar มีประโยชน์นานมากหลังจากเริ่มก่อตั้ง?
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
ผู้อ่าน SuperUser MarcusJ อยากรู้เกี่ยวกับรูปแบบน้ำมันดินและทำไมเรายังคงใช้มันหลังจากหลายปีที่ผ่านมา:
ฉันรู้ว่าน้ำมันดินถูกสร้างขึ้นเพื่อเก็บเทปไว้ในวันนี้ แต่วันนี้เรามีรูปแบบไฟล์เก็บถาวรที่ทั้งไฟล์รวมและทำการบีบอัดภายในรูปแบบไฟล์โลจิคัลเดียวกัน.
คำถาม:
- มีการปรับประสิทธิภาพในระหว่างการรวม / บีบอัด / ขั้นตอนการบีบอัดสำหรับการใช้ tar ที่ห่อหุ้มใน gzip หรือ bzip2 เมื่อเปรียบเทียบกับการใช้รูปแบบไฟล์ที่รวมและบีบอัดในโครงสร้างข้อมูลเดียวกันหรือไม่ สมมติว่ารันไทม์ของคอมเพรสเซอร์ที่เปรียบเทียบนั้นเหมือนกัน (เช่น gzip และ Deflate คล้ายกัน).
- มีคุณสมบัติของรูปแบบไฟล์ tar ที่รูปแบบไฟล์อื่นเช่น. 7z และ. zip หรือไม่?
- เนื่องจาก tar เป็นรูปแบบไฟล์เก่าและรูปแบบไฟล์ที่ใหม่กว่ามีอยู่ในปัจจุบันทำไม tar (ไม่ว่าจะเป็น encapsulated ใน gzip, bzip2 หรือแม้แต่ xz ใหม่) ยังคงใช้กันอย่างแพร่หลายใน GNU / Linux, Android, BSD และ UNIX อื่น ๆ ระบบปฏิบัติการสำหรับการถ่ายโอนไฟล์ซอร์สโปรแกรมและการดาวน์โหลดแบบไบนารีและบางครั้งก็เป็นรูปแบบตัวจัดการแพ็คเกจ?
นั่นเป็นคำถามที่สมเหตุสมผลอย่างสมบูรณ์ มีการเปลี่ยนแปลงมากมายในโลกของการคำนวณในช่วงสามสิบปีที่ผ่านมา แต่เรายังคงใช้รูปแบบ tar เรื่องราวของอะไร?
คำตอบ
ผู้สนับสนุน SuperUser Allquixotic นำเสนอข้อมูลเชิงลึกเกี่ยวกับอายุการใช้งานและการทำงานของรูปแบบ tar:
ส่วนที่ 1: ประสิทธิภาพ
นี่เป็นการเปรียบเทียบเวิร์กโฟลว์สองแบบแยกกันและสิ่งที่พวกเขาทำ.
คุณมีไฟล์บนดิสก์
blah.tar.gz
ซึ่งก็คือข้อมูลที่ถูกบีบอัด gzip ซึ่งมีขนาด 1 GB ซึ่งเมื่อไม่มีการบีบอัดจะใช้พื้นที่ 2 GB (ดังนั้นอัตราการบีบอัด 50%).วิธีที่คุณจะสร้างสิ่งนี้หากคุณต้องทำการเก็บถาวรและบีบอัดแยกต่างหากจะเป็น:
tar cf blah.tar ไฟล์ ...
ซึ่งจะส่งผลให้
blah.tar
ซึ่งเป็นการรวมตัวของไฟล์ ...
ในรูปแบบที่ไม่มีการบีบอัด.จากนั้นคุณจะทำ
gzip blah.tar
นี้จะอ่านเนื้อหาของ
blah.tar
จากดิสก์บีบอัดผ่านอัลกอริทึมการบีบอัด gzip เขียนเนื้อหาไปที่blah.tar.gz
, จากนั้นยกเลิกการเชื่อมโยง (ลบ) ไฟล์blah.tar
.ทีนี้มาขยายขนาดกัน!
วิธีที่ 1
คุณมี
blah.tar.gz
, ไม่ทางใดก็ทางหนึ่ง.คุณตัดสินใจที่จะเรียกใช้:
gunzip blah.tar.gz
นี่จะ
- อ่านเนื้อหาข้อมูลที่ถูกบีบอัด 1GB ของ
blah.tar.gz
.- ประมวลผลข้อมูลที่บีบอัดผ่าน
gzip
decompressor ในหน่วยความจำ.- เมื่อบัฟเฟอร์ของหน่วยความจำเต็มไปด้วยข้อมูล "บล็อก" ให้เขียนข้อมูลที่ไม่มีการบีบอัดลงในไฟล์
blah.tar
บนดิสก์และทำซ้ำจนกว่าจะอ่านข้อมูลที่บีบอัดทั้งหมด.- ยกเลิกการเชื่อมโยง (ลบ) ไฟล์
blah.tar.gz
.ตอนนี้คุณมี
blah.tar
บนดิสก์ซึ่งไม่ได้บีบอัด แต่มีไฟล์หนึ่งไฟล์หรือมากกว่านั้นอยู่ภายในพร้อมกับโครงสร้างข้อมูลที่ต่ำมาก ขนาดไฟล์น่าจะเป็น สองสามไบต์ มีขนาดใหญ่กว่าผลรวมของข้อมูลไฟล์ทั้งหมดจะเป็น.คุณวิ่ง:
tar xvf blah.tar
นี่จะ
- อ่าน 2GB ของเนื้อหาข้อมูลที่ไม่บีบอัด
blah.tar
และน้ำมันดิน
โครงสร้างข้อมูลของรูปแบบไฟล์รวมถึงข้อมูลเกี่ยวกับการอนุญาตไฟล์ชื่อไฟล์ไดเรกทอรี ฯลฯ.- เขียนลงดิสก์ขนาด 2GB ของข้อมูลรวมทั้งข้อมูลเมตา สิ่งนี้เกี่ยวข้องกับ: การแปลโครงสร้างข้อมูล / ข้อมูลเมตาดาต้าเป็นการสร้างไฟล์และไดเรกทอรีใหม่บนดิสก์ตามความเหมาะสมหรือการเขียนไฟล์และไดเรกทอรีที่มีอยู่ใหม่ด้วยเนื้อหาข้อมูลใหม่.
ข้อมูลทั้งหมดที่เรา อ่าน จากดิสก์ในกระบวนการนี้คือ 1GB (สำหรับ gunzip) + 2GB (สำหรับ tar) = 3GB.
ข้อมูลทั้งหมดที่เรา การอ้าง ไปยังดิสก์ในกระบวนการนี้คือ 2GB (สำหรับ gunzip) + 2GB (สำหรับ tar) + ไม่กี่ไบต์สำหรับข้อมูลเมตา = ประมาณ 4GB.
วิธีที่ 2
คุณมี
blah.tar.gz
, ไม่ทางใดก็ทางหนึ่ง.คุณตัดสินใจที่จะเรียกใช้:
tar xvzf blah.tar.gz
นี่จะ
- อ่านเนื้อหาข้อมูลที่ถูกบีบอัด 1GB ของ
blah.tar.gz
, บล็อกในเวลาในหน่วยความจำ.- ประมวลผลข้อมูลที่บีบอัดผ่าน
gzip
decompressor ในหน่วยความจำ.- เมื่อบัฟเฟอร์หน่วยความจำเต็มก็จะเกิดขึ้น ท่อ ข้อมูลนั้นในหน่วยความจำจนถึง
น้ำมันดิน
ตัวแยกวิเคราะห์รูปแบบไฟล์ซึ่งจะอ่านข้อมูลเกี่ยวกับข้อมูลเมตา ฯลฯ และข้อมูลไฟล์ที่ไม่บีบอัด.- ในขณะที่บัฟเฟอร์หน่วยความจำเต็มใน
น้ำมันดิน
ตัวแยกวิเคราะห์ไฟล์จะเขียนข้อมูลที่ไม่ได้บีบอัดลงในดิสก์โดยการสร้างไฟล์และไดเรกทอรีและเติมด้วยเนื้อหาที่ไม่บีบอัด.ข้อมูลทั้งหมดที่เรา อ่าน จากดิสก์ในกระบวนการนี้คือ 1GB ของข้อมูลที่บีบอัดระยะเวลา.
ข้อมูลทั้งหมดที่เรา การอ้าง ไปยังดิสก์ในกระบวนการนี้คือ 2GB ของข้อมูลที่ไม่บีบอัดข้อมูลและเมตาดาต้าสองสามไบต์ = ประมาณ 2GB.
หากคุณสังเกตเห็นจำนวนของดิสก์ I / O ใน วิธีที่ 2 คือ เหมือนกัน ไปยังดิสก์ I / O ที่ดำเนินการโดย, พูด,
ซิป
หรือ7-Zip
โปรแกรมปรับความแตกต่างในอัตราส่วนการบีบอัด.และหากคุณกังวลถึงอัตราส่วนการบีบอัดให้ใช้
xz
คอมเพรสเซอร์เพื่อแค็ปซูลน้ำมันดิน
, และคุณมีไฟล์เก็บถาวร TAR ของ LZMA2 ซึ่งมีประสิทธิภาพเท่ากับอัลกอริธึมที่ทันสมัยที่สุดที่มีให้7-Zip
:-)ส่วนที่ 2: คุณสมบัติ
น้ำมันดิน
เก็บสิทธิ์ UNIX ไว้ในเมตาดาต้าของไฟล์และเป็นที่รู้จักและทดสอบอย่างดีสำหรับการจัดเก็บไดเรกทอรีด้วยสิทธิ์ที่แตกต่างกันทุกชนิดลิงก์สัญลักษณ์ ฯลฯ มีมากกว่าสองสามตัวอย่างที่อาจจำเป็นต้องทำให้ไฟล์เป็นกลุ่ม ไฟล์เดียวหรือสตรีม แต่ไม่จำเป็นต้องบีบอัดไฟล์ (แม้ว่าการบีบอัดจะมีประโยชน์และมักใช้).ส่วนที่ 3: ความเข้ากันได้
เครื่องมือจำนวนมากมีการแจกจ่ายในแหล่งที่มาหรือรูปแบบไบนารีเป็น. tar.gz หรือ. tar.bz2 เพราะเป็นรูปแบบไฟล์ "ตัวหารร่วมที่ต่ำที่สุด": เหมือนกับผู้ใช้ Windows ส่วนใหญ่ที่มีการเข้าถึงตัวบีบอัด. zip หรือ. rar การติดตั้ง Linux ส่วนใหญ่ แม้ขั้นพื้นฐานที่สุดจะสามารถเข้าถึง tar และ gunzip ได้อย่างน้อยไม่ว่าจะอายุเท่าไรก็ตาม แม้แต่เฟิร์มแวร์ Android ก็สามารถเข้าถึงเครื่องมือเหล่านี้ได้.
โครงการใหม่ที่กำหนดเป้าหมายผู้ชมที่ใช้การแจกแจงแบบสมัยใหม่อาจแจกจ่ายได้ดีในรูปแบบที่ทันสมัยกว่าเช่น. tar.xz (ใช้รูปแบบการบีบอัด Xz (LZMA) ซึ่งบีบอัดได้ดีกว่า gzip หรือ bzip2) หรือ. 7z ซึ่งคล้ายกับ รูปแบบไฟล์ Zip หรือ Rar ซึ่งทั้งคู่บีบอัดและระบุโครงร่างสำหรับการรวมหลายไฟล์เป็นไฟล์เดียว.
คุณไม่เห็นว่า. 7z ใช้บ่อยขึ้นด้วยเหตุผลเดียวกับที่เพลงไม่ได้ขายจากร้านค้าดาวน์โหลดออนไลน์ในรูปแบบใหม่ล่าสุดเช่น Opus หรือวิดีโอใน WebM เข้ากันได้กับคนที่ใช้ระบบโบราณหรือพื้นฐานมาก.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.