Как скопировать раздел линукс

Клонирование разделов жестких дисков в Linux

Оригинал: How to Clone Linux Partition
Автор: Marin Todorov
Дата публикации: 18 декабря 2018 года
Перевод: А. Кривошей
Дата перевода: октябрь 2019 г.

Существует множество причин, по которым вы можете захотеть клонировать раздел Linux или даже весь жесткий диск, большинство из которых связаны с созданием резервных копий ваших данных. Есть несколько способов сделать это в Linux, используя внешние утилиты, такие как partimage или Clonezilla.

Однако в этом руководстве мы рассмотрим клонирование дисков Linux с помощью утилиты dd, которая чаще всего используется для преобразования или копирования файлов и предустановлена в большинстве дистрибутивов Linux.

Как клонировать раздел Linux

С помощью команды dd вы можете скопировать весь жесткий диск или отдельный раздел Linux. Начнем с клонирования одного из наших разделов. В моем случае у меня есть следующие диски: /dev/sdb, /dev/sdc. Я буду клонировать /dev/sdb1 / в /dev/sdc1.

Сначала выведите список разделов диска, используя команду fdisk, как показано ниже.

Теперь клонируем раздел /dev/sdb1/ в /dev/sdc1 с помощью команды dd:

Приведенная выше команда указывает dd использовать /dev/sdb1 в качестве входного файла и записать его в выходной файл /dev/sdc1.

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

Клонирование всего жесткого диска

Клонирование жесткого диска Linux похоже на клонирование раздела. Однако вместо указания раздела вы просто используете весь диск. Обратите внимание, что в этом случае рекомендуется, чтобы целевой жесткий диск был такого же размера (или больше), что и исходный диск.

Эта команда должна была скопировать диск /dev/sdb с его разделами на целевой жесткий диск /dev/sdc. Вы можете проверить изменения на обеих дисках с помощью команды fdisk.

Создание резервной копии MBR в Linux

Команда dd также может быть использована для резервного копирования MBR, которая находится в первом секторе диска перед первым разделом. Поэтому, если вы хотите создать резервную копию вашей MBR, просто выполните команду:

Источник

🎁 Как клонировать жесткий диск Linux с помощью Gparted

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

Если вы спешите, гораздо лучше использовать функцию дублирования, встроенную прямо в любимый каждого редактора разделов Linux: Gparted!

В этом руководстве мы рассмотрим, как легко клонировать жесткий диск Linux с помощью лайв сиди Gparted.

Этот процесс также можно выполнить с помощью версии Gparted, входящей во многие программные исходники ОС Linux, но это не рекомендуется, поскольку затрудняет изменение некоторых файловых систем.

Создать GParted Live CD

GParted Live CD необходим пользователям Linux, которые хотят модифицировать жесткие диски, особенно те, на которых установлены операционные системы Linux.

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

Шаг 1: Скачайте приложение записи Etcher USB на свой ПК с Linux, посетив этот сайт

Шаг 2: Откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре.

Затем перейдите каталог «Downloads» на вашем ПК с Linux.

Шаг 3: Используйте приложение командной строки unzip для полного извлечения файла Etcher AppImage на вашем ПК с Linux.

Читайте также:  Windows features and functions

Шаг 4: Обновите права доступа к файлу Etcher AppImage, чтобы он мог запускаться с помощью команды chmod.

Шаг 5: Используйте команду wget для загрузки последней версии ISO-файла Gparted Live на ваш ПК с Linux.

Или для 32-битной версии:

Шаг 6: Запустите приложение Etcher с помощью командной строки.

Шаг 7: Подключите USB-накопитель и дайте Etcher возможность автоматически выбирать его.

Шаг 8: Нажмите кнопку «Select Image», чтобы открыть окно «open-file dialog» и найдите файл Gparted ISO.

После того, как вы прошли запрос Grub для Gparted Live disk на вашем компьютере, на экране появится окно с надписью «Configuration console-data».

В приглашении будет несколько вариантов выбора.

Если вам нужно установить предпочитаемую раскладку, нажмите «Select keymap from arch list».

В противном случае выберите «Don’t touch keymap», чтобы загрузить ядро по умолчанию.

После раскладки клавиатуры Gparted спросит о вашем языке.

Просмотрите список и выберите тот, на котором вы говорите, введя номер в приглашении.

В противном случае оставьте значение по умолчанию, нажав клавишу ввода на клавиатуре.

Ваш язык и раскладка клавы установлены на Gparted Live CD.

Теперь загрузите графический интерфейс, введя команду startx в строке «Which mode do you prefer».

Копирование разделов с помощью Gparted

Чтобы скопировать раздел в Gparted, начните с поиска диска, с которым вы хотите работать (AKA исходный жесткий диск).

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

На исходном жестком диске найдите раздел, в который вы хотите скопировать на дополнительный жесткий диск (AKA целевой жесткий диск).

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

Просмотрите меню и найдите «copy» и выберите его, чтобы указать Gparted, что вы хотите скопировать раздел.

Затем вернитесь в меню в верхней правой части приложения и выберите целевой жесткий диск.

Примечание: раздел на исходном жестком диске не должен быть больше, чем место на целевом диске. Обязательно щелкните правой кнопкой мыши раздел и выберите «resize», чтобы сначала уменьшить его, чтобы раздел, который вы хотите скопировать, поместился на целевом диске.

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

Найдите в контекстном меню «paste», чтобы скопировать раздел.

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

Обязательно повторяйте этот процесс столько раз, сколько необходимо, если необходимо скопировать несколько разделов.

Когда все разделы жесткого диска будут скопированы в Gparted, перезагрузите компьютер с Linux.

Источник

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

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

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

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

Читайте также:  Windows all software search

Разберем на конкретном примере моей системы. Я собираюсь перенести систему с 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

Читайте также:  Прошивка модема под windows

А с остальными проще:
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

вот нам нужны как раз цифры «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% .

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

Источник

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