我的/usr
文件夹需要移到新分区。如何在不删除内容的情况下执行此操作?
可以在Ubuntu运行时完成此操作,还是需要为此使用LiveCD?
我的/usr
文件夹需要移到新分区。如何在不删除内容的情况下执行此操作?
可以在Ubuntu运行时完成此操作,还是需要为此使用LiveCD?
Answers:
使用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
您需要知道新分区的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
但是有些轻微的错误(例如,当您只键入时,按Enter键sudo rm -rf /mnt
)可能会造成灾难,因此,只有在您对自己的工作非常有信心,真的无法应对任何停机时间或没有停机的情况下,我才会使用此方法对计算机的物理访问,因此无法从活动CD或活动USB闪存盘引导。
rsync
替代的答案,而不是使用?
rsync -avz
。Rsync允许您重新启动副本,通常应在分区,块设备或计算机之间移动时使用。
cp
。它不保留硬链接。这将在将来中断软件包升级。例如/usr/bin/s2p
和/usr/bin/psed
是相同的文件。与一起移动cp
将创建该文件的2个独立版本。做吧rsync -aH
。
rsync -avH a/ b
与在第一种情况下rsync -avH a b
复制文件夹的内容a
(即a/*
)和文件夹本身不同在第二。确保在此处使用斜杠。
由于大多数使用的库都在/ usr中,因此我不建议在运行Ubuntu时移动该目录。实际上,尝试执行此操作时可能会收到错误消息。因此,最好是使用LiveCD。
您可以使用多种可能性来移动/复制cp,rsync等文件。您要确保创建了所有符号链接,而不仅仅是复制了符号链接。cp和rsync都有此选项。
将文件移动到另一个分区后,您需要在/ etc / fstab中添加另一个安装,以将新分区安装到/ usr。
注意:我不知道我在做什么,我只是在复制命令并按照其他人的建议去做。这可能是不正确的方法,但它对我有效(至少目前如此)。
这就是我的做法(遵循Hamish的回答和评论):
将所有文件复制到新创建的分区(替换为分区的位置,它看起来应与我的相似):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
至此,我意识到它已将所有内容复制到/usr
分区上的文件夹中,这将不起作用,因此我(使用文件管理器)将所有内容从该文件夹复制到了分区的根目录,并删除了该空白文件夹之后。
编辑/etc/fstab
(与Hamish的答案相同,当然要替换为您的UUID)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
事实证明这不是很明智的步骤:我将当前已安装的/usr
分区的名称更改为/usrBACKUP
,以使我知道,当我重新引导系统时,实际上它会重新引导到新创建的分区,而不是旧分区。 。之后,屏幕上的所有内容都会出现故障,并且我必须通过长按电源键(就像我一样的天才)来关闭电源。如果您不想让系统故障,请跳过此步骤。
重新启动系统
重新引导后,打开系统监视器或类似的应用程序以查看是否/usr
已安装新分区,并进行安全检查所有内容是否按计划进行。
在检查一切正常之后,您可以删除旧/usr
分区。我会留我的,以防万一出问题了。
sudo mount -a
让它继续运行吗?
rsync
比cp