gunzip & tar xf ทำงานภายใต้สถานการณ์ใดบ้าง แต่ tar xzf ล้มเหลว


9

เพื่อแสดงให้เห็นจุด: ผมได้ดาวน์โหลดห้องสมุด LEDA จากเว็บไซต์ของ บริษัท การใช้ tar -xzf กับมันล้มเหลว:

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

อย่างไรก็ตาม gunzip ตามด้วย tar -xf ใช้งานได้ดี:

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

มีใครบอกได้ไหมว่าทำไมถึงเป็นเช่นนั้น - ฉันต้องการให้tarคำสั่งมาตรฐานทำงานตลอดเวลา


ระบบปฏิบัติการอะไร IIRC มี Unixes tarที่ไม่ได้ใช้ -z
Bananguin

@ user1129682 จากเว็บไซต์ของ บริษัท ดูเหมือนว่าจะมีเพียงตัวเลือกสำหรับ Linux และ Win ...
MattDMo

หาก tar ของคุณไม่รองรับ z ให้ใช้ pipe แทน: gunzip < archive.tar.gz | tar -xควรทำงานได้ทุกที่
frostschutz

หากสำเนาของtarไม่สนับสนุนการบีบอัด gunzip gunzip -c $file | tar -xคุณสามารถทำต่อไปนี้แทน: มันเป็นเรื่องธรรมดาที่จะห่อมันในเชลล์ฟังก์ชั่น

1
ฉันเพิ่งดาวน์โหลดไฟล์เก็บถาวรนั้นและtar xzfให้ข้อผิดพลาดกับ Debian GNU / Linux (ซึ่งแน่นอนว่าใช้ gnutar) แปลก
Derobert

คำตอบ:


12

สิ่งที่ดูเหมือนจะเกิดขึ้นก็คือพวกเขาบีบอัดไฟล์เก็บถาวรเป็นสองเท่า

หากคุณทำงานfileกับไฟล์ gunzip ของคุณคุณจะพบว่ายังคงเป็นไฟล์เก็บถาวร gzip และหากคุณเปลี่ยนชื่อเป็น. gz อีกครั้งคุณสามารถ gunzip อีกครั้ง

ดูเหมือนว่าเมื่อเร็ว ๆ นี้ gnu tar จะเพิ่ม-zตัวเลือกโดยอัตโนมัติหากอินพุตเป็นไฟล์ นั่นเป็นเหตุผลว่าทำไมมันถึงใช้งานได้โดยไม่มี-zตัวเลือกหลังจากที่คุณเรียกใช้แล้วgunzipหนึ่งครั้ง

พฤติกรรมนี้ได้รับการบันทึกไว้แล้วจากหน้าข้อมูล:

"การอ่านไฟล์บีบอัดที่เก็บถาวรนั้นง่ายกว่า: คุณไม่จำเป็นต้องระบุตัวเลือกเพิ่มเติมเนื่องจาก GNU` tar 'จะจดจำรูปแบบของมันโดยอัตโนมัติ [... ] อัลกอริธึมการจดจำรูปแบบขึ้นอยู่กับ "ลายเซ็น" ซึ่งเป็นลำดับไบต์พิเศษใน จุดเริ่มต้นของไฟล์เฉพาะสำหรับรูปแบบการบีบอัดบางรูปแบบ "

มาจาก§8.1.1 "การสร้างและอ่านคลังข้อมูลที่บีบอัด"


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