Перенести linux другой диск

Перенос Linux на другой диск

Такая задача возникает достаточно редко. Обычно, проще переустановить систему заново, чем переносить уже установленную версию на другой жёсткий диск или другой раздел. Но если у вас там есть важные программы, которые нежелательно удалять, или вы меняли настолько много настроек в системе, что её установка заново займёт намного больше времени, чем её перенос, то перенос будет предпочтительнее.

В этой статье мы рассмотрим, как перенести Linux на другой диск с помощью утилиты cp или архива tar. Второй способ интересен ещё тем, что вы можете создать резервную копию всей системы, а затем просто восстановить её при возникновении проблем.

Как перенести Linux на другой диск

Поскольку все данные, настройки и объекты операционной системы Linux — это файлы, то вы можете перенести свою операционную систему куда нужно, просто скопировав все нужные файлы. В Windows так де просто не получится, так, как там более сложная файловая система со сложными зависимостями.

1. Подготовка к переносу

Сначала рассмотрим, как использовать утилиту cp для переноса файлов операционной системы. В папку /mnt примонтируйте раздел, на котором будет располагаться новый Linux. Например, это /dev/sdb1:

Теперь нужно рекурсивно скопировать все файлы из текущего корня в нашу папку /mnt. Лучше всего это делать, загрузившись с LiveCD диска, тогда точно все нужные данные будут сохранены. Но это не обязательно, вы можете делать перенос и работающей системы, только перед этим остановите все запущенные базы данных и сервисы по максимуму, чтобы они сохранили свои настройки и вы ничего не потеряли в новой версии системы. Например, если у вас запущена база данных MariaDB или MySQL, то её нужно остановить:

Аналогично сделайте со всеми другими не важными для операционной системы сервисами. Также очистите корзину, кэш пакетного менеджера и другие ненужные файлы, чтобы они не занимали место в архиве или новой системе.

2. Перенос Linux утилитой cp

Далее можно запускать сам перенос Linux на другой диск. Для этого запустите утилиту cp с опциями -a, -r и —x. Первая опция включает сохранение исходных прав и метаданных файла, вторая — рекурсивный обход файловой системы, а третья ограничивает рекурсию только текущей файловой системой:

Поскольку будут копироваться только файлы из текущей файловой системы, то если ваши каталоги /boot и /home находятся на других разделах, то их нужно скопировать отдельно:

Если вам не нужна домашняя папка, то вы можете её не копировать.

3. Перенос Linux утилитой tar

Это альтернативный вариант переноса, если вы не хотите использовать cp, то можете применить tar. Чтобы сразу перенести файлы в другое расположение, нужно создать туннель, на одном конце которого данные будут запаковываться, а на другом — распаковываться:

Опция -p — заставляет утилиту сохранять метаданные файлов при переносе. Опция —one-file-system указывает, что утилита будет брать файлы только из корневой файловой системы, поэтому все примонтированые файловые системы, как и в предыдущем варианте, будут пропущены. Поэтому каталоги /boot и /home вам придётся копировать аналогичной командой. Или же можно не использовать эту опцию и передавать всё, кроме ненужного:

Также вы можете создать архив, а потом его куда-нибудь скопировать, чтобы иметь резервную копию системы:

Вместо опции —one-file-system можно использовать опции —exclude, чтобы исключить ненужные каталоги, как в предыдущей команде. А для распаковки используйте команду:

Здесь, /mnt — это каталог, в который нужно извлечь файлы архива.

4. Перенос с помощью rsync

Утилитой rsync многие не хотят пользоваться, но она очень удобная, работает достаточно быстро и отображает прогресс копирования. Для переноса с помощью rsync выполните:

Эта команда работает аналогично команде tar, копирует всё что есть в новое расположение. Опции -aAX включают сохранение всех метаданных файла, символических ссылок, владельцев, групп, и так далее.

5. Правка /etc/fstab

Далее будем работать только с новой системой. Первым делом нужно исправить файл /etc/fstab, чтобы там был указан правильный UUID корневого раздела. Узнать UUID нужного раздела можно командой blkid:

