Как сжать очень большой файл, содержащий лишь небольшое количество данных

Как сжать очень большой файл, содержащий лишь небольшое количество данных

Я купил SSD на 250 ГБ, выполнил полное форматирование, установил Win10, клонировал весь диск с помощьюддкоманду в терминале Linux, чтобы создать резервную копию на случай поломки моего SSD, так что теперь у меня есть файл образа диска размером примерно 250 ГБ, который выглядит так:

| --- some data (approx. 17 GB) --- | ------ no data at all, only nulls ------ |

Я начал сжимать файл с помощьюпочтовый индекси ожидал, чтопочтовый индексбыл бы достаточно умен, чтобы дать мне.zipразмером около 17 ГБ, но после нескольких часов архивации и моего.zipдостигнув уже более 50 ГБ, я прервал процесс и пришел сюда, чтобы спросить вас, есть ли другие потенциальные способы сделать это.

решение1

Вы уверены, что пустая часть диска содержит только нули? Вероятно, там много удаленного мусора. Материалы в дистрибутиве, несомненно, хранились в сжатом виде. Они были распакованы для установки, а затем файлы былископированок их целям, затем весь временный мусор был удален, когда это было сделано. Таким образом, я бы ожидал найти удаленные данные, по крайней мере, такого же размера, как размер установки - пространство, занимаемое файлами подкачки.

Кроме того, когда дело касается сильно сжимаемых данных, я обнаружил, что в действительно плохих случаях сжатие архива еще больше его сожмет. Большинство компрессоров имеют максимальную длину элемента словаря, когда избыточность в вашем файле значительно превышает это (как было бы, если бы ваша проблема была тем, что вы думали), вы в конечном итоге получаете прогоны кода для элемента словаря, которые сжимаются. (И обратите внимание, что я также видел небольшое преимущество от сжатия архива, который содержал огромное количество маленьких файлов — файлы больше не сжимались, но служебные данные сжимались.)

Итак, вам нужно скопировать раздел, затем сжать скопированный раздел до максимально возможного размера (уничтожить файлы подкачки и гибернации, если это возможно), а затем проделать с результатом то же самое.

решение2

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

Вы также не можете предполагать, что новый диск будет обнулён, вполне может быть, что данные представляют собой совершенно случайный мусор, оставшийся от процедур производства и тестирования.

Если вам абсолютно необходимо создать образ диска таким образом, то вам сначала нужно самостоятельно заполнить пустое пространство согласованными данными.

В Windows вы можете загрузить инструмент под названиемsdeleteи у него есть возможность правильно заполнить диск нулями:sdelete -z

На больших дисках это может занять невероятно много времени и занять часы или даже дни в зависимости от размера вашего диска.

Более разумный вариант — использовать инструменты, которые понимают формат диска и сохраняют только те данные, которые действительно необходимо сохранить изначально, игнорируя «пустое» пространство на диске.

  • Macrium Рефлекс
  • Клонезилла
  • Acronis Trueimage

Это лишь некоторые из них, но на самом деле существует гораздо больше программ для создания образов дисков.

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