LINUX.ORG.RU

Перенос ОС с одного внешнего диска на другой внешний

 


1

3

Как осуществить перенос ОС с одного внешнего диска на другой внешний? Только операционную систему. Можно ли это сделать с помощью команды DD или tmeshift?

DD

Можно. Сначала посмотри, что ничего не примонтировано через mount или df. Как закончишь, выключи компьютер и больше не втыкай одновременно оба диска, пока один не отформатируешь.

anonymous
()
Ответ на: комментарий от anonymous

можно и живую систему копировать через dd. понятно, что там с «ошибками» скопируется, когда какой-то файл из созданных после начала клонирования потеряется, но из-за особенностей работы файловых систем это не является критичным. если лень правильно делать, то можно и наживую

rtxtxtrx ★★
()

Линукс так и не научился переносить консистентные данные. Такое могут только illumos и *BSD. Поэтому единственный вариант через выключение – выключить устройство, загрузиться из любого лайва в него и перенести ( например при помощи dd )

anonymous
()
Ответ на: комментарий от Clockwork

не. просто файлы какие-то «не сохранятся» из последних, я когда ничего не умел, так все и делал. + у автора не сервак, а десктоп, так что база не будет ругаться на битые индексы

rtxtxtrx ★★
()

Вам именно перенести или сделать копию? Если перенсти, чтобы исходный диск под что-то другое отформатировать, то одно. А если нужно копия, чтобы оба диска могли одновременно работать, то другое. Во втором случае нужно чтобы были уникальные UUID у ФС и разделов.

Если хотите dd, и второй меньшего размера, то сначала нужно уменьшить в размерах ФС, потом dd, потом правка таблицы разделов, потом увеличить ФС. Но, если там ещё LVM, то будет сложнее.

ВЕСЬ диск. Мне же нужно перенести ТОЛЬКО систему.

А система не весь исходный диск занимает? Съёмный диск разбит на кучу разделов?

Или, разбивать, форматировать второй диск, копировать через tar/cp/rsync. Отдельно переносить загрузчик. Править конфиг загрузчика, так как UUID у ФС другой. Может ещё fstab править...

mky ★★★★★
()
Ответ на: комментарий от anonymous

Ничего не понял, разжуй старику. Почему не подсоединять оба внешних диска? Как тогда пенести систему с одного на второй? Да, клонирование диска меня не интересует - нет второго с таким же объёмом. ТОЛЬКО операционку!

susliniwan
() автор топика
Ответ на: комментарий от anonymous

Линукс так и не научился переносить консистентные данные

Неоднократно клонировал систему по живому с помощью утилиты fsarchiver - у нее спец. ключик -A есть для копирования по живому.
Ей же можно скопировать систему с большого диска на диск меньшего размера (если на него влезут записанные данные).
Утилитой dd ты будешь копировать и пустое место, поэтому диск нужен того же размера или больше.

sigurd ★★★★★
()
Ответ на: комментарий от susliniwan

В результате dd появятся ФС с одинаковыми UUID и Label. А если весь диск, то ещё и разделы с одинаковыми UUID. UUID должен быть уникальным. Поведение ОС не определено, когда есть копия того, что должно быть уникальным.

