Мою /usr
папку потрібно перемістити до нового розділу. Як я можу це зробити, не стираючи вміст?
Чи можна це зробити під час роботи Ubuntu або мені для цього потрібно використовувати LiveCD?
Мою /usr
папку потрібно перемістити до нового розділу. Як я можу це зробити, не стираючи вміст?
Чи можна це зробити під час роботи Ubuntu або мені для цього потрібно використовувати LiveCD?
Відповіді:
Найбезпечніше буде використовувати прямий компакт-диск, але ви можете:
/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
Вам потрібно знати 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-накопичувач.
rsync
натомість?
rsync -avz
. Rsync дозволяє перезапустити копії, і зазвичай їх слід використовувати під час переміщення між розділами, блокувати пристрої або машини.
cp
. Він не зберігає тверді посилання. Це дозволить зламати оновлення пакетів у майбутньому. Наприклад , /usr/bin/s2p
і /usr/bin/psed
той же файл. Перемістившись з cp
, створимо 2 незалежні версії цього файлу. Зробіть rsync -aH
замість цього.
rsync -avH a/ b
інакше rsync -avH a b
, ніж копіювання вмісту папки a
(тобто a/*
) у першому випадку та самої папки у другій. Переконайтесь, що ви використовуєте косу рису тут.
Оскільки більшість використовуваних бібліотек знаходяться в / usr, я б не рекомендував переміщувати цей каталог під час роботи Ubuntu. Насправді ви, ймовірно, отримуєте повідомлення про помилки, намагаючись це зробити. Отже, найкраще використовувати LiveCD.
Ви можете використовувати кілька можливостей для переміщення / копіювання файлів cp, rsync тощо. Ви хочете переконатися, що будь-які посилання створені, а не просто скопійовані. cp і rsync мають варіанти для цього.
Після переміщення файлів на інший розділ вам потрібно додати інше кріплення в / etc / fstab для монтажу нового розділу в / usr.
Увага: я поняття не маю, що я роблю, я просто копіюю команди і роблю так, як запропонували інші. Це може бути неправильний спосіб зробити це, але він працює для мене (наразі, принаймні).
Ось як я це зробив (після відповіді Хаміша та коментарів):
Скопіюйте всі файли новоствореного розділу (замініть місце розташування вашого розділу, він повинен виглядати аналогічно моєму):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
У цей момент я зрозумів, що він скопіював усе в /usr
папку на розділі, яка не працюватиме , тому я скопіював усе (за допомогою менеджера файлів) з цієї папки в корінь розділу, і видалив порожню папка згодом.
Редагувати /etc/fstab
(те саме, що у відповіді Хаміша, звичайно, замініть своїм UUID)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Крок, який виявився не дуже мудрим: я змінив назву поточно змонтованого /usr
розділу на /usrBACKUP
просто так, щоб знати, що при перезавантаженні системи він фактично перезавантажується в новостворений розділ, а не в старий . Після цього все виблиснуло на екрані, і мені довелося вимкнути його, натиснувши клавішу живлення (геніальна, як і я) . Пропустіть цей крок, якщо не хочете виправляти систему.
Перезавантажте систему
Після перезавантаження відкрийте системний монітор або подібну програму, щоб перевірити, чи встановлений ваш новий /usr
розділ, і для безпеки перевірити, чи все йшло, як було заплановано.
Перевіривши, що все в порядку, ви можете видалити старий /usr
розділ. Я збережу своє на випадок, якщо щось піде не так.
sudo mount -a
дозволити продовжувати працювати?
rsync
настільки краще для цього підходить, ніжcp