之前就被很多前輩的文章提醒過:在linux下操作檔案,一定要小心誤刪,小心誤覆蓋!我也一向是小心翼翼,rm指令用的時候絕對要看三遍才刪除。不過今天還是掉進坑里了。
本來的操作只是需要在乙個白名單上新增兩個url,並且生成它對應的md5檔案告訴下游檔案有更新了。非常簡單的操作,我看這個目錄下本來也沒有備份檔案,想著這麼簡單的操作就不用備份了。於是修改完了白名單white_list,我直接就用md5sum命令生成md5檔案。這個時候,悲劇發生了!本來正確的指令應該是md5sum white_list > white_list.md5,結果感冒頭暈的我直接寫成了md5sum white_list > white_list。然後
。。。按下enter鍵的一瞬間我整個人就斯巴達了。。。
我馬上cat看了一下檔案,果然被md5值覆蓋了。我又檢視了一下目錄下有沒有隱藏的備份檔案,例如vi的備份檔案等等,也木有。。。
天啦,本來40多萬行的資料就這樣被我誤刪了麼!我本來昏昏沉沉的大腦瞬間清醒了!
接下來我的大腦高速運作,採取了如下操作:
2.我之前是用vim開啟過這個檔案,所以終端上應該還有一些殘留。所以我立刻回滾終端上的輸出,雖然不多,但是好歹拯救了最後幾十行的內容,記作remains吧(最後發現這部分的內容就是關鍵的關鍵啊,裡面還有原有檔案的行數!)
3.檢視其他目錄下的檔案,看看有沒有備份檔案或類似檔案,結果還真讓我發現了乙個檔案,通過比對這個檔案和remain中記錄的原檔案行數,發現他們很類似!只相差5行,後來我又看了一下這個五行應該剛剛好就是這個檔案與remains結尾不同的五行
4.我馬上小心翼翼地把這個檔案拷貝過來,然後按照之後的殘餘檔案內容進行修改,得到了乙個可能的恢復檔案recovery_try
5.不過我將這個recovery_try的md5值與原檔案的md5值比對之後發現不一致。。。****。。。
6.後來又想了一些,會不會是之前新增的兩個url的問題呢?於是我又刪除了recovery_try的最後兩行,生成md5值,這次是與最開始的white_list.md5檔案進行比對,發現是一樣的!這樣就可以確定是恢復成功的啦!!!
最後總算是有驚無險地恢復了,這個白名單如果真的刪除的話,不知道線上會有什麼樣的損失。。。
總結一下今天的這件事情吧:
1.備份是必須的,做任何操作,哪怕是很小的操作之前都應該做好備份。整個專案接手之前最好做乙個整體的備份!
2.遇到問題了不要慌張,冷靜思考可能的解決方法。如果我今天一激動做了一些無效操作的話,之前在終端上殘留的檔案資訊可能也找不回來了。
3.操作一定要小心細緻。。。
4.另外吐個槽:這麼重要的平台工具真的應該早點就上線,讓op去維護了。。。讓我乙個小小的rd實習生做修改真的還是蠻危險的。。。
記一次誤刪 git stash 檔案恢復操作
在使用 git 的時候我們都可能會遇到 誤刪的情況的,筆者就遇到了誤刪 stash 中的 在這裡記錄一下如何找回誤操作的 git stash 的 在進行多分支管理 時,我們經常需要在沒完成功能的開發時就需要緊急切換到master 分支進行 hotfix。而我們後不想將未完成的 進行提交,因此就需要進...
記一次Oracle表資料刪除恢復
因為手抖沒有將開發環境切換到測試環境導致在開發環境新建的表刪除了,這張表包含很多配置資訊,而且沒有備份,特此整理出恢復過程。一 檢視 站中表 select object name,original name,partition name,type ts name,createtime,droptim...
記一次ANR檔案的匯出
adb pull data anr traces.txt測試了華為p7 android 5.1.1 和榮耀v10 android 9 發現都能正常匯出。但是遇到華為mate10 mate10 pro 一直都匯出失敗。adb error failed to stat remote object dat...