Як перемістити Linux на інший розділ?


9

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

Наразі відомі гарантії:

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

Але все-таки не втрачаю час лише тому, що cpio пропустив якийсь прапор і покалічив дозволи / тип вузла / софт або жорстке посилання.

Який інструмент використовувати / які підводні скелі уникати?



@warren, спасибі збираюся зробити ще один тест на cpio-vs-tar;)
kagali-san

не хвилюйтесь: сподіваюся, що це допомагає :)
warren

Відповіді:


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

Немає додаткової магії для посилань і немає необхідності жити cd (один користувач / init 1 буде добре).


Ага, так. Я rsyncвесь час користувався і пропускав очевидне. Мені подобається ddз моїх причин, але rsyncце найкраще підходить для потреб ОП.
Клокс

3

Більш оптимальним варіантом використання ddє partimageкопіювання лише використовуваного розділу розділу, що робить копіювання великих невикористаних розділів більш доцільним.

Зверніть увагу на важливий застереження:

Partimage НЕ підтримує Ext4, що є типовим для нових установок Ubuntu.

Зручна копія міститься в дистрибутиві System Rescue CD .


2

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

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


Система, про яку я говорю, має близько 50 гігів безкоштовно на 500-футовому XFS-розділі (який неможливо зменшити, в даний час підтримується тільки зростаючий вміст xfs_grow), і кореневий розділ також XFS; ще гірше, що це добре зарекомендував себе Gentoo, який майже сам по собі такий жир. Ще гірше, що переміщення потрібно зробити без додавання більшої кількості пам’яті, і в даний час не можна створити резервну копію більше 60 гігів - тому жодних операцій з розділенням. Потрібно поставити Win 'у цю машину для тестування деяких речей.
kagali-san

також, dd приємно, але для операцій з диском / розділом я, як правило, використовую більше .. фірмові рішення. Здається, Acronis TrueImage працює краще (стиснення, діли samba - від flashcd / liveusb flash).
kagali-san
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.