Клонирование linux на другой компьютер
Уважаемые участники LUG.RU! Напоминаем вам, что у нас есть своя jabber-конференция lug@conference.jabber.ru, которой не только можно, но и нужно переодически пользоваться. Для этого вы можете использовать любой клиент из этого списка.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Клонирование диска
Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.
Смотрим состояние дисков и разделов на текущий момент:
Определяемся, с какого диска на какой мы будем выполнять копию. Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель.
dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync
* Команда выполняет блочное копирование и запускается со следующими параметрами:
- if — источник данных.
- of — куда копировать данные.
- bs — объем блока, который будет читаться и копироваться за раз.
- conv — дополнительные опции. В данном примере noerror — продолжать операцию в случае ошибки чтения данных; sync — копировать все, в том числе и нулевые данные.
* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).
Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:
При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.
Следующим шагом настроим загрузчик.
Выводы
В этой статье мы разобрали, как перенести Linux на другой жёсткий диск с помощью утилит tar, cp или rsync. Как видите, это достаточно просто и быстро. Ещё мы могли бы использовать утилиту dd, однако она копирует весь диск побайтово, поэтому будет работать дольше и её архивы будут занимать больше места на диске. Ещё можно воспользоваться инструментом Clonezilla.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
30 комментариев
Спасибо за отличную статью
Еще Клонезилла по моему умееет переносить.
Умеет, добавил ссылку в статью.
Программой Timeshift основанной на упомянутой в статье rsync, я переносил бекап и запускал на внешнем жестком диске, тоже как вариант вообще в три клика мышкой.
Ну, что с Виндоус так не получится — не совсем правда
Во времена 98 мастдая я именно простым копированием переносил вообще всё на новые диски. Запускаешь систему, делаешь fdisk, format, а потом запускаешь far manager и просто выделяешь все файлы на диске C: (естественно и скрытые) и F5 — на диск E:.
Не понимаю до сих пор, как оно копировало загрузочный сектор, но по окончании процесса я вынимал старый диск и система запускалась и работала с нового!
Проверено неоднократно. Ещё и по работе приходилось так же делать «бэкапы», и все заводилось всегда. К тому же 98 прекрасно заводилась на любом новом (другом, то есть) железе. Как правило, на том же диске С был и дистрибутив, с которого она изначально устанавливалась, и при замене компа она просто «находила новое оборудование» и ставила дрова из дистра. Но потом пришла ХП, и счастье прошло.
Как с uefi такое сделать? Только ssd переставил на другой пк. Он его не видет. А через легаси замирает через 15 секунд со включенными иксами.
Вранье. У 98 не было никакого оборудования, она ничего не умела находить, для всего надо было скачать драйвера и установить.
Скажите, а сейчас Windows, можно перенести на другой компьютер, как в Linux?
Как в linux не получиться. Используйте Acronis или ghost. Если переносить систему на том же компе, на другой
Диск, то всё ок. Если копия будет заводится на другом железе, новое железо, не должно иметь более трех аппаратных отличий, проц,чип мамки и т.д
Здравствуйте, большое спасибо за приведенные способы.
А можно ли таким образом на vps подменить систему? Например, сжать диск, выделить раздел, восстановить в него архив . gz, подредактировать grub, чтобы нулевым пунктом была эта система, и иметь таким образом какой нибудь linux mint, а не debian, который они предлагают?
На VPS используется виртуализация, KVM, XEN, OpenVZ и так далее, поэтому дистрибутивы там специальные, модифицированные, лучше попросить техподдержку установить тот дистрибутив, который вам нужен. Если с KVM теоретически может получиться, то с OpenVZ вообще не выйдет.
21-й век на дворе, а линуксы до сих пор без консоли, как без титьки. Любые глюкала напрограммили, а как перенос системы — флешбеки к зелеными монохромами мерещятся.
Мальчик, ты бредишь. Просто не понимаешь матчасть. Кнопочки и окошечки — это монструозная присртойка к программе, которая набирается одной командой в одну строку. Так то..
Partclone – это программа, аналогичная известной утилите резервного копирования «Partition Image» a.k.a partimage.
Partclone предоставляет утилиты для сохранения и восстановления используемых блоков в разделе и предназначен для более высокой совместимости файловой системы с использованием существующих библиотек, например. e2fslibs используется для чтения и записи раздела ext2.
Partclone теперь поддерживает ext2, ext3, ext4, hfs +, reiserfs, reiser4, btrfs, vmfs3, vmfs5, xfs, jfs, ufs, ntfs, fat (12/16/32), exfat, f2fs, nilfs. Доступные программы:
partclone.btrfs
partclone.ext2, partclone.ext3, partclone.ext4
partclone.fat32, partclone.fat12, partclone.fat16
partclone.ntfs
partclone.exfat
partclone.hfsp
partclone.jfs
partclone.reiserfs
partclone.reiser4
partclone.ufs (с SU + J)
partclone.vmfs (v3 и v5)
partclone.xfs
partclone.f2fs
partclone.nilfs2
Partclone поддерживает локальный и удаленный ssh-сервер для хранения резервной копии.
Команда создаст резервную копию раздела ext4 (/ dev / sda1) в файл образа data1.img.
Для восстановления из файла из образа используйте следующую команду:
Восстановление диска с помощью dd
Какой толк от резервных копий, если вы не можете их использовать? Когда вы готовы восстановить образ с помощью dd, у вас есть два варианта. Если вы использовали первый способ, просто поменяйте местами два места назначения.
При восстановлении из файла образа применяется та же концепция:
Если ваш файл образа сжат, то все происходит немного иначе. Вместо этого используйте эту команду:
Чтобы было понятно, gunzip – это “g unzip”, то есть противоположность “g zip”. Эта команда распаковывает вашу резервную копию. Затем dd заменяет существующий диск этим образом.
Перенос виртуальной машины с KVM на Hyper-V
В моем случае я переношу сервер с KVM на Hyper-V. После загрузки системы я получаю такую картину.
Сервер начинает бесконечно висеть в подобном состоянии с такими характерными ошибками:
Начинаю разбираться в чем может быть дело. Конечно, тут решение проблемы будет зависеть от конкретной ситуации. А успешность решения от квалификации сисадмина. Я уже немного повозился с подобными переносами и примерно представляю, в чем тут может быть проблема. Частично я эту тему затрагивал, когда делал перенос виртуальных машин с XenServer на Hyper-V. Но там была другая проблема, связанная с кастомным ядром от Xen.
В нашей ситуации с переносом виртуальной машины с KVM на Hyper-V проблема в другом. У нас поменялось имя диска. Нам нужно изменить это имя в fstab и в конфиге grub. До кучи я еще собрал заново initramfs, но не уверен на 100%, что в данном случае это нужно было делать. Я сделал на всякий случай сразу все за один заход.
Итак, загружаемся с установочного диска CentOS 7 и выбираем режим Rescue a CentOS system. Подробно об этом рассказывал в упомянутой ранее статье с переносом от xen. Выбираем первый режим запуска.
Дальше работаем в консоли. Смотрим, как называется наш диск.
У меня это sda, а на прошлом сервере он назывался vda. Нам нужно внести эти изменения в 2 файла:
- /etc/fstab
- /boot/grub2/grub.cfg
Диск восстановления в самом начале мог сам смонтировать системный раздел в директорию/mnt/sysimage. Если он этого не сделает по какой-то причине, то сделайте это сами:
Теперь нам надо сделать chroot в систему, предварительно смонтировав туда информацию о текущей системе. Выполняем команды:
Мы загрузились в окружение нашего сервера. Тут можете использовать установленный у вас на сервере текстовый редактор. С его помощью изменяете имена дисков в файлах /etc/fstab и /boot/grub2/grub.cfg. Можете просто автозаменой поменять имена.
Теперь соберем новый initramfs. Идем в директорию /boot и смотрим там последнюю версию ядра.
В данном случае просто смотрим самые высокие цифры. Соберем новый initramfs в соответствии с версией ядра.
В завершении установим измененный загрузчик на наш диск:
Перезагружаем сервер. После этих изменений, у меня благополучно все загрузилось. Перенос виртуальной машины с KVM на Hyper-V выполнен полностью. Причем, у нас не было доступа к образу системы. Хотя подобная ошибка скорее всего все равно возникла бы, даже если бы мы конвертировали и переносили готовый образ.
Как клонировать раздел Linux
С помощью команды dd вы можете скопировать весь жесткий диск или только раздел Linux. Давайте начнем с клонирования одного из наших разделов. В моем случае у меня есть следующие диски: /dev/sdb, /dev/sdc.. Я буду клонировать файл /dev/sdb1/ в файл /dev/sdc1.
Сначала перечислите эти разделы с помощью команды fdisk, как показано ниже.
Теперь клонируйте раздел /dev/sdb1/ в /dev/sdc1, используя следующую команду dd.
Приведенная выше команда говорит dd использовать /dev/sdb1 в качестве входного файла и записать его в выходной файл /dev/sdc1.
После клонирования раздела Linux вы можете проверить оба раздела с помощью команды:
Инструменты клонирования дисков Linux
Ваша установка Linux может привести к ошибке; Вы можете обновить жесткий диск до большего объема. Безотносительно проблемы, если у вас есть резервная копия вашего диска, восстановить и запустить все будет относительно просто.
В Linux есть четыре решения для клонирования дисков, которые вы должны рассмотреть:
Используете ли вы функции, встроенные в вашу операционную систему Linux, или устанавливаете сторонний инструмент, не должно пройти много времени, прежде чем вы сможете восстановить свою систему и запустить ее.
Давайте рассмотрим каждый из четырех основных вариантов клонирования диска в Linux.
1. dd: инструмент для клонирования Native Linux
Возможно, самый мощный инструмент Linux из всех, dd (иногда называемый «разрушитель диска»), может клонировать весь жесткий диск или раздел диска в другой. Но в случае неправильного использования он может удалить содержимое вашего диска.
Таким образом, вы должны использовать с особой осторожностью. Вы найдете dd встроенный в большинство операционных систем Linux. Если нет, установите его из менеджера пакетов. Чтобы клонировать жесткий диск вашего компьютера, используйте команду:
Здесь sdX — это исходный диск, а sdY — место назначения. Числовое значение 64K соответствует команде размера блока, bs. Значение по умолчанию составляет 512 байт, что очень мало, поэтому лучше включить 64K или более 128K в качестве условия. Однако: хотя больший размер блока делает передачу быстрее, меньший размер блока делает передачу более надежной.
Если вы хотите клонировать только раздел вашего диска, используйте
Как вы можете видеть, раздел sda1 (то есть раздел 1 на устройстве sda) будет клонирован в sdb1 (вновь созданный раздел 1 на устройстве sdb), например, вторичный или внешний жесткий диск, подключенный к вашему компьютеру.
Нажмите Enter, чтобы запустить команду. Сколько времени это займет, будет зависеть от размера диска или раздела. Просто убедитесь, что объем назначения достаточно велик для его хранения!
2. Инструмент клонирования разделов Linux, Partimage
Если вы столкнулись с проблемами, пытаясь разобраться с инструкциями с помощью dd, или предпочли бы избежать случайного удаления вашего жесткого диска с опечаткой, partimage также доступен для большинства дистрибутивов и не несет риска «уничтожения диска»!
Однако partimage не поддерживает файловую систему ext4, поэтому избегайте ее использования для клонирования дисков или разделов этого типа. Однако при необходимости его можно использовать для клонирования дисковых форматов Windows (FAT32 или NTFS, хотя это экспериментально), а также для более широко используемой файловой системы Linux ext3 и других более старых альтернатив.
Перед началом убедитесь, что раздел, который вы хотите клонировать, отключен ( с помощью команды umount ). В противном случае вам нужно будет выйти из partimage, прежде чем продолжить процесс. Вы можете выйти в любое время с помощью клавиши F6 .
Для Ubuntu установите:
Запустите из командной строки:
Это приложение, управляемое мышью, которое требует, чтобы вы сначала выбрали раздел, который нужно клонировать.
Нажмите вправо на клавиши со стрелками, чтобы перейти к следующему разделу, затем Image file to create/use и дайте ему имя (или введите имя файла изображения, которое будет восстановлено).
Выберите Action to be done (убедитесь, что у выбранной опции есть звездочка) и нажмите F5, чтобы продолжить. На следующем экране выберите уровень сжатия и предпочитаемые параметры. Вы также можете выбрать режим разделения изображений и указать, что должно произойти после создания резервной копии.
Нажмите F5, чтобы продолжить, подтвердите данные, затем нажмите OK, чтобы начать процесс. Скорость этого будет зависеть от мощности вашего компьютера.
Если вы ищете быстрое и грязное, но безопасное решение для клонирования дисков для Linux, используйте partimage.
3. Partclone: программное обеспечение для создания разделов и клонирования
Для более зрелой альтернативы dd, которая поддерживает резервное копирование файловой системы ext4, partclone прост в использовании, но опять же требует текстовых команд, а не интерфейса, управляемого клавиатурой или мышью. Установить с помощью:
… Где [fstype] — тип файловой системы раздела, который вы хотите клонировать.
Следующая команда создаст образ диска hda1 (жесткий диск 1, раздел 1) с именем hda1.img:
Возможно, вы захотите восстановить это изображение, поэтому используйте
partclone.extfs -r -d -s hda1.img -o /dev/hda1
Более подробную информацию об использовании можно найти на сайте partclone.
4. Клонируйте свой диск Linux с помощью Clonezilla
Для более гибкого решения, почему бы не попробовать Clonezilla? Это популярное решение для аварийного восстановления основано на Partclone и предназначено для ряда задач клонирования дисков. Поддерживаются все ожидаемые файловые системы в Linux, Windows и MacOS (и за ее пределами).
В отличие от dd и Partclone, Clonezilla доступен в виде загрузочного ISO. Вы можете записать это на DVD или USB-накопитель, чтобы полностью клонировать жесткий диск Linux. Clonezilla проста в использовании, с меню на клавиатуре, а не с непонятными командами, так что любой может справиться с этим.
Хотя Clonezilla можно настроить как отдельную утилиту, вы можете предпочесть использовать ее как часть инструмента восстановления Boot CD от Hiren.
Вы также можете использовать Clonezilla на профессиональном уровне, чтобы создавать изображения схожих настроек ПК с одной и той же операционной системой.
Перезагрузка
Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.
а) Если необходимо извлечь старый диск, то выключаем компьютер, отключаем диск, но не убираем его далеко, так как если система не загрузится, необходимо будет его вернуть, подключив в тот же порт материнской платы.
б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.