以递归方式还原移动根目录
我有一个用作服务器的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} /
希望这有助于其他人。