คำตอบ:
TARสร้างไฟล์ที่เก็บถาวรเดียวจากไฟล์จำนวนมาก แต่ไม่บีบอัดไฟล์
ไฟล์ tar คือการต่อข้อมูลอย่างน้อยหนึ่งไฟล์ แต่ละไฟล์นำหน้าด้วยเร็กคอร์ดส่วนหัว 512- ไบต์ ข้อมูลไฟล์ถูกเขียนไม่เปลี่ยนแปลงยกเว้นความยาวของมันจะถูกปัดเศษเป็นหลายไบต์ที่ 512 และพื้นที่ว่างเต็มเป็นศูนย์ จุดสิ้นสุดของการเก็บถาวรถูกทำเครื่องหมายด้วยระเบียนที่กรอกข้อมูลศูนย์อย่างน้อยสองรายการ
GZIPบีบอัดไฟล์เดียวเป็นไฟล์เดียว แต่ไม่สร้างคลังข้อมูล
... แม้ว่ารูปแบบไฟล์จะอนุญาตให้มีการตัดแบ่งการเชื่อมต่อหลาย ๆ ไฟล์ (ไฟล์ซิปจะถูกบีบอัดแบบต่อกันราวกับว่าพวกเขาเป็นไฟล์เดียว) แต่โดยปกติแล้ว gzip จะใช้ในการบีบอัดไฟล์เพียงไฟล์เดียว [4] การบีบอัดไฟล์เก็บถาวรโดยทั่วไปแล้วจะสร้างขึ้นโดยการรวมกลุ่มของไฟล์ลงในไฟล์เก็บถาวร tar เดียวแล้วบีบอัดไฟล์เก็บถาวรนั้นด้วย gzip
tar -xzvf tarball.tar.gz single/file.txt
. เบื้องหลังมันต้องทำงานพิเศษบางอย่าง แต่สำหรับไฟล์ที่ปรากฏมันจะแยกไฟล์เดียว
.tar.*
เก็บถาวรบีบอัดเสมอ "มั่นคง" คือ ประกอบด้วยสตรีมที่บีบอัดเดี่ยว การ.zip
เก็บถาวรในทางกลับกันไม่มั่นคงเลยอัลกอริธึมการบีบอัดเริ่มต้นใหม่สำหรับแต่ละไฟล์ มันเสียสละประสิทธิภาพการบีบอัดเพื่อเพิ่มความเร็วในการเข้าถึงแบบสุ่ม .7z
ไฟล์เก็บถาวรสามารถเป็น solid, non-solid หรือมี solid blocks
Gzip / Bzip2 เป็นเครื่องอัดกระแส พวกเขาบีบอัดข้อมูลเป็นสิ่งที่เล็กลง สามารถใช้กับไฟล์แต่ละไฟล์ แต่ไม่สามารถใช้กับกลุ่มของไฟล์ด้วยตนเอง
ในทางกลับกันทาร์มีความสามารถในการเปลี่ยนรายการไฟล์ที่มีพา ธ การอนุญาตและข้อมูลการเป็นเจ้าของให้เป็นสตรีมต่อเนื่องเดียว - และในทางกลับกัน
นั่นคือเหตุผลที่ไฟล์เก็บถาวร (และหากจำเป็นต้องบีบอัดด้วย) โดยปกติจะใช้ tar + วิธีการบีบอัดบางอย่าง
Tar รับผิดชอบในการทำสิ่งหนึ่งและสิ่งเดียวเท่านั้นที่ดี: (un) การเก็บถาวรลงใน (จาก) ไฟล์เก็บถาวรเดียว ของอะไร? หนึ่งในสิ่งเดียวเท่านั้น: ชุดของไฟล์
Gzip มีหน้าที่ในการทำสิ่งหนึ่งและสิ่งเดียวเท่านั้นที่ดี: (un) การบีบอัด ของอะไร? สิ่งหนึ่งและสิ่งเดียวเท่านั้น: ไฟล์เดียวทุกชนิด ... และที่มีไฟล์ที่สร้างขึ้นด้วย tar
มันกลับไปสู่ปรัชญาของระบบยูนิกซ์ของการวางท่อสถาปัตยกรรม "ไปป์และฟิลเตอร์" พื้นฐาน; การรักษาทุกอย่างในรูปแบบไฟล์และเป้าหมายสถาปัตยกรรมด้านเสียงของ "สิ่งหนึ่งสิ่งใดสิ่งหนึ่งสิ่งใดสิ่งหนึ่งเพียงอย่างเดียวและสิ่งที่ดี" (ซึ่งส่งผลให้เป็นปลั๊กอินที่เล่นง่ายและสง่างาม .)
ในความเรียบง่ายมันเกือบเป็นพีชคณิตในธรรมชาติ (เป้าหมายที่หนักหน่วงในการออกแบบระบบ) และนั่นก็ไม่ใช่เรื่องง่าย
ในหลาย ๆ ทาง (และไม่มีข้อบกพร่อง) นี่เกือบจะเป็นจุดสูงสุดของความสามารถในการเรียงลำดับโมดูลัสการมีเพศสัมพันธ์แบบหลวมและการรวมกันที่สูง หากคุณเข้าใจสี่สิ่งนี้ (และฉันหมายถึงเข้าใจจริงๆ ) คุณเข้าใจแล้วจะเห็นได้ชัดว่าทำไม tar และ gzip จึงทำงานเป็นคู่
ประการแรก TAR ไม่ได้ถูกสร้างขึ้นเพื่อสร้างไฟล์เก็บถาวร มันArchiver เทป หน้าที่ของมันคือการเขียนหรือโหลดไฟล์เก็บถาวรไปยัง / จากเทป
-fตัวเลือกที่จะทำให้มันใช้ไฟล์เป็น "เทปเสมือน" ซึ่งจากนั้นจะสามารถบีบอัดโดยโปรแกรมอื่น ในความเป็นจริงการบีบอัดดังกล่าวเกิดขึ้นกับเทปที่ใช้งานจริงเช่นกัน
แน่นอนว่าปรัชญาของการใช้หนึ่งโปรแกรมเพื่อทำให้ดีนั้นนับรวมในกรณีนี้ แต่ก็อาจพลาดได้ว่าทำไมไฟล์เก็บถาวร TAR จึงมีโครงสร้างเป็นสตรีมแทนที่จะเป็นไดเรกทอรีของเนื้อหา + เนื้อหา
ตามเนื้อผ้าระบบ Unix ใช้โปรแกรมหนึ่งไปดำเนินการอย่างใดอย่างหนึ่งต่อปรัชญา Unix : tar
เป็นเพียงวิธีการจัดแพคเกจหลายไฟล์เป็นไฟล์เดียวเดิมสำหรับเทปสำรองข้อมูล (เพราะฉะนั้นtar
, เสื้อลิงเท่ลูกกระเทียม) tar
ไม่ให้การบีบอัด เก็บไม่มีการบีบอัดที่เกิดมักจะถูกบีบอัดด้วยโปรแกรมอื่น ๆ บางอย่างเช่นgzip
, หรือbzip2
xz
ในสมัยก่อนพวกเขาต้องการใช้compress
คำสั่งเพื่อทำสิ่งนี้ อัลกอริทึมการบีบอัดใหม่กว่ามีประสิทธิภาพมากกว่านี้
วิธีการที่ถูกทำให้เป็นโมดูลสูงที่กำหนดโดยปรัชญา Unix หมายความว่าแต่ละโปรแกรมสามารถใช้ทีละตัวตามความเหมาะสมหรือรวมกันเพื่อทำงานที่ซับซ้อนมากขึ้นรวมถึงการสร้างคลังข้อมูลบีบอัดตามที่อธิบายไว้ที่นี่ สำหรับงานประเภทเหล่านี้มันยังทำให้ง่ายต่อการสลับเครื่องมือแต่ละอย่างตามต้องการ คุณเพียงแค่เปลี่ยนโปรแกรมบีบอัดเพื่อใช้อัลกอริทึมการบีบอัดที่แตกต่างกันโดยไม่ต้องเปลี่ยนtar
ยูทิลิตี้เอง
วิธีการแบบแยกส่วนนี้ไม่ได้ไม่มีข้อเสีย ในฐานะที่เป็นที่กล่าวถึงในความคิดเห็นที่คำตอบอื่น ๆ ซึ่งเป็นรูปแบบที่เก็บทุ่มเทบีบอัดเหมือน.zip
จะดีกว่าที่จะสามารถจัดการกับการสกัดของแต่ละไฟล์; tarballs ที่ถูกบีบอัดจะต้องทำการคลายการบีบอัดเกือบทั้งหมดเพื่อแตกไฟล์ใกล้ถึงจุดสิ้นสุดของไฟล์เก็บถาวรในขณะที่.zip
ไฟล์เก็บถาวรอนุญาตให้เข้าถึงเนื้อหาแบบสุ่มได้ (บางรูปแบบที่ใหม่กว่าเช่น.7z
สนับสนุนคลังเก็บถาวรและไม่ใช่เก็บถาวรรวมทั้งบล็อกทึบขนาดแตกต่างกันในคลังเก็บขนาดใหญ่) การใช้อย่างต่อเนื่องtar
ร่วมกับยูทิลิตี้การบีบอัดแยกต่างหากเป็นเรื่องของประเพณีและความเข้ากันได้; นอกจากนี้.7z
และ.zip
ไม่สนับสนุนข้อมูลเมตาของระบบไฟล์ Unix เช่นการอนุญาต