Как я могу использовать DD для переноса данных со старого диска на новый диск?

29

Я модернизирую внутренний жесткий диск SATA на моем ноутбуке с 40G на 160G. У меня есть рабочий стол Linux / Ubuntu с картой SATA. Я бы на самом деле хотел сделать то же самое для пары ящиков CentOS и FreeBSD на работе, и, похоже, у этого было бы то же самое решение.

Я слышал, что я могу использовать DD для зеркалирования раздела 40G на диск 160G или что я могу сохранить раздел 40G как образ в моей локальной системе, а затем скопировать этот образ 40G на диск 160G.

Кто-нибудь может описать, как я могу это сделать? Нужны ли мне какие-либо другие утилиты, такие как gparted

Стефан Ласевский
источник
3
Ахха ... Это первый вопрос !!
Харшит Шривастава
2
Вопрос номер один! Я также являюсь автором предложения для этого сайта, и я подумал, что начну работу с довольно техническим вопросом. Я был вознагражден футболкой и добычей.
Стефан Ласевский,

Ответы:

6

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

Вы должны быть очень осторожны, так как скопировать чистый диск поверх хорошего диска очень просто!

Чтобы получить загрузочные секторы и все такое, вы должны сделать что-то вроде:

dd if=/dev/hdx of=/dev/hdy

Где hdxваш 40G диск и hdyваш 160G диск. Вы заметите, что нет таких номеров разделов, как /dev/hdx1. Это копирует весь диск, информацию о разделе и все.

Ваш новый диск будет точно таким же, как старый, выделенный 40G. Он должен загрузиться сразу после установки обратно в ноутбук. Надеюсь, вы использовали LVM? Иначе надеюсь, что вы не использовали все разделы? Чтобы преодолеть этот пункт, требуется гораздо больше информации.

Другое решение - сбросить каждый отдельный раздел. Это требует намного большей осведомленности о ситуации, так как вам нужно будет воссоздать загрузочную информацию.

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

Стивен Яздевский
источник
17

Обычно я хотел бы предложить такое решение, как «подключить 2-й жесткий диск с помощью внешнего корпуса, загрузиться с компакт-диска Linux, а затем использовать такую ​​команду, как dd if=/dev/sda of=/dev/sdb bs=1G, но, так как вы хотите использовать ту же технику для работы, у меня есть то, что может быть лучшее решение.

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

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

Это дает вам возможность A) поместить образ на больший диск и B) сохранить резервную копию данных.

Мэтт Симмонс
источник
5

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

  1. Место назначения должно быть точно такого же размера или больше источника
  2. После копирования вам необходимо изменить размер разделов, чтобы использовать дополнительное пространство
  3. Вы будете тратить время на копирование свободного места
  4. Любая фрагментация, присутствующая на старом диске, сохраняется

Использование программ обработки изображений, таких как Ghost4Linux, partclone или clonezilla, как минимум, позаботится о числах 2 и 3. Вы также можете просто отформатировать новый диск, смонтировать его и скопировать все файлы с помощью cp -ax(как root), а затем переустановить загрузчик на новом диске. Этот способ не страдает ни одним из вышеперечисленных недостатков.

psusi
источник
3

Чтобы просто скопировать раздел, вы можете использовать dd if=/dev/srcDrive of=/dev/dstDriveили что-то вроде этого. Я бы порекомендовал вам прочитать его справочную страницу . Извините, я не могу дать больше информации, так как я сейчас на работе ..

Берн
источник
2

Вы спрашивали, как это сделать с помощью dd, но я с большим успехом отправил вывод дампа в восстановление . Учитывая источник ad1s1a и цель ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

Я попробовал это на FreeBSD, на самом деле я нашел это на форуме FreeBSD

zvolkov
источник
1

Один простой пример:

dd if=/dev/sda of=/dev/sdb

Но если у вас есть особые потребности, вы действительно должны прочитать справочную страницу (man dd) или поискать в Google.

Другой идеей может быть использование rsync (не забудьте установить правильные параметры, например -az [упаковывает файлы вместо копирования одного файла за другим) или --numeric-ids [использует uid / gid вместо имен, таких как "корень"] и, возможно, некоторые другие). Ссылка содержит много примеров.

Если на новом жестком диске нет разделов, вы можете использовать gparted или palimpset.

Когда вы не уверены, я бы отформатировал жесткий диск и затем синхронизировал данные с rsync.

fwaechter
источник
1

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

  1. Вы воссоздаете информацию о разделе первого диска на втором, возможно увеличивая размер некоторых разделов, чтобы использовать дополнительное пространство, и так далее.
  2. Тогда предположим, что у вас есть / dev / sda {1,2,3,4} и вы хотите скопировать их в / dev / sdb {1,2,3,4}, вы mkdir / mnt / sd {a, b} {1 , 2,3,4} и смонтировать каждый раздел в каждом каталоге (или, если вы хотите сделать это один за другим, вы можете создать / mnt / origin / mnt / destination и смонтировать / размонтировать каждую пару)
  3. Затем вы делаете cp -avr / mnt / origin /. / mnt / destination / (или cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Подождите, пока вы просматриваете сеть :)
  5. Не забудьте переустановить grub, lilo или любой другой загрузчик, который вы используете.

Делая это таким образом, вы будете дефрагментировать файлы по мере их копирования, вы также можете изменять файловые системы в разделах (переходить с reiserfs или ext3 на ext4 и т. Д.), Но, пожалуйста, не забудьте отредактировать / etc / fstab после копирования в соответствии с требованиями. новая ситуация.

Хорхе Нерин
источник