Теперь замените полученным UUID, значение этого параметра корневого раздела в /mnt/etc/fstab:

6. Установка загрузчика

Далее нужно установить загрузчик Grub в новом Linux. Сначала примонтируйте в него папки /sys, /proc и /dev:

Затем войдите в chroot окружение:

Затем установите загрузчик на тот диск, на который вы переносили Linux, в моём случае это /dev/sdb:

И осталось только создать конфигурационный файл для загрузчика:

В дистрибутивах, не основанных на Ubuntu, вместо update-grub2 можно использовать команду:

7. Перезагрузка

Выйдите из chroot-окружения командой:

Затем размотрируйте системные каталоги и ваш раздел:

И перезагрузите компьютер. В BIOS вашего компьютера нужно выбрать диск, на который вы переносили Linux, в качестве первого источника для загрузки. После загрузки вы будете уже в новой операционной системе и всегда сможете вернуться в старую.

Выводы

В этой статье мы разобрали, как перенести Linux на другой жёсткий диск с помощью утилит tar, cp или rsync. Как видите, это достаточно просто и быстро. Ещё мы могли бы использовать утилиту dd, однако она копирует весь диск побайтово, поэтому будет работать дольше и её архивы будут занимать больше места на диске. Ещё можно воспользоваться инструментом Clonezilla.

Источник

Перенос системы LINUX на другой винчестер с переразбивкой разделов

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

Читайте также:  Выполните сброс широкополосного модема windows 10

В общем — вот оно. Бейте ногами, режьте на части. Встречайте!

Первое, что нам необходимо сделать — это разметить новый жесткий диск в соответствии с желаниями и, возможно, исключив ошибки предыдущей разметки (если на исходном диске что то не нравится).

Разберем на конкретном примере моей системы. Я собираюсь перенести систему с HDD=80Gb на HDD=20Gb.

Мой диск, объемом 80Gb размечен следующим образом:

/dev/hda1 — /boot (250 Mb)
/dev/hda2 — swap (1Gb)
/dev/hda3 — extended (20Gb) (включает в себя /dev/hda5, /dev/hda6, /dev/hda7, /dev/hda8)
/dev/hda5 — / (5Gb)
/dev/hda6 — /tmp (512Mb)
/dev/hda7 — /usr (10Gb)
/dev/hda8 — /var (5Gb)
/dev/hda4 — /home (54Gb)

/home очень сильно забит информацией, потому его в клонирование я не включаю.

Выставив перемычки как положено, я подключаю новый HDD в систему. Он принял метку hdb
Можно разметить его с помощью ЛЮБОЙ удобной для вас утилиты. Мне было проще воспользоваться GPARTED — так визуально понятнее, да и видно там сразу, сколько реально места занято данными на той или иной партиции, что поможет определить стоит ли выделять столько много (или мало) места.

Я разметил новый диск (/dev/hdb) следующим образом:

/dev/hdb1 — /boot (250 Mb)
/dev/hdb2 — swap (1Gb)
/dev/hdb3 — extended (14Gb) (включает в себя /dev/hdb5, /dev/hdb6, /dev/hdb7, /dev/hdb8)
/dev/hdb5 — / (1Gb)
/dev/hdb6 — /tmp (512Mb)
/dev/hdb7 — /var (5Gb)
/dev/hdb8 — /usr (7Gb)
/dev/hdb4 — /home (4Gb)

Следующим шагом надо подмонтировать все созданные разделы на новом HDD к существующей системе.
Для этого на существующей системе я создал директорию /backup, в которой создал поддиректории /boot, /root, /var, /usr (/tmp — не надо), в соответствии с разделами на которые я разделил новый HDD.
Далее осуществляем само монтирование:

sudo mount /dev/hdb1 /backup/boot
sudo mount /dev/hdb5 /backup/root
sudo mount /dev/hdb7 /backup/var
sudo mount /dev/hdb8 /backup/usr

