ในขณะที่พยายามแยกไฟล์ tar.gz ในเทอร์มินัลอูบุนตูมีข้อผิดพลาดเกิดขึ้นเขาประโยคสุดท้ายที่นี่คือ: tar: บล็อกเดียวที่ศูนย์ที่ 343398
อะไรคือทางออกสำหรับปัญหานี้?
ในขณะที่พยายามแยกไฟล์ tar.gz ในเทอร์มินัลอูบุนตูมีข้อผิดพลาดเกิดขึ้นเขาประโยคสุดท้ายที่นี่คือ: tar: บล็อกเดียวที่ศูนย์ที่ 343398
อะไรคือทางออกสำหรับปัญหานี้?
คำตอบ:
มันขึ้นอยู่กับว่ามันเกิดขึ้นกับ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>
ปัญหามีการบันทึกรายละเอียดไว้ที่นี่
สิ่งเดียวกันได้เกิดขึ้นกับฉันเพราะฉันวางทั้ง 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
ฉันได้รับข้อผิดพลาดนี้เมื่อวันก่อนพยายามยกเลิกการเก็บถาวรซึ่งไม่ได้ gzipped ฉันไม่ทราบแหล่งที่มาของไฟล์ แต่ฉันคิดว่าผู้สร้างอาจใช้cat
เพื่อรวมหลาย tars เป็นไฟล์เดียว สิ่งนี้ทำให้ตัวทำเครื่องหมายจุดสิ้นสุดของไฟล์ถูกอ่านโดยtar
ยูทิลิตี้ตรงกลางของไฟล์เก็บถาวรแบบรวมดังนั้นจึงแสดงข้อผิดพลาด "A lone zero block"
หากเป็นกรณีนี้--ignore-zeros
หรือ-i
ตัวเลือกอาจช่วยระงับข้อผิดพลาดเหล่านี้ โปรดดูman tar
หรือลิงค์นี้เป็นข้อมูลอ้างอิง
RequestTTY yes
ใน ssh_config ของคุณ สามารถปิดการใช้งานอย่างชัดเจนด้วย-T Disable pseudo-tty allocation.
สำหรับฉันข้อผิดพลาดtar: Skipping to next header
เดิม แต่เดิมบล็อกศูนย์เดียวเกิดขึ้นเมื่อฉันพยายาม--posix
..