mv根下目錄的恢復

mv根下目錄的恢復

轉自網友在羣裏的共享,不記得哪位兄弟了。抱歉。

原文如下


一次錯誤mv /* /path/to 操作的恢復


描述:執行mv命令的時候沒有注意路徑,結果把根目錄下的大部分目錄都挪到了一個新路徑中,然後立即

出錯命令不能繼續,因爲 /lib已經被挪走了,/lib下保存有最基本的系統運行庫,現代的linux系統大多

數命令已經動態連接了,當/lib路徑改變的時候,那你能用來創建目錄,或用來copy文件的任何命令,都

不好用了,都會報下面錯誤:

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

這表示已經找不到ld-linux.so.2這個文件了



由於文件都已經被挪走了,我們平時依賴的工具都不好用了。即使你敲入絕對路徑,也會提示:

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory這個錯誤

嘗試了下面的命令

/www/users/abcdefg.net/{ls,ln,mkdir,mktemp,ftp,rsync,mv,cp,rm,ldconfig,scp,sftp,perl,ash,zsh,csh} 報的都是上面的錯誤,

常規的創建文件,創建目錄和目錄文件轉移操作,及遠程或本地複製文件操作都無法進行了。

再嘗試找下好用的命令:

cd export declare echo > 這些內置命令都是好用的。


我們看下現場,由於ls已經不好用了。那隻好用bash的自動補齊功能(TAB鍵)來看看有哪些目錄和文件

首先檢查哪些目錄被挪走了,執行下面命令:

/www/users/abcdefg.net [按TAB] 

輸出如下:

backup  bin  boot  dev  ecshop etc  home  lib  lost+found  media  misc  mnt  opt  proc www_logs ucenter

可以看出 bin和lib都已經被挪過來了,那我們既不能直接執行bin下的程序,也不能執行任何依賴/lib下的程序,而且etc也被mv到這裏來

所以我們連修改ld.so.conf並生成新的ld.so.cache的機會也沒有,因爲我們無法執行創建/etc目錄的命令。



開始恢復吧

過程不復雜,我們還有ld-linux.so.2 可用,雖然它已經變了位置。

ld-linux.so.2是linux系統的動態連接器,我們可以用他來執行命令,我們使用它的--library-path參數來重新指定LD_LIBRARY_PATH的位置


再看看根目錄還有啥

/www/users/abcdefg.net/lib/ld-linux.so.2 --library-path /www/users/abcdefg.net/lib /www/users/abcdefg.net/bin/ls / -F

輸出正常,


恢復/lib

/www/users/abcdefg.net/lib/ld-linux.so.2 --library-path /www/users/abcdefg.net/lib /www/users/abcdefg.net/bin/cp -rfp /www/users/abcdefg.net/lib /lib


恢復/bin

/www/users/abcdefg.net/lib/ld-linux.so.2 --library-path /www/users/abcdefg.net/lib /www/users/abcdefg.net/bin/cp -rfp /www/users/abcdefg.net/bin /bin


恢復其他目錄

cd /www/users/abcdefg.net

for i in bin boot etc lib media misc mnt opt ; do rsync -av --progress ./$i/ /$i/; done


然後我們再還原dev目錄

cd dev

cp -dRp * /dev


重新檢查ssh登陸,此時已經能登陸系統了,仔細檢查/boot /etc ,都已經正確恢復,重起系統,所有恢復完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章