Назад | Перейти на главную страницу

Опыт использования `dd` для копирования многораздельных устройств с несколькими FS

У меня есть диск с несколькими разделами, каждый из которых имеет различную файловую систему (ext3, ext4 и, скажем, NTFS). Я хочу знать, могу ли я скопировать весь диск на новый (большей емкости), используя dd, желательно за одну операцию.

Чтобы предотвратить ненужные усилия, позвольте мне прояснить несколько вещей. Мне неинтересны другие способы сделать это (я знаю правильный способ, а стороннее ПО нежелательно). Меня не очень интересуют теоретические ответы («это должно сработать»). Меня очень интересует чей-либо опыт, пытающийся сделать такую ​​вещь.

Я знаю, что на самом деле правильный ответ - «попробуй и увидишь», но я нахожусь в 250 милях от рассматриваемого диска.

Если вам нужно это сделать, и вы должны быть в действительно плохое место даже считать об этом ...

Безопаснее всего копировать разделы по отдельности. Например:

# Install  a temporary ssh key so we don't have to deal with lots of
# password prompts, remember to remove it from authorized_keys later
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa user@host

# Copy everything, you can go have breakfast - and probably lunch -
# while you wait
for partition in /dev/sdb?*
do
    dd if=$partition | ssh user@host "dd of=$(basename $partition).img"
done

Подождите несколько минут или часов для завершения копирования, а затем начните восстановление с образов дисков. Например, на новом диске вы можете создать новую таблицу разделов с разделами правильного размера для хранения образов дисков, а затем dd изображения возвращаются в новые разделы.


Копирование весь диск (например. dd if=/dev/sdb) усложняет ситуацию, так как тогда у вас будет полный образ диска, вам, вероятно, все равно придется как-то разделить на разделы. И если вы думаете о ddперенося весь диск непосредственно на другой физический диск, подумайте еще раз: иногда вы просто потеряете, когда система отказывается признать, что таблица разделов и новый жесткий диск имеют какое-либо отношение друг к другу.

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

dd if=/dev/sdb | ssh user@host "dd of=sdb.img"
# Later, on the recovery host...
kpartx -l sdb.img
kpartx -a sdb.img
# Now you can...
mount -o ro /dev/mapper/loop0p1 /mnt/rescuep1
mount -o ro /dev/mapper/loop0p2 /mnt/rescuep2
# or copy to a new hard drive...
dd if=/dev/mapper/loop0p1 of=/dev/sdc1
dd if=/dev/mapper/loop0p2 of=/dev/sdc2

Если физический диск имеет физические проблемы, рассмотрите возможность использования dd_rescue вместо этого (хотя вы на самом деле об этом не спрашивали).