Вот и подобрались к самому интересному, но отнюдь не самому простому месту, к копированию данных.
В отличии от Windows Linux позволяет скопировать себя ПОЛНОСТЬЮ. Но надо помнить один важный момент — в системе есть аттрибуты на директории и файлы, а так же симлинки и хардлинки. Так вот необходимо так скопировать систему, чтоб все эти связи не растерялись. Для такой процедуры, по мнению больших специалистов, лучше всего подходит команда tar.
Смысл в том, что мы НЕ БУДЕМ архивировать файлы на диск, а будем их переносить через так называемую «трубу» или «поток» на приемный HDD.

Для упрощения процедуры переноса я написал скрипт backup.sh:

#!/bin/sh
cd /
tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys vmlinuz | (cd /backup/root; tar -xvpf -)
cd /boot
tar -cf — * | (cd /backup/boot; tar -xvpf -)
cd /var
tar -cf — * | (cd /backup/var; tar -xvpf -)
cd /usr
tar -cf — * (cd /backup/usr; tar -xvpf -)

немного объясню, что к чему:

«cd /»
— переход в root

«tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys | (cd /backup/root; tar -xvpf -)
» — заtarивание перечисленных директорий и файлов с передачей их на расtarивание на приемный HDD.

Узнать какие директории и файлы надо переносить несложно. Просто выполните команду «ls /» тем самым получив листинг вашей системы начиная с /.
В моем случае это:

ls /
backup boot dev home initrd.img media opt root srv tmp var
bin cdrom etc initrd lib mnt proc sbin sys usr vmlinuz

Из всего этого «добра» нам нужно выделить то что будет находиться в /.
Так, как я выделил отдельные партиции на диске под /boot, /var, /tmp, /usr и /home, получается что их на данном шаге нужно пропустить. Следовательно берем только dev initrd.img opt srv var
bin cdrom etc initrd lib sbin sys vmlinuz

А с остальными проще:
cd /boot
— заходим в существующий /boot

tar -cf — * | (cd /backup/boot; tar -xvpf -)
переносим все содержимое /boot в /backup/boot

Итак запускаем скрипт backup.sh и идем отдыхать на некоторое время. У меня все заняло около 10 минут.

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

НЕДОСТАТОЧНО просто скопировать данные на партиции /var, /tmp, /usr.
После всех процедур переноса нам необходимо СОЗДАТЬ эти директории на приемном диске, как точки монтирования тех самых партиций (и все те точки монтирования, которые мы исключили при переносе — /home, /media, /tmp, /var, /mnt, /proc, /usr) ОБЯЗАТЕЛЬНО С ТЕМИ ЖЕ аттрибутами! То есть:

sudo mkdir /backup/root/home
sudo mkdir /backup/root/media
sudo mkdir /backup/root/tmp
sudo mkdir /backup/root/var
sudo mkdir /backup/root/mnt
sudo mkdir /backup/root/proc
sudo mkdir /backup/root/usr

какие выставить аттрибуты на директории можно узнать набрав команду ls -la / на исходной системе. Но кроме /tmp везде должен быть владелец root группа root и права 766. На /tmp надо поставить права 777.

Теперь надо на приемном HDD поправить fstab, если необходимо (если вдруг вы СОВСЕМ ПО ДРУГОМУ разметили диск). А так же поправить menu.lst загрузчика GRUB.

В UBUNTU что в fstab, что в menu.lst все диски прописаны через UUID а не просто /dev/hda.
узнать какой у вашего диска UUID можно с помощью команды: ls -l /dev/disk/by-uuid, на выводе должно получиться что то вроде:

lrwxrwxrwx 1 root root 10 2008-02-17 17:45 11815c66-5ae7-4497-9039-51de9adef664 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 78711a48-6776-4474-8fa8-87016aad83a2 -> ../../hda6
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 83fded3d-37c4-4d85-a965-a7bbe326178a -> ../../hda7
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 a60e482c-8260-48fb-a19e-f5f906d4d444 -> ../../hda8
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 bc7607fe-3bf2-4bc1-adce-8ab749a271c9 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 cacd40ea-ac88-4143-b5d9-5cb477eeb85d -> ../../hda4
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 d4404ea9-0a8e-4a4c-b72d-10a5edd697be -> ../../hda5

