Ham*_*ner 30
使用 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
Run Code Online (Sandbox Code Playgroud)
您需要知道新分区的 UUID。您可以通过执行以下操作来查看映射:
$ ls -l /dev/disk/by-uuid/
Run Code Online (Sandbox Code Playgroud)
然后将此行添加到/etc/fstab:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Run Code Online (Sandbox Code Playgroud)
将 UUID 更改为您的 UUID,并更改ext4为您正在使用的文件系统类型 - 如果您已经设置了分区,您应该知道这一点。
重新启动后,/usr根分区中的旧文件将被挂载在/usr. 但是我们可以使用一些挂载绑定技巧来获取旧文件,然后删除它们。
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)
但是一些轻微的输入错误(例如,在您只输入时按 Enter 键sudo rm -rf /mnt)可能会导致灾难,所以我只会在您对自己正在做的事情非常有信心,真的无法处理任何停机时间或没有对机器的物理访问,因此无法从 Live CD 或 Live USB 记忆棒启动。
由于大多数使用的库都在 /usr 中,因此我不建议在运行 Ubuntu 时移动此目录。事实上,当您尝试执行此操作时,您可能会收到错误消息。因此,最好是使用 LiveCD。
您可以使用多种可能性来移动/复制文件 cp、rsync 等,以确保创建任何符号链接而不仅仅是复制。cp 和 rsync 都有这个选项。
将文件移动到另一个分区后,您需要在 /etc/fstab 中添加另一个挂载以将新分区挂载到 /usr。