Неправильный размер файла изображения, созданного с помощью dd и gzip?

Неправильный размер файла изображения, созданного с помощью dd и gzip?

Раньше я делал резервную копию частично заполненного раздела с помощью dd if=/dev/sda1 | gzip -5 > file.gz. Некоторое время спустя, когда свободного места на разделе стало меньше, я снова создал файл образа с помощью той же команды, и выходной файл стал немного меньше.

В обоих случаях я использовал одну и ту же версию dd и gzip, одни и те же параметры, одно и то же оборудование, один и тот же раздел и получил одинаковый (за исключением времени и скорости) вывод от dd о количестве входящих/исходящих записей и скопированных байтов.

Что могло вызвать это и как это можно объяснить? Как проверить, какой файл образа недействителен, предположив, что один из них недействителен? Что более вероятно: повреждение жесткого диска, которое привело к необнаруженной потере данных, или что разница связана с некоторыми проблемами со сжатием?

решение1

Это природа сжатия. Насколько оно эффективно, зависит от входных данных. Поскольку вы каждый раз сжимаете разные данные, вы получаете разные сжатые размеры, хотя несжатый размер тот же самый.

решение2

Вы, кажется, считаете, что свободное пространство сжимается лучше. Такого правила нет.

Обычные файловые системы только помечают свободное пространство как свободное, они не перезаписывают его нулями или чем-то еще. Старые данные остаются там, пока не будут перезаписаны чем-то новым. (Примечание: вот почему иногда можно восстановить удаленные файлы).

ddчитает все, он ничего не знает о файловых системах или о том, что они считают свободным пространством; затем gzipсжимает все, включая старые данные в "свободном пространстве", которое может сжиматься хорошо или плохо. В этом контексте свободного пространства нет; есть только некоторый поток данных для обработки.

Это могут быть новые "высоко-сжимаемые" файлы, заменившие старые "плохо-сжимаемые" данные, помеченные как свободное пространство. Если это так, новый архив будет меньше старого, несмотря на то, что он содержит больше данных, которые вы считаете полезными, актуальными или существующими. Это может быть основной причиной того, что вы испытали.

Пожалуйста, посмотриКлонировать только используемое пространство на жестком диске, имой ответ там. Этап "подготовки" перезаписывает пустое пространство нулями, поэтому сжимается очень хорошо. Если вы делали это перед каждым резервным копированием, размеры полученных архивов, вероятно, совпадут с вашей интуицией.

«Вероятно», потому чтодругой ответ на ваш вопросв целом верно: все зависит от входных данных. Даже после обнуления свободного пространства файловая система, заполненная на 60%, может сжаться в меньший архив, чем такая же большая файловая система, заполненная на 50%, если файлы внутри нее разные.

Связанный контент