新聞中心
周末誤刪根目錄《就這樣把根目錄刪了!!!》,引起了廣泛的討論:

(1)部分朋友表達(dá)了同情
(2)部分朋友建議買機(jī)票跑路
(3)部分朋友分享了類似的悲劇(例如:多一個(gè)空格)
rm -rf / home/work/logs/
(4)大部分朋友分享了避免類似悲劇的經(jīng)驗(yàn),今天將大伙的經(jīng)驗(yàn)進(jìn)行一個(gè)匯總,分享給大家,希望“誤刪根目錄”的事情永遠(yuǎn)不再出現(xiàn)
一、悲劇回顧
執(zhí)行了一個(gè)清理日志的腳本,大致的邏輯是:
...
cd ${log_path}
rm -rf *
...
看上去沒有任何問題,進(jìn)入到日志目錄,然后把日志都刪除。但是,當(dāng)目錄不存在時(shí),悲劇就發(fā)生了。
二、大伙建議
【命令替換】
點(diǎn)贊數(shù)最多的朋友“39度的風(fēng)”建議:
生產(chǎn)環(huán)境把rm -rf 命令替換為mv,再寫個(gè)定時(shí)shell定期清理,以模擬“回收站”功能。
【收攏權(quán)限】
這個(gè)方案建議的人數(shù)最多:
帳號(hào)權(quán)限的分離,線上分配work帳號(hào),只能夠刪除/home/work/logs/目錄,無法刪除根目錄。
【使用&&】
有部分朋友建議,使用&&將
cd ${log_path}
rm -rf *
合并成一個(gè)語(yǔ)句
cd ${log_path} && rm -rf *
當(dāng)前半句執(zhí)行失敗的時(shí)候,后半句不再執(zhí)行。
【不使用cd】
對(duì)于
cd ${log_path}
rm -rf *
直接改為
rm -rf ${log_path}
而不是cd到目錄下再執(zhí)行。
這個(gè)方案?jìng)€(gè)人感覺對(duì)于這個(gè)case可行,但不太通用,總有需要cd的場(chǎng)景吧。
【判斷目錄是否存在】
制定編碼規(guī)范,對(duì)目錄進(jìn)行操作之前,要先判斷目錄是否存在。
確實(shí),可是靠人的自覺來保證規(guī)范的執(zhí)行,總感覺有些不太靠譜。
【單元測(cè)試】
和制定編碼規(guī)范類似,自測(cè)貌似比較難測(cè)出來,根據(jù)經(jīng)驗(yàn):rd往往以自己編寫代碼的思路和邏輯編寫自測(cè)用例,來證明自己代碼的正確性。
【使用Python,避免使用shell】
這…
貌似不太通用,技術(shù)討論的***大前提“不要有語(yǔ)言之爭(zhēng)”(技術(shù)討論的第二大前提“不要討論哪個(gè)編輯器好用”)。
三、其他悲劇
除了部分朋友反饋也刪除過根目錄,還有朋友提到:
(1)刪除過es數(shù)據(jù)
(2)刪除過生產(chǎn)數(shù)據(jù)庫(kù)
(3)刪除過home目錄
(4)誤格式化過硬盤
還有朋友提到了攜程之前的線上事故,我們都放下吃瓜看笑話的心態(tài),別人還能夠在十幾個(gè)小時(shí)故障恢復(fù),我們問自己一句,“假如我們線上20臺(tái)服務(wù)器全被干掉了”,我們能在十幾個(gè)小時(shí)恢復(fù)么?
后續(xù)和大家聊聊故障的快速恢復(fù)。
【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
當(dāng)前名稱:如何防止根目錄被刪?
分享URL:http://www.dlmjj.cn/article/djphhjc.html


咨詢
建站咨詢
