-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
使用 Live CD 是最安全的,但您可以这样做:
/usr
执行此操作时内容不会更改。/etc/fstab
以便/usr
在下次重新启动时安装有关每个步骤的详细信息,请参见下文。
请注意,您不能在运行时挂载新分区,因为其中将打开
/usr
很多文件。/usr
复制文件
我会用
cp -a
.-a
是存档选项。从手册页:编辑 /etc/fstab
您需要知道新分区的 UUID。您可以通过以下方式查看映射:
或者
然后将此行添加到
/etc/fstab
:将 UUID 更改为您的 UUID,并更改
ext4
为您正在使用的文件系统类型 - 如果您设置了分区,您应该知道这一点。删除旧文件
/usr
重启后,根分区上的旧文件将被挂载在/usr
. 但是我们可以使用一些挂载绑定技巧来获取旧文件,然后删除它们。但是一些轻微的错误输入(比如,当你只输入时按 Enter 键
sudo rm -rf /mnt
)可能会导致灾难,所以我只会在你对自己正在做的事情非常有信心,真的无法处理任何停机时间,或者没有对机器的物理访问,因此无法从 live CD 或 live USB 记忆棒启动。由于使用的大多数库都在 /usr 中,因此我不建议在运行 Ubuntu 时移动此目录。事实上,当您尝试执行此操作时,您可能会收到错误消息。因此,最好使用 LiveCD。
您可以使用多种可能性来移动/复制文件 cp、rsync 等,以确保创建任何符号链接而不仅仅是复制。cp 和 rsync 都有这方面的选项。
将文件移动到另一个分区后,您需要在 /etc/fstab 中添加另一个挂载以将新分区挂载到 /usr。
这就是我的做法(按照哈米什的回答和评论):
将所有文件复制到新创建的分区(替换为您的分区的位置,它应该类似于我的):
编辑
/etc/fstab
(与 Hamish 的回答相同,当然,替换xxxxxx
为您的 UUID)重新启动系统
重新启动后,打开系统监视器或类似应用程序以查看您的新
/usr
分区是否已挂载,并安全检查一切是否按计划进行。检查一切正常后,您可以删除旧
/usr
分区。我会保留我的,以防万一出现问题。