Моя папка /usr
должна быть перенесена в новый раздел. Как это сделать без стирания содержимого?
Можно ли это сделать, когда Ubuntu запущен, или мне нужно использовать LiveCD для этого?
Было бы безопаснее использовать Live CD, но вы могли бы сделать:
/usr
не изменяется во время вы делаете это. /etc/fstab
, чтобы /usr
был установлен при следующей перезагрузке Подробнее о каждом шаге см. ниже.
Обратите внимание, что вы не можете монтировать новый раздел на /usr
во время работы, так как в /usr
будет открыто много файлов.
Я бы использовал cp -a
. -a
- опция архива. На странице man :
-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
. Но мы можем использовать некоторые mount bind trickery , чтобы перейти к старым файлам, а затем удалить их.
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr
$ sudo umount /mnt
Но некоторые незначительные ошибки (например, нажатие Enter, когда вы только напечатано sudo rm -rf /mnt
) может привести к катастрофе, поэтому я бы использовал этот метод только в том случае, если вы были очень уверены в том, что делали, действительно не могли справиться с простоями или не имели физического доступа к машине и, следовательно, не смогли загрузить с живого компакт-диска или USB-накопителя.
Внимание: я понятия не имею, что я делаю, я просто копирую команды и делаю, как это предлагают другие. Это может быть неправильный способ сделать это, но он работает для меня (на данный момент, по крайней мере).
Вот как я это сделал (следуя ответам Хэмиша и комментариям):
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
. Я буду держать меня на всякий случай, если что-то пойдет не так. Поскольку большинство библиотек, которые используются, находятся в / usr, я бы не рекомендовал перемещать этот каталог во время работы Ubuntu. Фактически, вы, вероятно, получаете сообщения об ошибках, когда пытаетесь это сделать. Следовательно, лучше всего использовать LiveCD.
Вы можете использовать несколько возможностей для перемещения / копирования файлов cp, rsync и т. Д., Чтобы убедиться, что любые символические ссылки созданы, а не просто скопированы. cp и rsync имеют опции для этого.
После перемещения файлов на другой раздел вам нужно добавить еще одно монтирование в / etc / fstab для монтирования нового раздела в /usr.