Моя /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