1、引言運維
曾經在運維hadoop集羣的時候,出過這麼一回事:當時集羣由於須要維修機器因此進行停機維護,可是當啓動集羣的時候發現集羣怎麼也起不了,在沒有問別的同事的狀況下,本身百度了一下問題,發現format操做能解決問題,當時的我對於format是隻知其一;不知其二,後來執行format之後集羣是起來了,可是數據沒有了。追悔莫及已經沒有用了,只能對本身說吃一見長一智;這明顯就是誤操做致使數據被刪。今天就來聊一下怎麼能防止誤刪文件!工具
2、防止誤刪數據技巧:oop
一、修改或刪除數據前請務必備份,最好有異機備份,修改配置等先提交版本管理系統在發佈到線上環境。spa
二、可使用mv命令替代rm命令,無用的文件不要着急刪除,而是移動到回收站/tmp裏面觀察一段時間;能夠經過設置別名等手段屏蔽rm。code
例如:orm
alias rm='mv -f --target-directory=/tmp/.trash/'
三、若是非要刪除數據,還可用find結合rm替代單純的rm,包括設定定時任務等動做執行清理。blog
四、若是非要使用rm刪除,請儘可能先切換目錄在刪目錄下的數據,能不用通配符就不用通配符。hadoop
例如:get
[root@Richard /]# cd /jdtest/ [root@Richard /]# rm -f test1 test2
五、若是非要使用rm刪除而且要採用通配符,請按下面方法:form
[root@Richard /]# cd /jdtest/ [root@Richard jdtest]# rm -fr * #目標中不要帶有「/」。
六、應禁止使用相似rm -rf /jdtest/*命令刪除:
這個命令中,目標路徑中的任意斜線先後若是多了空格可能會帶來災難。 [root@Richard /]# rm -fr /jdtest/* 例如:rm -fr /oldboy/ *,*的前不當心多了空格,會刪除當前目錄下的全部內容。 [root@Richard /]# rm -fr /jdtest/ * #會把當前目錄根下全刪了。 [root@Richard /]# rm -fr /jdtest/ *
七、若是必需要rm -rf /jdtest/*命令刪除,最後的避免錯誤方法就是要用tab鍵去補全,不要手敲任何字符,防止誤刪。
八、若是刪除的不是目錄,就不要用rm -rf,採用rm -f 便可,甚至重要的少許文件,能夠不用-f,以得到確認刪除提示信息。
九、額外補充,慎用rsync --delete。
3、總結:
一、刪除數據後,多數狀況是能夠恢復的,但會影響業務的;
二、例如:須要停機恢復,且數據丟了,較長時間用戶訪問不了對應數據了;
三、恢復工具諸如ext3grep等;
四、事情發生前未雨綢繆永遠比發生了再解決好得多;
五、養成規範、專業科學的運維習慣、運維流程是避免當黑鍋俠的關鍵!