如何将/ usr移动到新分区?

我的/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 

编辑/ etc / fstab

您需要知道新分区的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绑定技巧来获取旧文件然后删除它们。

 $ sudo mount --bind / /mnt $ sudo rm -rf /mnt/usr $ sudo umount /mnt 

但是一些轻微的错误输入(例如,当你只输入sudo rm -rf /mnt时点击Enter)可能会导致灾难,所以如果你对你正在做的事情非常有信心我真的无法处理任何停机时间,或没有物理访问机器,因此无法启动现场CD或实时USB记忆棒。

由于大多数使用的库都在/ usr中,因此我不建议在运行Ubuntu时移动此目录。 实际上,当您尝试执行此操作时,可能会收到错误消息。 因此,最好是使用LiveCD。

您可以使用多种可能性来移动/复制文件cp,rsync等,以确保创建任何符号链接而不仅仅是复制。 cp和rsync都有这个选项。

将文件移动到另一个分区后,需要在/ etc / fstab中添加另一个挂载,以将新分区挂载到/ usr。

注意:我不知道我在做什么,我只是复制命令并按照其他人的建议进行操作。 这可能是不正确的方法,但它适用于我(至少现在)。

这就是我做的方式(按照Hamish的回答和评论):

  1. 复制新创建的分区的所有文件(替换为分区的位置,它应该与我的类似):

     rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
  2. 此时我已经意识到它将所有内容复制到分区上的/usr文件夹中, 这样就无法工作了 ,所以我将所有内容(使用文件管理器)从该文件夹复制到分区的根目录,并删除了之后那个空文件夹。

  3. 编辑/etc/fstab (与Hamish的答案相同,当然,替换为你的UUID)

     UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2 
  4. 事实certificate这一步不是很明智:我将当前挂载的/usr分区的名称更改为/usrBACKUP ,这样我就知道,当我重启系统时,它实际上会重新启动到新创建的分区,并且不是旧的。 在那之后,一切都在屏幕上闪烁,我不得不通过长按电源键(天才像我一样)来关闭电源。 如果您不想让系统出现故障,请跳过此步骤。

  5. 重新启动系统

  6. 重新启动后,打开系统监视器或类似的应用程序,以查看是否已安装新的/usr分区,并安全检查是否一切按计划进行。

  7. 检查完所有内容后,您可以删除旧的/usr分区。 我会保留我的,以防出现问题。