การแตกไฟล์ tar.gz จะส่งคืน“ ไฟล์นี้ดูเหมือนไฟล์เก็บถาวร tar”


22

ฉันมีไฟล์ tar.gz และต้องการแยกไฟล์โดยใช้เทอร์มินัล ฉันใช้คำสั่งต่อไปนี้: tar tvzf ldtp_3.5.0.orig.tar.gz และ tar -xvzf ldtp_3.5.0.orig.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

I output ของคำสั่ง file แสดงไฟล์ gzip:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

ฉันสามารถแตกไฟล์โดยใช้คลิกขวา - & gt; แตกออกมา แต่ฉันต้องการจะใช้เทอร์มินัล ใครสามารถบอกฉันว่าจะทำเช่นนั้นได้อย่างไร

คำตอบ:


29

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

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

โดยที่ในใจฉันจะดูว่าเพียงแค่ปลด Gzip จากบรรทัดคำสั่งเพื่อดูว่าเกิดอะไรขึ้น ใช้คำสั่งเช่นนี้:

gzip -d ldtp_3.5.0.orig.tar.gz

และดูว่าไฟล์ผลลัพธ์คืออะไร ฉันมีความรู้สึกตลกหลังจากที่คุณเรียกใช้คำสั่งนั้นคุณจะไม่เห็น ldtp_3.5.0.orig.tar ในไดเรกทอรี แต่เป็นไฟล์ชื่อเหมือนแหล่งที่มา ldtp_3.5.0.orig.tar.gz - แต่บางทีด้วยการปรับเปลี่ยนมีการเปลี่ยนแปลง? หากเป็นกรณีนี้จะเป็นการดับเบิล Gzipped อย่างแท้จริง ดังนั้น ณ จุดนี้ - หลังจากยกเลิกการเริ่มต้น Gzip - คุณสามารถเรียกใช้ tar คำสั่งที่คุณมีเช่นนี้:

tar -xvzf ldtp_3.5.0.orig.tar.gz

และตอนนี้มันควรจะขยายขนาดไฟล์เก็บถาวร TAR อย่างสมบูรณ์

อีกวิธีในการทำสิ่งที่คล้ายกับกระบวนการสองขั้นตอนคือการส่งออก gzip ไปยัง tar อย่างนี้:

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

c ใน gzip เช่นเดียวกับ - ในตอนท้ายของคำสั่งเป็นกุญแจสำคัญ:

  • c ตัวเลือกสำหรับ gzip จะบอก gzip เพื่อขยายไปยังสตรีมเอาต์พุตมาตรฐาน
  • - ในตอนท้ายของ tar คำสั่งหมายถึง "ใช้อินพุตมาตรฐาน" ดังนั้นประกอบกับ -c ใน gzipจากนั้นไปป์นั้นจะนำเอาท์พุทสตรีมมาตรฐานไปยัง gzip และเชื่อมต่อกับอินพุตมาตรฐาน tar.

1
ฉันลองคำสั่งแรก gzip -d ldtp_3.5.0.orig.tar.gz และฉัน (ผิดปกติ) ได้รับ .tar ไฟล์. อย่างไรก็ตามเมื่อฉันพยายาม tar -xvf ldtp_3.5.0.orig.tar ฉันพบข้อผิดพลาด: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner

@TheRookierLearner ถ้าอย่างนั้นจะเกิดอะไรขึ้น gzip -d ldtp_3.5.0.orig.tar บน ldtp_3.5.0.orig.tar?
JakeGould

ฉันเหนื่อย gzip -d ldtp_3.5.0.orig.tar.gz และฉันได้รับข้อความ gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored gzip: on.gz: No such file or directory gzip: the.gz: No such file or directory gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored . หลังจากนี้ฉันก็ลอง tar -xvzf ldtp_3.5.0.orig.tar และมันก็ใช้งานได้! ขอบคุณตัน!
TheRookierLearner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.