LINUX.ORG.RU
ФорумAdmin

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

 , ,


3

1

Нужно перенести систему на другой физический диск. Я собрался просто установить на него ту же Ubuntu 22.04, затем перегрузится в лайв режиме и скопировать все файлы со старого диска в новый. Затем поправить UUID в /ect/fstab.

Ничего не упускаю?

★★★★★

Я делаю так: на исходной системе (из лайв-сиди):

  • tar -czf /mnt/full.tgz --numeric-owner --exclude=swapfile .
  • getfacl -R -s -n . > /mnt/file.acl
  • getfattr -R -d -m - . > /mnt/file.attr 2>/dev/null

На целевой системе (тоже из лайв-сиди):

  • tar -xf /mnt/full.tgz --numeric-owner
  • setfacl --restore=/mnt/file.acl
  • setfattr --restore /mnt/file.attr
  • rmdir lost+found
  • mklost+found
  • fallocate -l 4G swapfile
  • chmod 600 swapfile
  • mkswap swapfile

Если инсталлируете на EFI из BIOSa, нужно удостовериться, что на исходной системе инсталлирован grub-efi. Тогда, когда сделаете chroot, grub не будет ругаться. Ну и, конечно, /etc/fstab подправить.

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

Короче не сработало. Просто не грузится. Черный экран. И так как в ноуте третье место по диск оказалось под sata ssd, то не получается воткнуть три диска - переставлять приходится (((

Проект отложен.

Suntechnic ★★★★★
() автор топика

мне очень помогла документация из openwrt.

рекомендую сперва посмотреть какая структура файловой системы, сколько томов и куда подключены.

Начинай с рута /, а лучше если сделать

mkdir /oldroot
mkdir /newroot
mount -o bind / /oldroot
mount /dev/(newdisk) /newroot

это поможет дать доступ к корневому каталогу без остальных каталогов. ну и отсюда /oldroot в /newroot копируешь файлы, мне нравится rsync. но можно cp, tar и другие.

Затем действуешь также по остальным томам. и не забудь обновить /etc/fstab на новые uuid томов.

Nurmukh ★★★
()
Ответ на: комментарий от forest22
getfacl -R -s -n . > /mnt/file.acl
getfattr -R -d -m - . > /mnt/file.attr 2>/dev/null

По-моему, вторая команда включает в себя первую, нет? Но всё равно спасибо, я раньше только одним tar или cp -a ограничивался, думал, он сохраняет все атрибуты.

Проблема в том что ctime сбрасывается.

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

А вы попробуйте из лайв-сиди. У меня никуда не прыгает. Я делаю эту процедуру в двух случаях:

  • перенос системы (как у ТС)
  • бекап консистентного состояния системы. Файлы в /home я исключаю опцией --exclude в tarе. Дот-файлы включаю.
forest22
()
Ответ на: комментарий от Xenius

Вообще, в tarе есть опции --xattrs, --acls, но я их не использую, потому что тар в последний раз с ними ругался, что он не может что-то там «create» в контексте ACL. Возможно, это связано с этим багом - https://savannah.gnu.org/bugs/?61934 . Стал делать как раньше - с getfacl/getfattr.

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

Понадобится еще не раз:

rsync -av --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt

Звезды вроде не нужны. Я эту команжду лет 5 назад записал.

Я что-то запамятывал, что не все файлы нужно копировать, потому как есть куча виртуальных файлов и устройств. Всякие /tmp, /run, /proc даже создавать не надо, их вроде система сама создает, если не существует

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

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