我可能永遠都無法忘記被我干掉了300GB數據的那天,直到深夜02:00多,還一個人孤零零的蜷縮在公司恢復環境,恢復數據的場景。
2010年,初入職場,剛接觸Linux不久,我記得我們當時用的是RedHatEnterpriseLinux5,公司是屬于中國電信的服務公司,公司做的項目是中國電信xx項目,需要從生產環境拉回來300多GB的Oracle數據,導入到公司本地測試環境,做壓力測試,試圖找出程序代碼當中的性能問題。
而做這個事情的只有我一個人,當我把整套測試環境搭好,數據都導入之后,一切正常,測試人員也已經做過幾次壓力測試。可沒過幾天,這套環境就崩掉了,只因為一個SHELL變量的問題。
當時我正在學著寫SHELL腳本,拿到其中的一臺測試服務器去測試腳本,正所謂沒有root權限的運維是沒有靈魂的,不管上什么服務器,從來都是root一把梭,可當我按下回車鍵開始執行這個腳本的時候,噩夢來了,突然屏幕開始刷屏,出現很多設備文件沒有權限刪除的錯誤,就在那一瞬間,已經意識到不對勁,說時遲那時快,果斷按下了Ctrl+C,即便憑我單身多年的手速,可還是為時已晚。看了下,瞬間驚掉了下巴,/etc目錄沒了,數據目錄也沒了,好幾個根目錄下的目錄都沒了,這個時候,整個人的狀態都是懵逼的,好一會兒才緩過神來。
怎么會無緣無故的執行了根目錄刪除操作?成了我揮之不去的記憶。
后來仔細審查了一下這個腳本,才知道,是因為其中的一個變量寫錯了,本來變量名應該是$TEMP,腳本中卻寫成了$TMEP,可怕的是,還有一個命令,是rm-rf/$TMEP。$TMEP未定義,是空的,就成了rm-rf/,然后,就沒然后了。
慶幸的是,這只是一臺用于測試的測試服務器,數據并不是特別重要。但為了后續的正常壓力測試,我必須神不知鬼不覺,“偷偷”的恢復好整個環境,那天,我又重新安裝系統,重新搭建環境,然后重新拿取數據備份文件,重新導入數據,一直搞到第二天深夜02:00多。
吃一塹,長一智。
在后續的職業生涯中,對rm-rf這個命令,都是畏懼的。當然,從此也再未發生過類似的事情。但作為一個有靈魂的運維,必須擁有root權限的信仰,不曾改變。