1. 程式人生 > >Openwrt一條命令把整個路由器搞蹦了

Openwrt一條命令把整個路由器搞蹦了

對於rm -rf這條命令以前吃過一次虧了,這次又沒有長記性。。。

以前本來想刪除某個目錄下所有的c檔案刪掉,但是cd到該目錄時少進了一級目錄,結果啊把其他人忙活裡幾天的程式碼全搞沒了。。。

我只想說一下:當某種破壞已經造成,並且破壞沒有繼續,而你又一時不知所措時,最好的辦法就是保持冷靜,保護現場,在你沒有確保任何有效的解決方法之前,不要亂試臨時想起的方法,否則後果可能更嚴重,原本可能解決的路徑都有可能因為繼續的誤操作而被堵死。。。。。。

我之前的一次誤刪除之後,就下意識的又把該資料夾又壓縮裡一份,而後來上網查如何恢復資料時,別人說這種情況下最好不要再往磁碟寫資料,因為刪除之後檔案資料還在磁碟上記錄著,而寫磁碟就有可能真的把被刪掉檔案的資料覆蓋掉,這樣就不肯能找回來了。而自己偏偏手賤,壓縮裡一份。。。

而這次是想刪除一個目錄下的bin資料夾,本來是rm -rf ./bin,手賤輸入了rm -rf /bin,結果呢整個/bin目錄都沒了,之後就是你所有的常用命令都一命唔呼了,什麼ls,cp,mount命令都沒有了,其實這些都不重要,無非恢復出廠設定就ok了,重要的是我在裡面添加里許多設定和自己的程式,找不會來就苦逼了。。。。。。

後來又是手賤,想想重啟一下怎麼樣,結果再也起不來了。。。(這裡說的起來是指用ssh [email protected]登入路由器)因為/bin沒有裡 ash也就沒有了。許多服務自然也沒有了。沒辦法了,只能把路由器拆掉,接上串列埠看能不能通過console挽回。費了半天勁才拆開接上裡串列埠。啟動之後有點失望,被來想通過uboot搞一下累,可是他妹的uboot是自動引導裡,根本沒有給你控制console的機會!而是直接引導核心了!

真是有點失望了,後來繼續往下看,才找到了點希望:

原來openwrt提供裡一種保護機制,叫做 failsafe模式,這種模式只掛載squash檔案系統,它是隻讀檔案系統,在系統提示按【f】的地方立馬按 f 鍵然後回車就進入了failsafe模式,終於進入了系統,有點裡希望。但是後面又陷入裡自相矛盾的困境:

在這種模式下,系統是沒有掛載jffs2檔案系統(/overlay),也就讀不到裡面的檔案(空的資料夾),雖然有cp等命令。為了恢復資料只能執行mount_root命令掛載jffs2檔案系統,此時可以訪問到/overlay下面的檔案,也就是我們使用者自己寫的檔案,但是此時沒有任何可以操作檔案的命令可以使用,都是找不到命令,搞了半天真是醉了,後來想裡半天才找到一種解決辦法:

1.進入failsafe模式:cp -r /bin /tmp (雖然squash是隻讀檔案系統,但是/tmp下面掛載的是另外一個檔案系統tmpfs,它是可以寫的)

2.mount_root:掛載jffs2檔案系統(此時原來的/bin目錄已經沒有了)

3.進入/tmp目錄:cd /tmp

此時下面有了bin!此時可以執行cp命令了!接下來可以做兩個操作來挽回:

(1)rm -rf /overlay/upper/bin(大哥,這個命令不要再用錯了!),此時問題已經解決,重新上電路由器原來的/bin目錄又恢復了!

(2)cp -r /overlay ./ (將使用者資料儲存到/tmp資料夾)或者 "scp -r 主機目錄 /overlay",完全將資料儲存在主機上。

thank godness!可以睡個安穩覺了!

相關推薦

Openwrt命令整個路由器

對於rm -rf這條命令以前吃過一次虧了,這次又沒有長記性。。。 以前本來想刪除某個目錄下所有的c檔案刪掉,但是cd到該目錄時少進了一級目錄,結果啊把其他人忙活裡幾天的程式碼全搞沒了。。。 我只想說一下:當某種破壞已經造成,並且破壞沒有繼續,而你又一時不知所措時,最好的辦法

n2n內網穿透神器(命令實現穿透)(linux,安卓,win,openwrt全介紹)

n2n簡介: 百度百科:N2N,內衣服飾品牌於上世紀九十年代在美國誕生,經歷逾二十幾年的不斷拓展,現發展成為龐大的跨國內衣服飾品牌,其連鎖專賣店網路遍佈全球100多個國家大、中城市,數目逾萬間,無論品

命令停止所有lxc容器,刪除所有lxc容器

