Моя /usr
папка должна быть перемещена в новый раздел. Как я могу сделать это, не стирая содержимое?
Это можно сделать во время работы Ubuntu, или мне нужно использовать LiveCD для этого?
Моя /usr
папка должна быть перемещена в новый раздел. Как я могу сделать это, не стирая содержимое?
Это можно сделать во время работы Ubuntu, или мне нужно использовать LiveCD для этого?
Ответы:
Было бы безопаснее использовать Live CD, но вы могли бы сделать:
/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