it-swarm.cn

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

我的/usr文件夹需要移至新分区。如何在不删除内容的情况下执行此操作?

可以在Ubuntu运行时完成此操作,还是需要使用LiveCD?

24
Nathan Osman

使用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 bindrickery 来获取旧文件,然后将其删除。

$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt

但是有些轻微的错误(例如,当您只键入Sudo rm -rf /mnt时,按Enter键)可能会导致灾难,因此,只有在您对自己的工作非常有信心,真的无法处理任何停机时间或已经无法物理访问计算机,因此无法启动实时CD或实时USB记忆棒。

25
Hamish Downer

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

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

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

7
txwikinger

注意:我不知道我在做什么,我只是在复制命令并按照其他人的建议去做。这可能是不正确的方法,但它对我有效(至少目前如此)。

这就是我的做法(遵循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. 事实证明,这不是很明智的步骤:我将当​​前已安装的/usr分区的名称更改为/usrBACKUP,以使我知道,当我重新引导系统时,实际上它会重新引导到新创建的分区,而不是旧分区。之后,屏幕上的所有内容都会出现故障,我必须通过长按电源键(我是天才)来关闭电源。如果您不想使系统故障,请跳过此步骤。

  5. 重新启动系统

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

  7. 在检查一切正常之后,您可以删除旧的/usr分区。我会留我的,以防万一出问题了。

1
Aleksandar Stefanović