Читайте также:  Windows не устанавливается загрузка драйверов

вот нам нужны как раз цифры «11815c66-5ae7-4497-9039-51de9adef664», к примеру. Это UUID партиции swap (в моем случае).

в menu.lst правим следующие строки:

# kopt=root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro
(не смотрите что строка закомментирована, при обновлении ядра именно отсюда берется информация)

kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro quiet splash locale

kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro single

Не забудьте тот факт, что хоть система и скопирована на диск, но она пока не умеет загружаться, потому что мы не установили загрузчик.
Делается это просто:
Берем установочный диск UBUNTU и грузимся.
переходим в консоль ctrl+f1

sudo su
grub
find /grub/stage1
root (hd0,0) сюда пишем то что выдала предыдущая команда
setup (hd0) сюда пишем то же самое но до первой запятой.
quit

Все — отсединяем диск от системы, подключаем, проверяем. У меня все заработало.

Так как я не переносил /home — то система ругнулась на то что я как пользователь есть а вот домашней папки у меня нет. Я поступил варварским способом — userdel %username% , а затем adduser %username% .

Просто мне было НЕВАЖНО. И лень расставлять аттрибуты. А таким образом система сделала все за меня.

Источник

Перенос всей установки Linux на другой диск

У меня есть Ubuntu 14.04 со множеством пакетов и всего, что связано с работой, и я им очень доволен. Он установлен на моем основном SSD-накопителе емкостью 120 ГБ (я выбрал «/», когда установил Ubuntu, поэтому я считаю, что все должно быть на этом диске). Он отображается как / dev / sda

Теперь я добавил еще один SSD на мой компьютер, который является 240Gb. В данный момент у меня нет под рукой других носителей информации (например, внешний жесткий диск).

Поскольку новый накопитель на 240 ГБ, очевидно, имеет большую емкость и работает быстрее (более новое поколение, чем мой на 120 ГБ), я хочу перенести свой Linux на этот новый накопитель. Этот новый диск отображается как / dev / sdb, и на данный момент он не отформатирован или что-то еще (я буквально распаковал и вставил в мой компьютер прямо сейчас: P)

Как я могу безопасно переместить мою установку Linux в новый диск?

Я могу изменить кабель SATA, чтобы новый диск отображался как / dev / sda, если это необходимо.

Это вывод «fdisk -l», если это помогает:

7 ответов

Вы можете использовать CLONEZILLA для этой цели.

Clonezilla — это бесплатный инструмент для создания образов / клонирования разделов и дисков, который можно использовать для резервного копирования всех ваших данных (целых дисков или разделов) с высокой степенью сжатия и последующего клонирования их обратно на жесткий диск, чтобы привести их в такое же состояние. . В большинстве случаев это быстрее, чем установка ОС.

Сделать загрузочный (Live) USB с использованием Tuxboot 7.0 .

Загрузка с созданного носителя Clonezilla.

Теперь у вас есть много вариантов:

  1. Создать образ только с ‘/’ (части сохранения) и клонировать его в любой раздел другого вашего SDD.
  2. Создайте образ полного диска (сохраненный диск) и клонируйте его на новый SSD.

В вашем случае вы также можете использовать параметр «устройство-устройство», но я с ним не знаком.

Вы можете найти подробное руководство по Clonezilla здесь: http://clonezilla.org

Если у вас есть время и хотите обезопасить себя:

  • если — вход, то из место назначения
  • bs устанавливает размер блока. Это размер фрагментов, которые dd будет читать и записывать. Более высокие размеры фрагментов обычно означают более высокую производительность, но также большее повреждение данных, если входной диск имеет ошибки, см. Здесь: archwiki на dd
  • noerror продолжается в r / w-errors.
  • sync синхронизирует смещения, если произошла ошибка.

