ทำไม tar ไม่สามารถแยกไฟล์. zip ได้ [ปิด]


28

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


1
เพียงแค่ทราบbsdtarสามารถดึง.zipเก็บถาวร: P
HalosGhost

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

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

คุณไม่มีzipตามค่าเริ่มต้นเนื่องจากการให้สิทธิ์ใช้งานไม่เข้ากันกับ GPL
venimus

คำตอบ:


29

ปรัชญา UNIX คือการมีเครื่องมือขนาดเล็ก เครื่องมือตัวหนึ่งกำลังทำสิ่งเดียว แต่สิ่งนี้ดีเป็นพิเศษ

tarเครื่องมือเป็นเพียงการรวมหลายไฟล์เป็นไฟล์เดียวโดยไม่ต้องบีบอัดใด ๆ

gzipเครื่องมือเป็นเพียงการบีบอัดไฟล์เดียว

หากคุณต้องการมีทั้งสองอย่างคุณเพียงรวมเครื่องมือทั้งสองที่เกิดขึ้นใน.tar.gzไฟล์


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


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


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

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

9

เรื่องสั้น ๆ สั้น ๆ : เครื่องมือ tar GNU ไม่ได้ส่งผ่าน zip / unzip เนื่องจากไม่มีใครใส่ใจ

เรื่องยาวขนาดเดิม:

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

ตอนนี้ที่จะทำให้งานดังกล่าวเจ็บปวดที่สุด, tarตัดสินใจที่จะท่อภายในไฟล์ที่สร้างขึ้นเพื่อเป็นเครื่องมือในการบีบอัดเช่น gzip, LZMA tarเป็นต้นซึ่งถูกเปิดใช้งานโดยธงพิเศษสำหรับแต่ละรูปแบบเมื่อทำงาน นั่นเป็นเหตุผลที่เมื่อคุณพยายามที่จะแตกไฟล์ที่เสียหายผ่านทางtarคุณจะแสดงข้อผิดพลาดเครื่องมือพื้นฐานแทนที่จะเป็นของtar:

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

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

ขณะนี้มีเครื่องมือแบบ all-in-one ที่บีบอัด / คลายการบีบอัดทุกอย่างที่คุณโยนไปอีกครั้งคุณต้องมีเครื่องมือที่ถูกต้องเพื่อรองรับมันจริง หากคุณไม่มีพวกเขาเครื่องมือจะล้มเหลว


1
ดีกว่าเพียงแค่ไม่มีใครดำเนินการเครื่องมือที่เหมาะสมกับท่อผ่านมีไม่ได้เป็นหนึ่ง: แฟ้ม tar เท่านั้นรวมหลายไฟล์เป็นหนึ่ง การบีบอัดแยกต่างหาก ดังนั้นตัวกรอง tar ท่อผ่านเพียงแค่บีบอัด / ขยายไฟล์ tar เดียว Zip ทำงานแตกต่างกัน มันใช้เครื่องมือรวมตัวหนึ่งเพื่อบีบอัดและรวม (โปรแกรม Unix ที่คล้ายกันafio)
Derobert

ฉันขอแนะนำให้พูดถึงเครื่องมือบีบอัดข้อมูลทั้งหมดที่มีอยู่ เช่นมี GNOME file-roller...
Derobert

@derobert file-roller รองรับเฉพาะ zip ถ้าคุณได้ทำการ unzip / zip / p7zip ติดตั้งอยู่ มิฉะนั้นก็ไร้ประโยชน์เหมือนน้ำมันดิน
Braiam

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

@derobert อย่างแน่นอน
Braiam

3

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

เมื่อคุณแตกzipไฟล์ไม่มีtarไฟล์อยู่ในนั้นเพียงแค่ไฟล์ต้นฉบับทั้งหมดของคุณ ดังนั้นจึงไม่มีเหตุผลที่tarจะมีส่วนร่วมในกระบวนการเลย

คุณยังสามารถบีบอัดไฟล์โดยใช้gzipหรือbzip2ด้วยตัวเองเช่นเดียวกับที่คุณสามารถสร้างzipไฟล์ (โดยไม่tarเกี่ยวข้อง) เมื่อคุณยกเลิกการบีบอัดไฟล์เหล่านี้คุณจะใช้gunzipหรือไม่bunzip2tar


1

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

ดังนั้นดูเหมือนว่าปัญหาจะเป็นหนึ่งในที่ที่เครื่องมือไปและจุดมุ่งหมายของพวกเขาคืออะไร

แทนการถอดความสิ่งที่ฉันพบและทำให้น้ำมืดโดยไม่จำเป็น (obfuscation ทำให้ฉันโกรธ) ลองดูที่บทความนี้: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/

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

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