Сжатый образ жесткого диска очень большой

20

Я только что сделал образ недавно установленной двойной загрузки (Ubuntu и Windows), используя эту команду (которую я использовал некоторое время для небольших образов):

dd if=/dev/sda | gzip > /mnt/drive.img.gz

На этом диске используется менее 60G из 500G. Тем не менее, этот файл изображения теперь имеет размер 409G.

Как так? Разве gzip не должен сжать все эти нули? Как я уже сказал, это недавно установленная система. Это не могло быть таким загроможденным.

Теперь я не ожидал, что файл будет 60G, но 400G мне кажется очень большим.

chris137
источник
13
... какие нули?
Легкость гонки с Моникой

Ответы:

29

Как так? Разве gzip не должен сжать все эти нули?

Да, если бы они были нули .

Неиспользуемое дисковое пространство не означает, что оно содержит нули; это означает, что он не используется, и может содержать что угодно .

Есть программы, которые стирают неиспользуемое дисковое пространство до нуля. Я предлагаю вам использовать их до создания образа диска. (Я не припоминаю ничего лишнего; в Linux я просто использовал dd if=/dev/zero bs=1048576 of=somefileдля создания файлов, содержащих только нули, заполняя каждую файловую систему; затем удалял их перед созданием образа. Кроме того, я предпочел бы xzзакончить gzip.)

Номинальное животное
источник
О, спасибо, я даже не думал о том, что было на этом диске, прежде чем я установил его! Я полагаю, что быстрее распаковать это изображение и сделать его меньше (для чего, похоже, есть и решения). Я также рассмотрю возможность использования xz. Благодарность!
chris137
12
Писать 400G нулей каждый раз, когда вы хотите сделать клон, не очень хорошая идея для SSD. Другое решение (с использованием программы клонирования с поддержкой файловой системы) выглядит лучше.
Федерико Полони
4
@FedericoPoloni: Нет, но сгенерированный образ - это идеальный необработанный образ диска . Утилиты клонирования дисков используют различные форматы, поэтому вам нужна утилита для восстановления образа. Я не знаю (но также не проверял) что-либо, что может фактически генерировать необработанное изображение, заменяя неиспользуемые блоки в изображении нулями; это было бы действительно полезно. Использование ddв Linux - самое простое и легкое решение проблемы с размером необработанного изображения, и, как разовое, это нормально даже на SSD.
Номинальное животное
1
@FedericoPoloni: Да, изображения, сжатые как gzip, так и xz, могут быть смонтированы с использованием nbdkit . (Я не очень беспокоюсь о форматах, если они открыты и поддерживаются более чем одной утилитой; меня беспокоит только то, что утилиты перестают работать и глючат в новых системах. Я был бы рад использовать SquashFS вместо xz или gzip, например.)
Номинальное животное
3
@ Жиль Обрезанный пробел при чтении не обязательно имеет нули. Некоторые контролеры дают это, другие нет.
deviantfan
14

Для резервного копирования отдельных разделов вы можете использовать partclone .

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

Pelle
источник
3
Кроме того, Clonezilla - отличный графический интерфейс для этого.
Федерико Полони
partimage - отличный инструмент, он уже есть во многих дистрибутивах Linux / live CD.
Кригги
Еще один инструмент в этом ключе fsarchiver.
Iwillnotexist Idonotexist