递归还原移动根目录

递归还原移动根目录

我有一台用作服务器的 Ubuntu 桌面。今天早上,我意外地将所有根目录移到了../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

我已通过 ssh 远程连接。现在,我无法再访问。我也无法查看 Webmin。

那么,现在我无法重新启动系统,对吗?我必须物理访问系统控制台并输入此命令:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

正确的?

我的根目录去哪儿了?我该如何找回它?上述命令能起作用吗?

答案1

您还没有移动根目录(您不能),您只是将其中的几乎所有内容移动到了您所在路径的父目录中。

事情变得更加复杂的是,您还移动了位置,mv因此无法按预期工作。如果您仍位于上次启动 mv 时所在的目录中,则下面的操作应该可以工作(只要您在询问此问题后没有重新启动!)。

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

如果您没有任何这些,只需从命令中省略它们。

如果您没有访问权限(在这种状态下您将无法进行全新登录),您将必须从外部挂载文件系统(通过类似 LiveCD 的工具并挂载文件系统,然后将文件移动到正确的位置。Braiam 的回答应该对这部分有所帮助。

答案2

如果您已经重新启动或已注销,则可以使用 liveCD/USB 启动来修复系统。我将省略您了解如何创建 Live 系统并使用 Ubuntu 启动的部分(替代 cd 也有效,只需进入 root shell 即可):

首先你应该将你的系统安装到某个地方,因此:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

我假设/dev/sda1是你的根。如果你已经分开/bin或者/usr你也应该安装它们:

mount /dev/sda2 /mnt/system/usr

现在,你应该到达灾难发生前的目录:

cd /mnt/system/tmp/UPS/up/upsilon

现在,我将直截了当地抄录奥利所下的命令:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

现在验证一切是否正常:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

重新启动系统并以后要更加谨慎。

答案3

我遇到了这个问题,我发现我需要像这样调用 mv 命令:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

希望这对其他人有帮助。

相关内容