递归恢复移动根目录

Max*_*xDL 14 data-recovery mv

我有一个用作服务器的 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
Run Code Online (Sandbox Code Playgroud)

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

那么,现在我无法重新启动系统正确吗?我必须物理访问系统控制台并键入以下命令:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}
Run Code Online (Sandbox Code Playgroud)

对?

我的根目录去哪里了,我怎样才能找回它?上面的命令会起作用吗?

Oli*_*Oli 12

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

使事情复杂化的是,您还移动了,mv因此无法按预期工作。如果您仍然在上次启动 mv 时所在的目录中,则以下内容应该可以工作(只要您在询问后没有重新启动!)。

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Run Code Online (Sandbox Code Playgroud)

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

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


Bra*_*iam 10

如果您已经重新启动或注销,您可以在 liveCD/USB 中启动以修复您的系统。我将省略您知道如何创建 Live 系统并使用 Ubuntu 启动的部分(替代 cd 也可以使用,只需放入根 shell):

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

mkdir /mnt/system
mount /dev/sda1 /mnt/system
Run Code Online (Sandbox Code Playgroud)

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

mount /dev/sda2 /mnt/system/usr
Run Code Online (Sandbox Code Playgroud)

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

cd /mnt/system/tmp/UPS/up/upsilon
Run Code Online (Sandbox Code Playgroud)

现在使用 Oli 给出的命令,我将大肆复制:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/
Run Code Online (Sandbox Code Playgroud)

现在验证一切正常:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...
Run Code Online (Sandbox Code Playgroud)

重新启动您的系统,并在未来更加谨慎。