дьоготь з нальотом з нулями


10

Під час виконання тарінгу на файлі, що стискає bz2, я зіткнувся з такою помилкою,

tar: dump.sql: Файл зменшився на 19573448400 байт; оббивка нулями

Хтось може вказати, що може спричинити це питання?

Дякую.

Відповіді:


8

Це не помилка. Це ІНФО.

Я готовий зробити ставку на те, що ви стискаєте / розпаковуєте зображення віртуальної машини або інакше виділений файл.

Bzip2 виявив, що файл здебільшого нулів, і стиснув його так, що їх немає в стисненому файлі.

Це різниця між фактичним розміром і видимим розміром розріджених файлів.


Я знайшов нитку, яка корисно підтверджує та пояснює: groups.google.com/d/msg/comp.os.linux.misc/RES9Kvw7kO4/…
Мартін Еден

1
Якщо це не помилка, то чому вона створює ненульовий код виходу?
Бен Коллінз

У моєму випадку файл .tar.bz2 фактично містив пошкоджені дані: він містив купу байтів NUL у місці, вказаному в повідомленні, де він повинен містити ненульові дані. Я поняття не маю, чому. Коли я спробував створити інший .tar.bz2 саме цього файлу, він працював правильно.
200_успіх

1
Це щойно трапилося зі мною під час створення архіву із сирої смоли (не стиснутої). Однозначно не пов'язані з bzip. І в будь-якому випадку, кодування довжини запуску не зовсім незвичне, тому це не те, що bzip заважатиме звітувати.
Wyatt8740

1

Запропонований файл називався dump.sql, тому, ймовірно, не стислий файл bz2. - У будь-якому випадку проблема не має нічого спільного з bz2 або типом вмісту файлу.

Повідомлення означає, що stat()файл у файлі повідомляв про інший розмір, ніж сума, яку насправді можна прочитати з файлу. Це може статися, якщо файл було змінено під час tarроботи.

Це також відбувається у "віртуальних файлах", таких як файлова система Linux / sys. Про багато з них повідомляється розміром 4096 байт (довільне значення). Одного разу read()вони повертають лише пару байтів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.