Linux下误移动根目录文件导致系统出现异常的解决方法


广告:

今日在整理VPS上面的文件的时候,手贱,打错命令,把根目录下的文件全部移动到一个目录下去了。
本来要打

mv 14.rar ../

打成

mv 14.rar //*

然后发现,系统出问题了…

我这个半桶水遇到这个问题彻底蒙了,怎么ls、mv、cp这些命令都用不到了….

[root@li400-86 /]# ls
-bash: /bin/ls: No such file or directory
[root@li400-86 /]# mv
-bash: /bin/mv: No such file or directory

于是想用SFTP登陆上去看看目录怎么了,发现SFTP方式无法登陆,于是就想不会是服务器没办法登陆了吧,马上新建一个窗口登陆终端,果然已经没办法登陆了,而我此前已经登陆的账户还保持在线,并且可以继续操作。
于是马上向朋友求救,才知道,这个 【mv 14.rar //*】把我根目录下的所有文件都移动到了/ztmp下了

朋友叫我尝试一下打【./】然后再用TAB键来当ls命令使用,最后确认所有根目录文件都在【/ztmp】下。但是就算通过【/ztmp/bin/ls】这样的命令也是无法使用,会提示

./ztmp/usr/bin/ls
./ztmp/usr/bin/ls: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory



最后这位朋友表示没遇到过这样的问题,所以没办法解决了。
没办法之下找到第二位朋友,根据他说的根目录被移走的情况,上网搜索了一下,找到了:http://sharkyan.blog.51cto.com/536264/771966这篇文章,最后问题才解决。这里就把原文整理一下发到我这里来:
1、由于命令依赖库/lib里面的文件被移动到了/ztmp目录下,所以绝大多数的命令已经无法使用,但是bash原生的那些命令依然可用:
cd、export、declare、echo、pwd

2、由于运行命令的依赖库已经不在指定的目录了,所以需要运行bash以外的命令,就需要指定依赖库文件,现在我的依赖库在【/ztmp/lib】,ls命令在【/ztmp/bin/ls】可以采取:

/ztmp/lib/ld-linux.so.2 --library-path /ztmp/lib /ztmp/bin/ls / -F

这样的方式来指定依赖库并运行ls命令,发现可以正常使用后,经过朋友确认该目录下的文件都可以复制到根目录下后,朋友让我使用下面的命令,将/ztmp下面的目录以保留权限的方式复制到根目录去:

/ztmp/lib/ld-linux.so.2 --library-path /ztmp/lib /ztmp/bin/cp -rfp /ztmp/* /

经过漫长的等待后,所有的文件都归位了,所有命令都可以正常使用了,并且也在此确认了一次终端可以正常登陆了,自此,这个问题算是修复完毕了。

事后经过网上搜索后发现,出现这个问题后,终端必须不能断开,否则就没有办法再连接回来了

发表评论

电子邮件地址不会被公开。