mky ★★★★★
()
  1. Грузишься с лайва.
  2. Монтируешь корень со старой системой в /mnt/old.
  3. Размечаешь новый диск.
  4. Монтируешь новый(будущий) корень в /mnt/new.
  5. Копируешь данные командой cp -a /mnt/old/* /mnt/new/.
  6. Правишь fstab.
  7. Ставишь загрузчик.
  8. При необходимости пересобираешь initrd.
  9. Всё.
u5er ★★
()
Ответ на: комментарий от u5er

Только при указании источника в конце надо указывать не звёздочку, а точку, иначе будут пропущены все скрытые файлы и папки, включая конфигурационные. Или просто директорию – и без звёздочки, и без точки. Я так однажды забэкапил систему и прошляпил конфиг conky, который до этого неделю настраивал :)

anonymous
()
Ответ на: комментарий от anonymous

Слух, а и правда. Только нужно указывать именно точку, т.к. я хочу скопировать содержимое каталога, а не сам каталог. Только вот до этого я всегда копировал со свёздочкой и скрытые файлы и каталоги внутри каталогов копировались. Поизучаю этот вопрос на досуге основательно.

UPD: Походу, разобрался. Если указывать звёздочку, то он не копирует скрытые файлы и каталоги непосредственно из указанного каталога, но при копировании уже внутри дочерних каталогов, копируется всё. Я таким образом копировал только корни, а там нет скрытых каталогов, поэтому не подрывался на таком. Теперь буду точку использовать, спасибо.

u5er ★★
()
Последнее исправление: u5er (всего исправлений: 1)

У dd есть неприятная особенность: он копирует все метки разделов, включая UUID, так что потом в системе может оказаться два одинаковых раздела. Лучше скопировать файлы с помощью cp -ax.

annulen ★★★★★
()
Ответ на: комментарий от anonymous

е втыкай одновременно оба диска, пока один не отформатируешь.

для ехт4 нормально два одинаковых раздела, это btrfs, zfs и фс макос безумствуют от двух одинаковых раздела

s-warus ★★★
()

Как осуществить перенос ОС с одного внешнего диска на другой внешний?

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

Ваша задача делиться на два этапа.

  1. Копирование.
  2. Настройка загрузчика.

Для этапа №1. Вам надо понимать, что такое таблица разметки диска, раздел диска, файловая система. Чем mbr отличается от gpt, как работать с parted. Что такое команда dd. Вы можете скопировать как все устройство через dd (sda,sdb,sdc), так и одтельный раздел (sda1, sda2, sda3, sdb1, sdb2, sdc1, sdc2…).

Для этапа №2. Вам надо понимать: что такое nvram, kernel, boot loader, UEFI/BIOS.

Это еще исключая такой вопрос как LVM и шифрование, если у вас на прямую установлена система на диск.

Материал из 213-94 = 113 + 6 = 119 страниц из книги How Linux Works (c) Brian Ward 3 издание, с 3 по 5 главу включительно.

  • Глава 3. Devices. стр. 94-123.
  • Глава 4. Disk and Filesystems. стр.123-188.
  • Глава 5. How the Linux Kernel Boots. стр. 188-213.

Одной строчкой вы не обойдетесь. Вам в любом случае надо будет настраивать загрузчик. Или как минимум UEFI.

Только операционную систему.

Что вы понимаете под «только операционной системой»: /boot раздел и grubx64.efi это часть «только операционной системы»?

Итог:

  • UEFI
  • EFI
  • GPT
  • BIOS
  • MBR
  • ESP
  • Grub
  • fat32
  • NVRAM

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

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)

Продолжаем.

Процесс загрузки следующий.

  1. Из энергонезависимой памяти NVRAM запускается UEFI.
  2. Код UEFI выбирает ESP откуда пускает загрузчик.
  3. Загрузчик находит ядро, передает ему параметры и запускает его.
  4. Уже начинает работать Опецрационная Система: systemd и так далее.

Вы копируете с одного диска на другой данные которые и есть ОС. Ядро, и прочие файлы с настройками (профиль системы - изменяемая часть системы, задающее её поведение во время работы).

Следующая задача.

  1. Указать UEFI (биос по старинке) где находиться системная партиция ESP.
  2. Настроить загрузчик (Grub как правило) указав ему место находение ядра и ключи для его запуска.

На этих этапах и происходит вся свистопляска.

  1. Можно перекопировать сразу все устрйоство sdX при помощи dd. И как писали выше тогда все метки разделов будут скопированы, и все что потребуется это «настроить Биос» UEFI.
  2. Можно перекопировать какой-то раздел, но тогда потребуется копаться с настройкой загрузчика. Переклепывать его, указывая откуда брать ядро. У Grub своя нотация определения дисков по порядку их определения в UEFI.

Каждый из этапов не чёткий, и не возможно дать гарантии: сработает или нет. Чтоб гарантированно разобрабраться в ситуации нужно знание определений которые расписал Brian Ward в книге.

Еще вам сможет помочь разобраться в вопросе mini ChatGPT на duckduckgo.com когда основные определения станут знакомы.

И знаете, что еще. Вот что Курячий и Маслинский «Операционная Система Linux. Курс Лекций. Учебное пособие» Глава 10. Там в основном про MBR, но дело пишут.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 5)
Ответ на: комментарий от s-warus

ехт4 нормально два одинаковых раздела

Безумствовать могут скрипты в initramfs, загрузка будет с одного диска, а корень смонтируется с другого. И система будет работать, но потом окажется, что последние файлы не на том диске сохранились. Когда-то в RH вобще было монтирование по метке ФС, которая что-то типа ″root″ была, там, чтобы получить такое, не нужно был ничего копировать, достаточно было попробовать установить на соседний диск...

mky ★★★★★
()
Ответ на: комментарий от mky

я дублированные диски в режиме загрузки ни разу не юзал (думаю больших проблем не должно если по старинки /dev/sda1 указать), а вот смонтировать в запущенной системе два образа с одинаковым UUID для ext4 проблем не доставляет, в отличие от btrfs, zfs и фс макос

s-warus ★★★
()
Ответ на: комментарий от s-warus

Что значит в отличии? Оно работает.

UUID хранится на… разделе:

~
❯ blkid -o value -s UUID /dev/nvme1n1p1
a3222235-4687-44dc-bb70-31d3fc17f71

~
❯ sudo head -c 512 /dev/nvme1n1p1 | strings
LUKS
sha256
'szt
a3222235-4687-44dc-bb70-31d3fc17f714

(последняя циферка - это просто какие-то текстовые данные, идущие после идентификатора)

А PARTUUID записан в GPT, там в начале диска, где зарезервировано 2048 секторов по 512 байт:

~
❯ blkid -o value -s PARTUUID /dev/nvme1n1p1
a9fc9f9e-5495-4346-86a0-4ad48fd4bbc1

Прописывай в stab последний и не будет проблем… И UUID уникален только в пределах диска…

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 2)
Ответ на: комментарий от rtxtxtrx

И UUID уникален только в пределах диска…

Предназначение UUID - заменить непостоянное имя раздела типа sda1 на уникальную метку. Тем самым, вне зависимости от того, как определился диск (sda, sdb, sdc и т.д.), загрузчик будет выбирать нужный раздел по UUID.

Следовательно, при наличии двух разделов с одинаковыми UUID на разных дисках - весь смысл UUID пропадает.

The only thing different is the first entry in the table. Instead of /dev/sda1, the UUID 1c0653cd-e897-41af-bd30-55f3a195ff33 now designates the drive. Because of this, it wouldn’t matter if the drive were /dev/sdi1; as long as the appropriate modifications to the bootloader config file were made, it would still mount as root and function as expected.

(с) David Pendell

https://www.linux.com/news/what-uuids-can-do-you/

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 3)
Ответ на: комментарий от rtxtxtrx

загрузится, то что первым определится и все

Это и есть пропажа смысла UUID. Раздел на диске больше не адресуется однозначно при помощи UUID. Это все равно, что повесить одинаковые номера на несколько домов одной улицы - смысл номеров на домах пропадает.

из того что там пендель написал ничего не следует.

Это же надо прочитать сначала, и попробовать понять. Вы не сделали ни первого, ни второго. Как обычно. Как в примере с Go и ООП.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

И UUID уникален только в пределах диска…

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

Ответье, пожалуйста, на вопрос: зачем разделу на жестком диске присваивается уникальный 128 битный идентификатор?

lbvf50txt
()

перенос ОС с одного внешнего диска на другой внешний

Если система загружена с третьего диска, то клонировать ВСЕ можно и dd.

Если клонировать надо только рабочую систему. Разбиваешь другой внешний диск на разделы. Форматируешь и монтируешь созданные разделы и разделы с первого диска. Копировать можно cp со всеми атрибутами:

cp -pRPd --precerve=all /boot /bin /lib* /sbin /usr /var /opt /mnt/new

Атрибуты файлов надо проверить! Не все атрибуты cp умеет копировать. Создать нужные каталоги в /mnt/new для монтирования спец фс нужными правами.

grub-install установит загрузчик.

anonymous
()

Зачем переносить, если можно просто переустановить? Только не надо про то, что современные линуксоиды говно и лишь бы переустанавливать. Если диск размечен правильно, то перенести только раздел с данными, который обычно /home, а все остальное накатить по новой. Все конфиги в хомяке, где-то что-то потом поправить и все. Меньше гемора о том, где взять похожий диск, идентификаторы, правильность и полнота копирования. Или второй вариант, но он должен был быть предусмотрен ещё до самой первой установке системы, так сказать за ранее предусмотреть возможность переноса системы с диска на диск. А это совсем просто: LVM или рейд из дисков. Всегда нужно правильно планировать, чтобы потом не страдать.

anonymous
()
Ответ на: комментарий от anonymous

Чтобы было более понятна моя задача: Мне нужно скопировать всё с внешнего диска КРОМЕ содержимого папки HOME. Как это сделать? Диск будет просто запасным. Установку системы заново не предлагать. Спасибо всем.

susliniwan
() автор топика
Ответ на: комментарий от susliniwan

Тебе нужно рассказать побольше. Какая файловая система, какие разделы, сколько их? В каких пк нужна загрузка - с биос или уефи, или и то, и то другое?

NyXzOr ★★★★
()
Ответ на: комментарий от susliniwan

Как это сделать?

Прочитать предложенные вам 4 главы: 3 из первой книги, 1 из второй книги. Судя по вашем постам вы раздел от диска не отличаете, и не знаете чем блоковое устройство отличается от символьного.

Мне нужно скопировать всё с внешнего диска КРОМЕ содержимого папки HOME.

Внимание. Ни каких гарантий нет. Велика вероятность, что вы под root что-то себе поломаете или перетрете неправильной коммандой. Возможно у вас диск зашифрован. Возможно у вас другие настройки. Масса вариатов.

Внимание. Предложенная схема самый обобщенный черновик, а не руководство к прямому действию.

Внимание. Перед выполнением комманд гуглите, читайте man.

  1. lsblk - узнаете какие у вас устойства.
  2. загружаетесь в root через текстовую консоль (Ctrl+Alt+F4 - тексовая консоль, Сtlr+Alt+F7 - обратно в GUI). Может быть через sudo -i если ваш пользователь в группе sudo и у него есть права соответсвующие.
  3. При помощи команды dd копируете весь диск sdX вместе с разделами.
  4. Удаляете каталог home на копии в нужном разделе.
  5. Перебиваете на диски с копией UUID разделов (опционально). tune2fs для ext2/ext3/ext4.

Папки в шкафу, на диске каталоги.

UPD: И зачем вас весь диск копировать? Вы можете из под root скопировать нужные каталоги /usr, /etc … и так далее. Вообще не связываясь с командой dd. Читайте про FHS.

UPD2: Ваш вопрос звучит примерно так «как поменять двигатель на машине?». И сразу возникает 100 нюансов: что за машина, что за двигатель, какие ваши навыки. Тут сложно дать вам короткий ответ.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 4)

Вы в курсе, что настройки пользовательских программ, их данные (например: архив писем Thunderbird) как правило хранятся /home?

Обычно самое важное забекапить /home, а уж остальное можно востановить просто набрав необходимые пакеты. Еще /etc надо забекабить, там системные настройки сервисов и серверов.

https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

Папки в шкафу, на диске каталоги.

Жалко что за океаном этого не знают и по старинке называют папки папками (folders).

P.S. Если ты такой умный может и этимологию термина «каталог» приведёшь? А то вдруг это слово тоже к компьютерам не имеет отношения.

anonymous
()
Ответ на: комментарий от anonymous

Линукс так и не научился переносить консистентные данные. Такое могут только illumos и *BSD

… и Linux. Есть LVM, есть BTRFS, есть ZFS, – делаешь снапшот и спокойно переносишь свои данные, хоть cp, хоть rsync’ом.

anonymous
()
Ответ на: комментарий от lbvf50txt

Я уже писал что мне нужно скопировать не весь диск на другой диск (сделать клон диска, что просто делается с помощью DD), а перенести ТОЛЬКО систему (Линукс Минт 21.3, занимающую несколько Гиг) на второй диск МЕНЬШЕГО объёма. Исходный диск имеет 1 раздел диска - 1Мб, 2 раздел диска -513Мб и 3 раздел диска -480 Гиг на котором и находится основная часть системы, пользовательские программы и просто файлы типа видео и тп. Так что твои предложения не подходят.Спасибо.

susliniwan
() автор топика
Ответ на: комментарий от lbvf50txt

Я уже писал, что меня интересует перенос ТОЛЬКО системы БЕЗ содержимого того, что находится в папке HOME. Жаль, что приходится писать об этом многократно.

susliniwan
() автор топика
Ответ на: комментарий от susliniwan

Мне же нужно перенести ТОЛЬКО систему.

Подключи второй диск, сделай на нём разделы с такими же UUID’ами и скопируй ТОЛЬКО систему, например, rsync’ом, указав ему в параметрах exclude ненужные для копирования каталоги (--exclude /home). При UEFI загрузке даже grub переустанавливать не надо.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Похоже, что это единственное предложение, которое имеет смысл. Только вот как сделать и чем на нём разделы с такими же UUID’ами и как скопировать ТОЛЬКО систему? rsync’ом я никогда не пользовался.

susliniwan
() автор топика
Ответ на: комментарий от susliniwan

Только вот как сделать и чем на нём разделы с такими же UUID’ами

mkfs.ext4 -U

и как скопировать ТОЛЬКО систему?

Я ж написал ключ к rsync’у.

P.S. А, забыл ещё про --one-file-system, тоже пригодится.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от susliniwan

Жаль, что приходится писать об этом многократно.

Жаль что вам вообще приходиться писать о том как скопировать файлы с одного диска на другой. Если вы задаете такой вопрос, то нет гарантии что вы в курсе где хранится часть конфигурационных файлов.

lbvf50txt
()
Ответ на: комментарий от susliniwan

По вашему в каталоге HOME.

Так. Ситуация стандартная для LOR: собеседник не в состоянии осилить более одного предложения. Очень жаль. Досадно.

По поводу «каталог/папка»: термин каталог (список) отображает строение файловой системы, это термин инженеров. Термин папка - это упрощение для офисных работников. Это из МГУ от Курячего и Столярова, но вы продолжайте говорить папка.

Успехов.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)