tar จริง ๆ บีบอัดไฟล์หรือเพียงแค่รวมกลุ่มเข้าด้วยกันหรือไม่?


37

ฉันมักจะสันนิษฐานว่าtarเป็นโปรแกรมบีบอัดข้อมูล แต่ฉันไม่แน่ใจว่าจริง ๆ แล้วบีบอัดไฟล์หรือเป็นเหมือนไฟล์ ISO ไฟล์เก็บไฟล์หรือไม่


นอกจากนี้ในSuperUser
allquixotic

คำตอบ:


49

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


9
คำตอบที่ชัดเจนเล็กน้อย เป็น tar ของ GNU ที่ให้อาร์กิวเมนต์การบีบอัดเพิ่มเติมเหล่านั้น ตัวอย่างเช่น Solaris tar ไม่ได้ระบุอาร์กิวเมนต์สำหรับการบีบอัด
Tero Kilkanen

5
oooh นั่นคือเหตุผลที่ฉันเห็นอยู่thing.tar.7z
เรื่อย ๆ

BSD tar จัดเตรียมอาร์กิวเมนต์สำหรับการบีบอัดด้วยแม้ว่าจะยอมรับzและกำหนดวิธีการบีบอัดตามส่วนขยายเท่านั้นในขณะที่ GNU tar มีzZjJอาร์กิวเมนต์แยกต่างหากสำหรับวิธีการบีบอัดที่แตกต่างกัน
wingedsubmariner

2
เพียงอ่าน manpage ของ BSD และปรากฎว่าฉันเข้าใจผิด BSD tar ใช้แยกต่างหากzZjJสำหรับการบีบอัดเช่นเดียวกับ GNU tar อย่างไรก็ตามมันจะตรวจจับการบีบอัดโดยอัตโนมัติเมื่อทำการคลายการบีบอัดในขณะที่ GNU tar คาดหวังzZjJด้วยเช่นกัน
wingedsubmariner

5
@wingedsubmariner: ไม่; modern-ish เวอร์ชั่นของ GNU แตกไฟล์tarโดยอัตโนมัติโดยไม่ต้องใช้-zZjJตัวเลือก
Jonathan Leffler

17

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

BTW, ไฟล์ ISO ไม่ใช่ "ไฟล์สำหรับเก็บไฟล์" - เป็นภาพของระบบไฟล์ทั้งหมด (อันแรกที่ออกแบบมาเพื่อใช้กับแผ่นซีดี) และโครงสร้างของมันมีความซับซ้อนมากขึ้น


3
จริงๆแล้วไฟล์เปล่าจะไม่กิน 1kb ไฟล์ขนาด 1-1023 ไบต์จะ
psusi

@psusi ดังนั้นสำหรับไฟล์ไบต์ 1-1023 จะใช้ 1024 เสมอซึ่งส่งผลให้สิ้นเปลือง 1,023-1 ไบต์
Shiplu Mokaddim

2

คำสั่ง UNIX tar ดั้งเดิมไม่บีบอัดไฟล์เก็บถาวร ดังที่ได้กล่าวไว้ในความคิดเห็น Solaris tar ไม่บีบอัด HP-UX หรือ AIX, FWIW หรือ จากการประชุมเอกสารสำคัญที่ไม่มีการบีบอัดจะลงท้าย.tarด้วย

ด้วย GNU / Linux คุณจะได้ GNU tar (คุณสามารถติดตั้ง GNU tar บนระบบ UNIX อื่น ๆ ) โดยปกติแล้วมันจะไม่บีบอัด อย่างไรก็ตามจะบีบอัดไฟล์เก็บถาวรที่เป็นผลลัพธ์ด้วย gzip (เช่น GNU) หากคุณให้-zบริการ คำต่อท้ายทั่วไปสำหรับไฟล์ gzipped คือ.gzดังนั้นคุณมักจะเห็น tarballs (สแลงสำหรับไฟล์เก็บถาวร tar ซึ่งมักจะหมายถึงไฟล์บีบอัด) ที่ลงท้าย.tar.gzด้วย นั่นหมายถึงการสิ้นสุด tar ก็วิ่งตามมาด้วย gzip tar cf - .|gzip -9v > archive.tar.gzเช่น นอกจากนี้คุณยังจะได้พบกับข้อมูลที่เก็บไว้ในตอนจบเช่น.tgztar czf archive.tgz .

แก้ไข: www.linfo.org/tar.htmlเตือนฉันว่า GNU tar สนับสนุนการทำงานมากกว่าการบีบอัดด้วย gzip และทำให้ฉันนึกถึงว่าคำต่อท้ายเป็นมากกว่าการประชุมธรรมดา พวกเขามีความหมายในตัว นอกจากนี้ยังรองรับ bzip2 ( -jสำหรับ.bz2) และบีบอัดเก่า ( -Zสำหรับ.Z) จากนั้นฉันดูที่หน้าคนและได้รับการเตือนว่า-aจะจับคู่วิธีการบีบอัดที่คุณต้องการโดยอัตโนมัติตามคำต่อท้าย

อีกนิดหน่อย ในฐานะที่เป็นหน้าคน tar ลินุกซ์กล่าวว่า GNU ผลิตหน้าข้อมูลไม่ได้หน้าคนเพื่อที่จะเรียนรู้เกี่ยวกับ GNU tar info tarวิ่ง


tar GNU ยังคงไม่จัดการการบีบอัดด้วยตัวเองเพียงไปป์จาก gzip, bzip2, การบีบอัดและอื่น ๆ
ott--

ฉันได้ดูที่แหล่งที่มา tar GNU จัดการการบีบอัด! การติดตั้งใช้ประโยชน์จากการนำโค้ดกลับมาใช้ใหม่และหลักการสถาปัตยกรรมพื้นที่ผู้ใช้ UNIX "Just pipes" คือการเข้าใจวิธีการบีบอัดรวมเข้ากับเครื่องมืออย่างแน่นหนา ความจริงที่ว่ามันเกิดขึ้นกับโปรแกรม fork helper นั้นเป็นเรื่องทางเทคนิค หากคุณต้องการปกป้อง "just pipes" ให้อ้างอิงชื่อไฟล์และหมายเลขบรรทัดแล้วมาดูว่าชุมชนใช้ด้านใด
tbc0

ใช้เวลาไม่กี่วันก่อนที่ฉันจะสามารถตรวจสอบแหล่งที่มา
ott--

1

ยูทิลิตี tar ไม่บีบอัดจนกว่าคุณจะให้อาร์กิวเมนต์เพื่อให้ [tar -z ชื่อไฟล์]

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