tar: บล็อกศูนย์เดียวที่ 343398


10

ในขณะที่พยายามแยกไฟล์ tar.gz ในเทอร์มินัลอูบุนตูมีข้อผิดพลาดเกิดขึ้นเขาประโยคสุดท้ายที่นี่คือ: tar: บล็อกเดียวที่ศูนย์ที่ 343398

อะไรคือทางออกสำหรับปัญหานี้?

คำตอบ:


18

มันขึ้นอยู่กับว่ามันเกิดขึ้นกับtar.gzไฟล์ทั้งหมดหรือแค่อันนี้ ไฟล์นี้อาจเสียหายและไม่สามารถเปิดได้อย่างถูกต้อง หากมีการใช้สารสกัด tar เพื่อคุณจะต้องใช้zตัวเลือกที่เป็นที่จำเป็นเมื่อมีการเก็บเป็น tar xzvf <file.tar.gz>gzipped: อีกทางเลือกหนึ่งก็คือมันคุ้มค่าที่จะพยายามดึงมันออกมาgunzip <file.tar.gz>

หากต้องการค้นหาว่าไฟล์เสียหายหรือไม่ให้เรียกใช้gzip -t <file.tar.gz>; คำสั่งนี้จะตรวจสอบไฟล์เพื่อหาข้อผิดพลาดและหากพบว่ามีข้อผิดพลาดปรากฏขึ้นในเครื่อง สิ่งนี้ควรบอกคุณว่าไฟล์เสียหายหรือไม่

หากไฟล์นั้นเป็นเสียงและเกิดข้อผิดพลาดขึ้นแสดงว่าอาจเป็นปัญหาที่ทราบของ tar ซึ่งเกิดขึ้นเมื่อไฟล์ไม่มีคู่zero blocksที่ด้านท้ายของไฟล์ตามที่ GNU tar คาดไว้ วิธีการนี้คือการเพิ่มตัวเลือกที่จะไม่สนใจ-i zero blocksดังนั้นการใช้tar ixzvf <file.tar.gz>ปัญหามีการบันทึกรายละเอียดไว้ที่นี่


1

สิ่งเดียวกันได้เกิดขึ้นกับฉันเพราะฉันวางทั้ง stdout และ stderr ผ่านช่องทางที่ไม่แยก stderr และ stdout (เซสชันเทอร์มินัล adb ของ android)

ด้วยวิธีนี้บางข้อความผิดพลาดสิ้นสุดลงในกระแส นี่คือคำสั่งที่ผิดพลาด:

  • คำสั่งที่ผิดพลาด, adb เชลล์เพียงผสาน stderr และ stdout ในเครื่อง => ขยะ! :
    adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar

  • คำสั่งคงที่:
    adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar

สิ่งเดียวกันนี้จะเกิดขึ้นหากคุณทำคำสั่งคล้าย ๆ กันกับ SSH เช่น tar แบบรวดเร็วนี้จะทำการสตรีมผ่าน ssh หากคุณลืมเปลี่ยนเส้นทาง stderr ไปยัง / dev / null:

ssh user@host tar -czf /some/remote/path 2\>/dev/null > /local/path/to/file.tar.gz


1
จับดี. นอกจากนี้ยังเกิดขึ้นหากคุณตั้งค่าRequestTTY yesใน ssh_config ของคุณ สามารถปิดการใช้งานอย่างชัดเจนด้วย-T Disable pseudo-tty allocation.สำหรับฉันข้อผิดพลาดtar: Skipping to next headerเดิม แต่เดิมบล็อกศูนย์เดียวเกิดขึ้นเมื่อฉันพยายาม--posix..
eMPee584

0

ฉันได้รับข้อผิดพลาดนี้เมื่อวันก่อนพยายามยกเลิกการเก็บถาวรซึ่งไม่ได้ gzipped ฉันไม่ทราบแหล่งที่มาของไฟล์ แต่ฉันคิดว่าผู้สร้างอาจใช้catเพื่อรวมหลาย tars เป็นไฟล์เดียว สิ่งนี้ทำให้ตัวทำเครื่องหมายจุดสิ้นสุดของไฟล์ถูกอ่านโดยtarยูทิลิตี้ตรงกลางของไฟล์เก็บถาวรแบบรวมดังนั้นจึงแสดงข้อผิดพลาด "A lone zero block"

หากเป็นกรณีนี้--ignore-zerosหรือ-iตัวเลือกอาจช่วยระงับข้อผิดพลาดเหล่านี้ โปรดดูman tarหรือลิงค์นี้เป็นข้อมูลอ้างอิง

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