gre troy 停止 des def code done awk don for i in $(virsh -c lxc:/// list | grep -v ‘Id‘ | awk ‘{print $2}‘);do virsh -c lxc:/// destroy $

命令解決mac版本python IDLE無法輸入中文問題

install 兩種 size tps 命令 輸入 homebrew NPU python3 安裝完Python通常自動就有了一個簡易的集成環境IDLE,但在mac上,無法在IDLE中使用中文。 通常故障有兩種情況: 在IDLE中,中文輸入法根本無法工作,不會彈出輸入框

命令深度清理你的mac

use DG 17. rep vid ash 通過 app pan 一條命令深度清理你的mac mac 用了一段時間後很快發現硬盤空間不夠了,就想找一些磁盤清理的工具,但是發現居然都是收費的. 就手工操作吧.方法其實非常簡單. 就一條命令, cd / du -hd 5 |

Linux如何讓命令快速修改用戶密碼?

div pre span display str echo one pan class 問題:修改密碼的命令為passwd,需要按Enter兩次,如何一條命令快速修改密碼呢? #實現命令: #echo 密碼 | passwd echo 密碼 | passwd --st

Mac上命令搭建web伺服器

實際測試工作中偶爾會需要搭建Web伺服器環境,由於Mac OS X自帶了Apache和PHP環境,只需要簡單的啟動就可以。 開啟Apache 開啟Web伺服器的方法有兩種(預設啟動埠號是80): 開啟:系統偏好配置 ——> 共享 ——>Web共享 終端可以通過Apache啟動命令開

有個程式猿很憂桑:一個命令rm -rf/ ,他整個公司刪沒

話說最近有個程式猿很憂桑....... 因為弄錯了一行程式碼這哥們不小心把他整個公司刪沒了沒了了

一個命令rm -rf/ ,他整個公司刪沒

話說 最近有個程式猿很憂桑 …… 因為弄錯了一行程式碼 這哥們不小心把他整個公司 刪沒了   好吧.. 事情是這樣的…. 最近有個哥們在個技術論壇上求助… 我在伺服器維護的時候不小心執行了 rm -rf 命令……  現在整臺伺服器被我刪光了 腫麼辦???? 好吧.. 現在先來介紹一下 rm 是

linux下安裝jdk 詳細步驟(命令即可安裝)

作為Java開發人員,在Linux下安裝一些開發工具是必備技能,本文以安裝jdk為例,詳細記錄了每一步的操作命令,以供參考。 第一種方法 只需要一條命令就可以安裝jdk: yum install java-1.8.0-openjdk* -y執行了這條命令不需要配

【轉】sqlplus中不能上下鍵選擇前命令解決方法

安裝一個叫rlwrap的工具: 已經上傳到本文附件:字尾為.rar,主要是51cto不支援.tar.gz字尾,實際上是一個tar.gz壓縮包 tar -zxvf rlwrap-0.30.tar.gz cd rlwrap-0.30 ./configure make

linux中命令修改使用者名稱的密碼

先要通過useradd新增使用者 useradd -d /opt/reconciliation -s /sbin/nologin -G root ftpUser 如果是普通的passwd,需要輸入兩次密碼: [[email protected] vsftpd]#

Linux 命令殺死佔用埠的所有程序

Linux網路程式設計的實驗中遇到了開啟server後用CTRL+C退出但是埠仍被server佔用的情況,首先可以用lsof檢視佔用埠的程序號 lsof -i:埠號 然後kill掉佔用程序,就可以再次啟動server了 kill -9 程序號 當然上述還

我是如何通過新增命令學習redis原始碼的

準備工作 這篇文章不會告訴你啥是redis,如果不瞭解請自行搜尋學習。 我的操作環境是cent OS 6.5系統,vim編輯器。 我打算下載一個比較穩定的redis原始碼包進行修改測試。 $ wget http://download.redis.io

迴圈執行Linux命令列下得某命令

因為程式需要做很多得實驗,要不停得執行某條命令很多次,每次手動執行特別費時費力,通過命令列下得一條命令就可以完成啦::$ for((a=1;a<100;a++)); do ./gmplayer hst_2.mpg -quality 8 -vo png -ss 00:00

命令用Raspberry Pi建立WiFi熱點 帶Web管理介面

1,確保你RasPi的系統已正確安裝。 2,確保RasPi的WiFi可以正常使用。 3,執行以下命令 wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap 4,按照提示進行安裝(

Shell中用命令根據服務名來殺程序

 無論是Shell指令碼處理或日常操作中,讓我們根據服務名來殺程序,我們一般通用的做法 1. 先用ps -ef 或 ps aux來根據服務名來找到pid號 2. 然後使用kill -9 PID來殺程序 這樣的殺個程序要兩個步驟,耗時很大,而且有的程序號不只1個,有的時候

系統無ifconfig,命令獲取本機ip並將其賦值給指定變數來使用

在Linux系統中,準確地獲取本機IP資訊是非常有用的。在寫bash shell指令碼事經常會用到IP,這時就需要我們使用一些辦法獲取本機IP並賦值給變數來使用。最近剛剛完成grep及sed的摸索、研究,本著學以致用的原則,用一條命令獲取本機IP並將其賦值給某個

命令找出存在 swp/swo 恢復檔案的檔案原名

有時候vim由於突然宕機等原因,會留下一堆 swp/swo檔案, 這時候如果一個命令就能獲得所有swp檔案對應的原檔名,是很有用的! 方法應該是很多的,這裡給個例子,拋磚引玉。 bbb=`ls .*sw* | sed -e "s,\.\(.*\)\.swp,\1,"`

vim命令-撤銷,重複上命令,縮排

沒有特殊說明,都是在普通模式下 撤銷:u 重複上一條命令:.  縮排: 插入模式下,ctrl+shift+d 減少縮排,ctrl+shift+t 增加縮排 在Normal Mode下,命令>>將對當前行增加縮排,而命令<<則將對當前行減少縮排