1

Я хотел сделать резервную копию системного диска с Ubuntu live CD. Я использовал следующую команду:

dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c > /media/external/image.gz

Казалось, это работает. Чтобы проверить, что я стер содержимое sda, затем загрузил обратно из изображения:

dd if=/dev/zero of=/dev/sda bs=1M
gunzip -c /media/external/image.gz | dd of=/dev/sda conv=sync,noerror bs=64K

Однако результат больше не был загрузочным.

Результаты fdisk -l равны до создания резервной копии и после попытки ее восстановления:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util
fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       14594   117220823+  ee  GPT
/dev/sda2   *           1           1           0    0  Empty
Partition 2 does not end on cylinder boundary.

Кажется, я тоже не могу смонтировать диск. Типы файлов, которые я пробовал, не работали (исходный диск - загрузочный Mac OS X). Я пробовал hfs, hfsplus, hpfs.

Диск больше не отображается (даже не размонтирован) в проводнике файлов Ubuntu. Он показывал перед обнулением и попыткой восстановления.

Мой главный вопрос: что не так в моей последовательности резервного копирования / очистки / восстановления? Разве это не должно копировать и восстанавливать весь контент диска, включая загрузку и еще много чего? И делать это независимо от формата? Может ли обнуление быть суть проблемы? Что я упустил?


РЕДАКТИРОВАТЬ: Я видел это, но это не помогло мне.

Внешний диск NTFS.

1 ответ1

2

Я думаю , что и sync и noerror опция для conv могут вызвать проблемы. Если есть какие-либо проблемы с чтением, тогда noerror продолжит копирование потенциально сомнительных данных. sync утверждает, что он будет заполнять нулями каждый блок в зависимости от размера входящего блока.

dd без этих опций должен делать байт для байтового копирования и ошибок, если есть проблемы.

Обновить

Определение синхронизации:

Когда установлен флаг conv = sync, команда dd дополняет любые частичные блоки ввода нулевыми значениями. Таким образом, команда dd вставляет нули в середину потока данных, если какое-либо из чтений не получает полный блок данных (как указано флагом ibs). Это обычное явление при чтении из каналов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .