วิธีกู้คืนไฟล์“ tar.gz” ที่เสียหาย


11

ทันใดนั้นฉันก็จำเป็นต้องกู้คืนtar.gzไฟล์เก่าแต่ทันทีที่ฉันดำเนินการ:

tar -zxvf filename.tar.gz

ฉันได้รับสิ่งนี้:

gzip: stdin: invalid compressed data--format violated  
tar: Child returned status 1  
tar: Error is not recoverable: exiting now

8
นั่นคือ tarball gzipped จริงๆเหรอ? ลองfileคำสั่งก่อน
alex

1
ใช่มันเกิดขึ้นกับฉันมากกว่าหนึ่งครั้งที่ฉันได้รับอัน.tar.gzที่จริง.tarและแม้แต่ PDF
vonbrand

คำตอบ:


12

สิ่งที่คุณควรลองมีดังต่อไปนี้:

  1. ใช้fileคำสั่งในการเก็บถาวรเพื่อดูว่ามันได้รับการยอมรับว่าเป็นgzipข้อมูล -ped
  2. ทำงานstrace gunzipกับไฟล์ นี่จะพิมพ์ไบต์สุดท้ายที่อ่านจากไฟล์ซึ่งอาจช่วยให้คุณระบุจุดในไฟล์ที่เกิดความเสียหาย
  3. เรียกใช้การแก้ปัญหาของการสร้างภายใต้gunzip gdbพยายามแก้ไขส่วนที่เสียหาย (คุณต้องโชคดีเป็นพิเศษเพื่อให้สามารถทำเช่นนั้นได้) และดูว่าส่วนต่อท้ายไฟล์สามารถดำเนินการต่อได้หรือไม่

ขึ้นอยู่กับลักษณะของการทุจริตคุณอาจหรืออาจไม่สามารถกู้คืนข้อมูลของคุณได้


gunzip filename.tar.gzทำงานให้ฉัน
Ravi Dhoriya ツ

3

ข้อมูลบางอย่างเกี่ยวกับวิธีการทำงานของการกู้คืนสามารถพบได้ที่การกู้คืนไฟล์ .gz เสียหาย

นอกจากนี้ยังเป็นเครื่องมือที่จะช่วยให้คุณทำเช่นนี้: gzip กู้คืน Toolkit aka gzrecover


2

ไม่สามารถกู้คืนแบบเต็มได้ รูปแบบเช่น. zip ให้การป้องกันและตัวเลือกการกู้คืนที่ดีกว่า แต่ไม่เต็ม

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


ว่าฉันกำลังคิดคำอธิบายที่ดีขอบคุณ! ฉันสงสัยว่ามีรูปแบบอื่นที่ดีเท่ากับ zip (แต่มีการบีบอัดที่ดีกว่า) แต่ zip นั้นเป็นที่รู้จักเสมอในทุกที่และอาจเป็นตัวเลือกที่ดีที่สุดเกี่ยวกับการกู้คืน
อำนาจกุมภ์

1

เรียกใช้zcat bad.tar.gz > some.tarและแตกไฟล์นั้น การผ่านส่วนที่เสียหายของไฟล์จะยุ่งยาก หน้า man ให้พอยน์เตอร์กับรูปแบบ แต่ฉันจะมองหาตัวเลือกอื่น ๆ ใน Google

คุณแน่ใจหรือว่านี่ถูกบีบอัดด้วย gzip มันอาจจะบ่นเพราะมันไม่เข้าใจรูปแบบ ...


1

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

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


-1

ใช้อันนี้: https://github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v

ผลลัพธ์คำสั่งของคุณเป็นcpio: illegal option -- Fข้อความแสดงข้อผิดพลาด
schily

1
cpio - ช่วยให้คุณมีตัวเลือก: -F, --file = [[USER @] HOST:] FILE-NAME ใช้ FILE-NAME นี้แทนอินพุตหรือเอาต์พุตมาตรฐาน ตัวเลือก USER และ HOST ระบุชื่อผู้ใช้และชื่อโฮสต์ในกรณีของการจัดเก็บระยะไกล
W4U

คุณไม่ได้พูดถึง abpout cpioแต่เกี่ยวกับการโคลนด้วยตัวเลือกเฉพาะของผู้ขายดูเช่นschillix.sourceforge.net/man/man1/cpio.1.htmlถ้า ypou พูดถึง clone แทนที่จะเป็นแบบดั้งเดิมคุณควรพูดถึง clone ที่คุณ กำลังใช้
schily

1
@schilly ฉันกำลังพูดถึง cpioรวมอยู่ในเดเบียน GNU cpio: link
W4U
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.