Это в основном создаст образ вашего диска sda и запишет его на sdb (та же структура разделов и т. д.) Конечно это ‘ Я напишу все 120 ГБ, поскольку они не зависят от файлов. Таким образом, очень безопасно, но не самым быстрым, если вы используете только небольшие части диска. Однако, если входной диск довольно заполнен, это может быть даже быстрее.

  • После этого вы, вероятно, захотите изменить размер разделов, иначе вы не сможете воспользоваться дополнительным пространством.
  • В любом случае это может потребуется для редактирования файла / etc / fstab.
    Это тот случай, если для распознавания дисков используются идентификаторы оборудования.

Когда я переключаюсь на новый жесткий диск, я это делаю так:

  • создаю структуру разделов, на которой я хочу новый привод
  • загружается с Live CD / USB или устанавливается, восстанавливается и т. д.
  • монтирует старые разделы жесткого диска, которые нужно скопировать, например, / mnt / a
  • монтировать новый разделы жесткого диска для приема файлов, например, / mnt / b
  • cp -a или используйте tar для копирования файлов из / mnt / a в / mnt / b
  • установить загрузчик (lilo или grub) на новый диск ¹
  • обновить / etc / fstab (вы можете использовать blkid для определения новых UUID)
  • перезагрузите и проверьте, все ли в порядке

Примечание¹:

Проверьте весь жесткий диск и разделы, используя следующую команду:

Теперь Обратите внимание на раздел, на котором установлена ​​Ubuntu, который будет выглядеть так: / dev / sda1

Смонтируйте раздел, на который вам нужно установить GRUB 2 (раздел жесткого диска), и файловая система появится в Nautilus. Теперь нам нужно смонтировать правильный раздел жесткого диска, чтобы внести изменения в фактическую MBR жесткого диска. Для этого нам необходимо:

Теперь смонтировать раздел в альтернативном месте.

Создать неразрывную ссылку из папки / dev на живом образе, с которого вы загрузились, на / dev на разделе, который вы смонтировали в / mnt

Читайте также:  Шифровка пароля des linux

. Теперь нам нужно изменить корень с корневого диска Live CD (/) на корень смонтированного раздела

. Теперь вы находитесь в новой корневой оболочке, в которой смонтированный раздел — это новый корень. Вы можете проверить это, набрав ls . Поскольку сейчас мы находимся в смонтированном разделе, мы можем пойти дальше и установить GRUB 2:

Установка должна завершиться сейчас, без ошибок

Выйдите из оболочки CHROOT, набрав exit или нажав Ctrl + D который возвращает вас к Live CD / USB Shell

Отключите разделы, которые мы смонтировали ранее, чтобы выполнить чистую перезагрузку:

и перезагрузитесь после извлечения Live CD или USB-накопителя для загрузки с жесткого диска:

Это можно сделать несколькими способами. Но самый простой способ — просто скопировать все файлы со старого диска на новый.

Создайте раздел ext4 и раздел подкачки на новом диске.

Загрузитесь с LiveUSB.

Смонтируйте старый раздел Ubuntu в какой-то каталог, смонтируйте новый в другой каталог.

Скопируйте все файлы из старого в новый с помощью команды cp -a .

Обновите / etc / fstab с новыми UUID.

Если что-то неясно, я могу добавить некоторые пояснения.

В отличие от других ответов, это позволяет клонировать установку Linux и добавлять его в меню Grub, при этом текущие установки останутся нетронутыми. Дополнительно он автоматически изменяет для вас /etc/fstab и обновляет загрузочное меню grub .

Для помощи в выборе правильного раздела для клонирования предоставляется меню. Клоном из раздела является текущий загруженный раздел.

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

Я решил провести эксперимент, связанный с этим постом.

Я приобрел Lenovo ThinkCentre. У него был SSD на 256 ГБ и жесткий диск на 1 ТБ (спиннер типа — быстрый, но не такой быстрый, как SSD).

