Опыт использования `dd` для копирования нескольких разделов, устройств с несколькими FS
У меня есть диск с несколькими разделами, каждый из которых имеет свою файловую систему (ext3, ext4 и, скажем, NTFS). Я хочу знать, могу ли я скопировать весь диск на новый (большей емкости), используя dd
предпочтительно за одну операцию.
Чтобы предотвратить ненужные усилия, позвольте мне прояснить несколько вещей. Меня не интересуют другие способы сделать это (я знаю правильный путь, и стороннее программное обеспечение не желательно). Меня не все интересуют теоретические ответы ("это должно сработать"). Я чрезвычайно заинтересован в опыте других людей, пытающихся сделать такую вещь.
Я знаю, что правильный ответ - "попробуй и посмотри", но я в 250 милях от диска, о котором идет речь.
1 ответ
Если вам нужно сделать это, и вы должны быть в очень плохом месте, чтобы даже думать об этом...
Безопаснее всего копировать разделы по отдельности. Например:
# 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
вместо этого (хотя вы на самом деле не спрашивали об этом).