以递归方式还原移动根目录

我有一个用作服务器的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*} 

对?

我的根目录在哪里,我该如何取回? 上面的命令会起作用吗?

你还没有移动根目录(你不能),你刚刚将其中的所有内容移动到你所在路径的父目录中。

更复杂的是,你也移动了mv这样就无法按预期工作了。 以下应该可以工作(只要你没有重新启动,因为问这个!)如果你仍然在你解雇你的最后一个mv的同一目录。

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

如果您没有这些,请从命令中省略它们。

如果你没有访问权限(当事情处于这种状态时你将无法进行新的登录)你将不得不在外部安装文件系统(通过LiveCD之类的东西安装文件系统,然后移动文件)到了正确的地方.Braiam的回答应该有助于这一部分。

如果您已重新启动或已注销,则可以使用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 

现在有了Oli给出的命令,我会将其复制为blatancy:

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

现在validation一切正常:

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

重新启动系统并在将来更加谨慎。

我有这个问题,我发现我需要像这样调用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} / 

希望这有助于其他人。