Як перейти / usr до нового розділу?


26

Мою /usrпапку потрібно перемістити до нового розділу. Як я можу це зробити, не стираючи вміст?

Чи можна це зробити під час роботи Ubuntu або мені для цього потрібно використовувати LiveCD?

Відповіді:


27

Найбезпечніше буде використовувати прямий компакт-диск, але ви можете:

  • скопіюйте всі файли на новий розділ, переконайтесь, що вміст /usrне змінюється під час цього.
  • відредагуйте /etc/fstabтак, що /usrбуде встановлено при наступному перезавантаженні
  • перезавантажити
  • видалити старі файли

Детальніше про кожен крок див. Нижче.

Зауважте, що ви не можете монтувати новий розділ на /usrчас запуску, оскільки в ньому буде багато файлів, /usrякі будуть відкритими.

Копіювання файлів

Я б користувався cp -a. -a- це параметр архіву. На чоловіковій сторінці :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

Редагування / etc / fstab

Вам потрібно знати UUID вашого нового розділу. Ви можете бачити відображення, виконавши:

$ ls -l /dev/disk/by-uuid/

А потім додайте цей рядок до /etc/fstab:

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

Змініть UUID на ваш UUID та змініть ext4тип файлової системи, який ви використовуєте - ви повинні знати це, якщо ви налаштували розділ.

Видаліть старі файли

Після перезавантаження старі файли в /usrкореневому розділі будуть приховані новим розділом, встановленим на ньому /usr. Але ми можемо скористатися деякою хитрістю прив’язки монтажу, щоб перейти до старих файлів, а потім видалити їх.

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt

Але деякі незначні помилки (скажімо, натискання клавіші Enter, коли ви тільки ввели sudo rm -rf /mnt) можуть спричинити катастрофу, тому я використовував би цей метод лише в тому випадку, якщо ви були дуже впевнені в тому, що робите, насправді не могли впоратися з будь-яким простоєм або не мали фізичний доступ до машини, а отже, не вдалося завантажувати живий компакт-диск або живу USB-накопичувач.


4
rsyncнастільки краще для цього підходить, ніжcp
Марко Чеппі

1
@MarcoCeppi Чи можете ви розширити це? Можливо, дайте варіант відповіді, який використовує rsyncнатомість?
Казарк

6
Замініть команду cp на rsync -avz. Rsync дозволяє перезапустити копії, і зазвичай їх слід використовувати під час переміщення між розділами, блокувати пристрої або машини.
Марко Чеппі

2
НЕ використовуйте cp. Він не зберігає тверді посилання. Це дозволить зламати оновлення пакетів у майбутньому. Наприклад , /usr/bin/s2pі /usr/bin/psedтой же файл. Перемістившись з cp, створимо 2 незалежні версії цього файлу. Зробіть rsync -aHзамість цього.
oᴉɹǝɥɔ

1
Перш за все, пропустіть прапор -z - він дозволяє стиснути, що з огляду на те, що ви не надсилаєте файли по мережі, марний накладні витрати (за винятком того, що rsync, як правило, досить розумний, щоб ігнорувати його, але все-таки може також скинути його) . @ AleksandarStefanović ви, безумовно, хочете, щоб вміст там, а не папка, і причиною цього сталося через деякі химерності rsync: вона трактується rsync -avH a/ bінакше rsync -avH a b, ніж копіювання вмісту папки a(тобто a/*) у першому випадку та самої папки у другій. Переконайтесь, що ви використовуєте косу рису тут.
Дараель

7

Оскільки більшість використовуваних бібліотек знаходяться в / usr, я б не рекомендував переміщувати цей каталог під час роботи Ubuntu. Насправді ви, ймовірно, отримуєте повідомлення про помилки, намагаючись це зробити. Отже, найкраще використовувати LiveCD.

Ви можете використовувати кілька можливостей для переміщення / копіювання файлів cp, rsync тощо. Ви хочете переконатися, що будь-які посилання створені, а не просто скопійовані. cp і rsync мають варіанти для цього.

Після переміщення файлів на інший розділ вам потрібно додати інше кріплення в / etc / fstab для монтажу нового розділу в / usr.


2

Увага: я поняття не маю, що я роблю, я просто копіюю команди і роблю так, як запропонували інші. Це може бути неправильний спосіб зробити це, але він працює для мене (наразі, принаймні).

Ось як я це зробив (після відповіді Хаміша та коментарів):

  1. Скопіюйте всі файли новоствореного розділу (замініть місце розташування вашого розділу, він повинен виглядати аналогічно моєму):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. У цей момент я зрозумів, що він скопіював усе в /usrпапку на розділі, яка не працюватиме , тому я скопіював усе (за допомогою менеджера файлів) з цієї папки в корінь розділу, і видалив порожню папка згодом.

  3. Редагувати /etc/fstab(те саме, що у відповіді Хаміша, звичайно, замініть своїм UUID)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Крок, який виявився не дуже мудрим: я змінив назву поточно змонтованого /usrрозділу на /usrBACKUPпросто так, щоб знати, що при перезавантаженні системи він фактично перезавантажується в новостворений розділ, а не в старий . Після цього все виблиснуло на екрані, і мені довелося вимкнути його, натиснувши клавішу живлення (геніальна, як і я) . Пропустіть цей крок, якщо не хочете виправляти систему.

  5. Перезавантажте систему

  6. Після перезавантаження відкрийте системний монітор або подібну програму, щоб перевірити, чи встановлений ваш новий /usrрозділ, і для безпеки перевірити, чи все йшло, як було заплановано.

  7. Перевіривши, що все в порядку, ви можете видалити старий /usrрозділ. Я збережу своє на випадок, якщо щось піде не так.


Навіщо відповідати на запитання 5 років, якщо воно вже має прийняту відповідь, і ви не знаєте, про що говорите?
смкс

2
@cmks, тому що я відчував, що інші відповіді були неповними - я не отримав повного рішення з однієї відповіді, і жодна з відповідей не мала до них детальної інформації. Я відчував, що користувачі, які прийдуть до цього питання, потребують допомоги. Не має значення, чи не п’ять років, якщо комусь ще потрібна інформація з цього питання.
Олександр Стефанович

1
Чому всі перезавантажують свою систему? Чи не повинен він sudo mount -aдозволити продовжувати працювати?
Хаген фон Ейтцен

@Hagen Я думаю, це просто на користь
Олександр Стефанович
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.