Когда я установил Linux Mint 19.2 (LM19.2), он установил его на диск емкостью 1 ТБ. В итоге твердотельный накопитель не подлежал восстановлению, и я купил новый твердотельный накопитель Kingston емкостью 240 ГБ.

Я собирался установить LM19.2 на новый SSD, но мне показалось, что должен быть способ перенести мой хорошо проработанный образ LM19.2 с диска 1 ТБ на новый SSD.

Я нашел это пост, и хотя выше есть несколько веских советов, я был в состоянии экспериментировать. Ниже приводится отчет о том, что я сделал, и это сработало ОЧЕНЬ хорошо.

  1. Я использовал GParted для создания таблицы разделов и разделов на SSD, которые были того же типа, что и на жестком диске 1 ТБ.
  2. Я сделал снимок ВСЕГО ВСЕГО на жестком диске LM19.2 емкостью 1 ТБ с помощью TimeShift (новый инструмент в Ubuntu / Linux Mint).
  3. Я восстановил этот снимок на SSD.
  4. После выполнения вышеуказанных шагов (вы даже можете сделать 1 параллельно с 2 и 3), я перезагрузился, убедившись, что он выбрал SSD.
  5. Единственное, что было странно во время перезагрузки, это то, что INITIAL Экран grub спросил, хочу ли я загрузиться в Ubuntu. Я предположил, что это было характерно для восстановления TimeShift, и это было.
  6. Последующие запуски загружались как обычно LM19.2.
  7. Я отредактирую этот ответ, как только проверю, что могу сделать это с новым диск висит снаружи от ПК (и кажется очевидным, что это сработает), потому что это будет означать, что я могу быстро скопировать любую из моих LM-машин на новое оборудование.

Одна только скорость загрузки сделала эти простые шаги стоящими усилий. Даже Dropbox переносился нормально — он просто хотел, чтобы я снова вошел в систему, а индексирование файлов занимало все время, но все работало отлично.

Я всегда использую следующую процедуру:

  1. Убедитесь, что ваша установка включает диспетчер разделов (PM). Если нет, установите gparted.
  2. Подключите новый диск через USB-адаптер. Посоветуйтесь с PM, какой диск какой. Обычно старый — / dev / sda, а новый — / dev / sdb, но лучше перестраховаться. Если путаете диски, просто стираете имеющуюся установку. Помните: dd не зря называют разрушителем дисков.
  3. Используйте dd, как объяснил ljrk выше, для побайтного копирования старого диска на новый. Добавьте status = progress к опциям dd, чтобы следить за прогрессом.
  4. Запуск PM. На новом диске создайте, а затем уничтожьте временный раздел, заполняющий лишнее пространство. Это приводит к перезаписи таблицы разделов в соответствии с размером нового диска. Важно: последовательность действий должна быть следующей: создать-применить-уничтожить-применить.
  5. Используя PM, измените размер разделов на новом диске по своему вкусу, чтобы использовать весь диск.
  6. Завершение работы, поменяйте местами диски, запустите, убедитесь, что он работает нормально.

Если вы хотите также использовать старый диск в качестве внутреннего:

  1. Подключите старый диск через адаптер USB, отформатируйте его и разбейте на разделы по своему усмотрению.
  2. Выключите, установите старый диск вместе с новым, запустите.

Если вы хотите использовать старый диск как часть вашей файловой системы, добавьте что-нибудь в мелодию,

UUID = actual-uuid -here / data ext4 значения по умолчанию, сбросьте 0 2

в / etc / fstab, затем запустите sudo mount -a или перезапустите.

Если у вас нет USB-адаптера, та же процедура должна работать с горячей заменой дисков, но здесь вы сами. Более безопасный способ — использовать USB-диск или CD / DVD с установленной системой (например, установочный носитель). В этом случае вы можете с самого начала поставить оба диска (новый и старый) на свои места, затем загрузиться с носителя и выполнить копирование и т. Д.

Не обязательно вставлять новый диск в тот же разъем SATA, что и старый, но тогда вам может потребоваться изменить последовательность загрузки в BIOS.

Источник

Оцените статью