โฮมเพจ » ทำอย่างไร » ประโยชน์ของการใช้รูปแบบไฟล์ Tar วันนี้คืออะไร

    ประโยชน์ของการใช้รูปแบบไฟล์ 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 คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.