เติมน้ำมันดินด้วยศูนย์


10

เมื่อดำเนินการ tar บนไฟล์บีบอัด bz2 ฉันพบข้อผิดพลาดต่อไปนี้

tar: dump.sql: ไฟล์ย่อขนาดลงโดย 19573448400 ไบต์; padding ด้วยศูนย์

ใครสามารถชี้สิ่งที่อาจทำให้เกิดปัญหานี้

ขอบคุณ

คำตอบ:


8

มันไม่ใช่ข้อผิดพลาด มันเป็นข้อมูล

ฉันยินดีที่จะเดิมพันว่าคุณกำลังบีบอัด / คลายการบีบอัดอิมเมจ Virtual Machine หรือไฟล์ที่มีการกระจายอย่างกระจัดกระจาย

Bzip2 ตรวจพบว่าไฟล์ส่วนใหญ่เป็นศูนย์และบีบอัดเพื่อไม่ให้มีอยู่ในไฟล์บีบอัด

นี่คือความแตกต่างระหว่างขนาดจริงและขนาดที่กระจัดกระจายของไฟล์


ฉันพบชุดข้อความที่ช่วยยืนยันและอธิบายเพิ่มเติม: groups.google.com/d/msg/comp.os.linux.misc/RES9Kvw7kO4/…
Martin Eden

1
หากไม่ใช่ข้อผิดพลาดเหตุใดจึงสร้างรหัสออกที่ไม่ใช่ศูนย์
Ben Collins

ในกรณีของฉันไฟล์. tar.bz2 นั้นมีข้อมูลที่เสียหายจริง ๆ มันประกอบด้วย NUL จำนวนไบต์ที่ตำแหน่งที่ระบุในข้อความซึ่งควรมีข้อมูลที่ไม่เป็นศูนย์ ฉันมีความคิดว่าทำไมไม่มี. เมื่อฉันพยายามสร้างไฟล์. tar.bz2 อีกไฟล์มันทำงานได้อย่างถูกต้อง
200_success

1
เรื่องนี้เพิ่งเกิดขึ้นกับฉันในขณะที่สร้างที่เก็บข้อมูลดิบ (ไม่บีบอัด) ไม่เกี่ยวข้องกับ bzip อย่างแน่นอน และต่อไปการเข้ารหัสความยาวรันไม่ผิดปกติดังนั้นจึงไม่ใช่สิ่งที่ bzip จะรบกวนการรายงาน
Wyatt8740

1

ไฟล์ที่สงสัยถูกเรียกdump.sqlดังนั้นอาจไม่ใช่ไฟล์บีบอัด bz2 - ในกรณีใด ๆ ปัญหาไม่เกี่ยวข้องกับ bz2 หรือประเภทของเนื้อหาของไฟล์

ข้อความหมายความว่าstat()ไฟล์บนรายงานขนาดแตกต่างจากจำนวนที่สามารถอ่านได้จริงจากไฟล์ สิ่งนี้อาจเกิดขึ้นหากไฟล์ถูกเปลี่ยนขณะที่tarทำงาน

สิ่งนี้ยังเกิดขึ้นกับ "ไฟล์เสมือน" เช่นเดียวกับในระบบไฟล์ Linux / sys รายงานจำนวนมากมีขนาด 4096 ไบต์ (ค่าที่กำหนดเอง) หนึ่งครั้งread()พวกเขาจะส่งกลับสองสามไบต์เท่านั้น

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