Как переместить Linux в другой раздел?


9

Мне нужно сделать копию работающей системы Linux, которая (содержится в /, а новое место подготовлено в / mnt / sdb5), по-видимому, содержит значительное количество жестких, программных ссылок и специальных файлов в / dev; будет cpioобрабатывать эту работу без применения дополнительной магии?

В настоящее время известны гарантии:

  • не собирается удалять / изменять работающую систему до тех пор, пока копия не будет считаться загрузочной и с которой она будет работать root=/dev/sdb5; перед удалением сделайте полную резервную копию раздела.
  • будет использовать cpio для архивирования каждого корневого каталога в отдельности, поэтому распакует его из среды LiveCD, чтобы донорский раздел не пострадал

Но, тем не менее, мы не собираемся терять время только потому, что cpio пропустил какой-то флаг и нанёс вред полномочиям / типу узла / soft или hardlink.

Какой инструмент использовать / каких подводных камней избегать?



@ Warren, спасибо. собираюсь сделать еще один тест cpio-vs-tar сейчас;)
kagali-san

не беспокойтесь: надеюсь, это поможет :)
Уоррен

Ответы:


10

Чтобы ответить на актуальный вопрос относительно cpio: это флаги, которые я бы использовал для cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Конечно, поскольку вы не копируете по сети, я бы просто использовал cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

И если вы хотите иметь возможность выполнять копирование несколько раз, rsyncэто лучший выбор для его возобновления возможностей. (Он также cpобрабатывает списки ACL и расширенные атрибуты и может по желанию работать по сети, например cpio. Так что это наиболее полезная опция, за исключением локальной копии, которую я предпочитаю использовать cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Не забудьте скопировать /bootи /dev!

/bootэто просто, просто скопируйте его. Но /devсейчас гораздо сложнее, так как он скрыт udev. Я рекомендую следующую процедуру:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Скопируйте /devс /mnt/sdb5помощью одной из вышеуказанных команд
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev

6

Как упомянул @Klox, при копировании разделов одинакового размера я согласен на использование dd.

Но когда вы хотите скопировать диск на другой раздел с другим размером, я бы предпочел пойти rsync. Смонтируйте новый раздел (скажем, / mnt / new) и:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Нет дополнительной магии для символических ссылок и нет необходимости в живом компакт-диске (для одного пользователя / init 1 все будет в порядке).


Ааа да Я использую rsyncвсе время и пропустил очевидное. Мне нравится ddпо причинам, которые я изложил, но rsyncлучше подходит для нужд ОП.
Klox

3

Более оптимальный вариант ddиспользования partimage, он будет копировать только используемый раздел раздела, что делает копирование больших неиспользуемых разделов более целесообразным.

Обратите внимание на важное предостережение:

Partimage НЕ поддерживает Ext4, который используется по умолчанию в новых установках Ubuntu.

Удобная копия включена в дистрибутив System Rescue CD .


2

При перемещении установок Linux между жесткими дисками я всегда загружаюсь с Live CD и использую ddдля копирования весь раздел. Я признаю, что это не касается изменений размера диска (неизбежно, что новый диск больше, что упрощает вещи), но мне нравится техника именно по тем причинам, по которым вы беспокоитесь об использовании cpio: что-то может пойти не так. Используя ddтехнику, все или ничего: либо новый диск загружается и все то же самое, либо диск не загружается. Там нет риска скрыться проблемы всплывают позже.

Теперь, конечно, есть проблема с разделом, который не заполняет новый диск, но я бы предпочел просто создать новый раздел, чтобы заполнить дополнительное пространство и полагаться на символические ссылки для перемещения каталогов. (Я уверен, что есть инструменты для изменения размера разделов, но я не использовал их.)


Система, о которой я говорю, имеет всего около 50 гигабайт бесплатно на разделе XFS объемом 500 ГБ (который не может быть сжат, в настоящее время поддерживается только увеличение через xfs_grow), а корневой раздел тоже XFS; что еще хуже, это хорошо зарекомендовавший себя Gentoo, который сам по себе почти такой жирный. Что еще хуже, перемещение должно быть сделано без добавления дополнительного хранилища и в настоящее время не может создавать резервные копии более чем на 60 гигабайт - так что никаких операций с разделами. Нужно поставить Win 'на эту машину для тестирования некоторых вещей.
Кагали-сан

Кроме того, dd это хорошо, но для операций с дисками / разделами я склонен использовать больше .. проприетарных решений. Acronis TrueImage, кажется, работает лучше (сжатие, общие ресурсы samba - из livecd / liveusb flash).
Кагали-сан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.