一次錯誤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 ,都已經正確恢復,重起系統,所有恢復完畢
轉自 http://blog.51cto.com/sharkyan/771966