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,如需轉載請自行聯系原作者