天天看點

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 ,都已經正确恢複,重起系統,所有恢複完畢

本文轉自 sharkyan 51CTO部落格,原文連結:http://blog.51cto.com/sharkyan/771966,如需轉載請自行聯系原作者

繼續閱讀