如何移动整个 /usr/ 目录

如何移动整个 /usr/ 目录

/usr/想格式化另一个分区。所以,我想将它移到我的根分区上。我尝试跑步

rsync -avzr /usr/ /usr1/

然后我尝试了例如是否/usr1/usr/bin/mv可行,结果很好。所以我做了 umount -l /usr

目的是更换旧的 usr 驱动器。但是,出了问题,当我尝试/usr1/usr/bin/mv再次执行时,我发现bash: /usr1/usr/bin/mv: No such file or directory这很奇怪,因为它确实存在并且是可执行的。我做错了什么吗?有更好的方法来执行此操作吗?

答案1

/usr如果可以的话重新安装。如果不能,您将需要从救援环境启动。

我认为您没有运行您所描述的命令。我认为您更有可能错过了源中的尾部斜杠,如下所示

rsync -avzr /usr /usr1/    # DO NOT RUN THIS

这将/usr作为目录名称复制到 中/usr1,因此/usr/bin/mv将作为/usr1/usr/bin/mv.您需要通过消除干预来解决此问题/usr

您可以按照以下步骤执行此操作。如果在任何时候您得到的内容与我所描述的不同,请立即停止并报告(在您的问题中)您做了什么以及返回了哪些消息。

cd /usr1      # No output
ls            # You should see only 'usr' and 'lost+found'
mv usr/* .    # Notice the important trailing dot. No output
rmdir usr     # No output
cd /

现在尝试卸载并重新安装

umount /usr
mount --bind /usr1 /usr

如果这有效,您可以更新/etc/fstab/usr从持有旧的设备安装/usr1,而不是从持有旧的设备安装/usr,然后在方便的时候重新启动系统。

答案2

在现代 Linux 系统上,大多数可执行文件都使用共享库。查看与命令一起使用的

ldd /usr/bin/mv

特别重要的是动态加载器,例如/lib64/ld-linux-x86-64.so.2.该路径是硬编码在可执行文件中的,您必须确保加载程序在该路径下可用。

对于其他库,您可以使用LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr1/lib64

如果您的动态加载器不可用,则可以将 GLIBC 加载器作为可执行文件调用,其他加载器可能支持也可能不支持。

所以你可以用它来调用可执行文件:

LD_LIBRARY_PATH=/usr1/lib64 /usr1/lib64/ld-linux-x86-64.so.2 /usr1/usr/bin/mv

您可能需要调整系统的路径。

答案3

这种咀嚼是你应该做的仅有的从救援环境执行操作,例如从 USB 记忆棒启动安装并使用其工具。至少 Fedora 安装介质可以这样使用,如果您的发行版不能,它们可能会提供某种救援映像。

诊断和解决你造成的混乱也是如此。

相关内容