1. 程式人生 > >有個程式猿很憂桑:一個命令rm -rf/ ,他把整個公司刪沒了

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

話說

最近有個程式猿很憂桑

....... 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

因為弄錯了一行程式碼

這哥們不小心把他整個公司

刪沒了

沒了

...

640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

好吧..

事情是這樣的....

最近有個哥們在個技術論壇上求助...  

我在伺服器維護的時候不小心執行了rm -rf 命令...... 現在整臺伺服器被我刪光了腫麼辦???? 

好吧.. 現在先來介紹一下

rm 是 linux系統下刪除檔案的命令....   -r 代表刪除這個下面的一切,一切的一切那種的一切。  f 表示不需要使用者確認,直接執行.....

好吧...通常這個命令都是指定資料夾用的...  比如  

rm -rf  /home/test/   就是刪除/home/test/這個資料夾下面的所有東西..... 

但是如果後面的資料夾路徑沒有加對.........

rm -rf /  在伺服器上也就意味著....

640?wx_fmt=jpeg

哥們當然不會笨到直接去執行這個.... 

他表示,他當時正在執行一個BASH指令碼...  但是腳本里似乎有一個問題,導致執行這個刪除命令的時候,刪除指定資料夾的那個引數沒有順利的傳遞過去.....  

直觀點解釋一下?  

讓我來給大家舉個例子:

我叫小明去讓電腦刪除一個東西.. 我就是那個程式設計師,小明就是那個指令碼....

我本來想給小明的指令是  

“讓電腦把test資料夾下的東西全刪了.... ”

但是似乎我跟小明在溝通上出現了問題.... 不知道是他聽漏了還是我說錯了,總之最後小明跑去執行的指令是   

“讓電腦把東西全刪了”

電腦: 好的明白~~~

於是... 

640?wx_fmt=jpeg

公司這臺伺服器上所有的使用者資料... 就在這麼一條命令之後強擼灰飛煙滅了...... 

好吧... 那備份的資料呢?

這哥們表示....  當時為了執行維護,他把遠端的備份的驅動器也掛在了這個伺服器上.....  

於是也這麼一起刪掉了........ 

後來下面的網友紛紛給這哥們點起了蠟燭....

“哥們我很抱歉的哥你說......  實際上你的公司已經徹底的報銷了...."   

 "我覺得你現在就別糾結這些技術細節了..... 找個律師比較有用...."

“如果你現在馬上把你這伺服器拿去資料恢復公司.. 也許還有一點救.. 不過鑑於你的資料量,修復起來絕對是天文數字”

好吧.....

現在這哥們已經哭不出來了...... 

640?wx_fmt=png進一步報道

Marco Marsala 是一家小型主機託管公司的老闆,但是他最近遇到了一個天大的麻煩——由於指令碼錯誤,他不慎刪光了所有客戶的資料。更糟糕的是,由於 Bash 指令碼程式碼中包含了一行變數未定義的“rm -rf {foo}/{bar}”,連備份也連帶著被幹掉了——而在通常情況下,備份網路理應和正常的生產力基礎設施隔離開的。

640?wx_fmt=jpeg

這一錯誤源自 Ansible 上糟糕的程式碼設計,這款 Linux 實用工具被用於在多臺不同伺服器上自動執行指令碼。

開發者解釋到,實際引數應該是“rm -rf {foo}/{bar}”,foo 和 bar 是指令碼中動態傳遞的兩個變數。

然而由於變數處理出錯,通用語法未能成功在 bash 命令中插值,所以最終指令就變成了可怕的“rm -rf /”。

“rm -rf/”意味著擦除根路徑“/”下掛載的所有內容而無需詢問。

鑑於 Marsala 執行著 1535 個叢集,其本來是能夠在數小時(至數日)內恢復的。但由於未能妥善實現生產環境和備份環境的隔離,備份檔也全沒了。

不得已之下,他只能上網發帖求救,然而沒人能救得了他了。當然,也許最好的建議是給律師打個電話,那樣或許還不至於賠得太慘。

網友評論

提莫採摘蘑菇第一小分隊:640?wx_fmt=gif不太懂 但是我剛剛碼完論文然後沒儲存。640?wx_fmt=gif

V-Lancelot:640?wx_fmt=gif我來舉一個形象一點的例子,假如你是個網紅,你有幾千萬粉絲,然後有個程式設計師把資料庫刪沒了,一覺醒來你發現你的幾千萬粉絲都沒了,你會是什麼感覺

紅紅火火嚯嚯呵呵:前些日子,我們公司一個程式設計師離職,把專案交接好就走了,新來的一個程式設計師第一天逮到電腦就重灌了系統。。專案程式碼都沒了,老闆氣的鍵盤砸爛了兩個640?wx_fmt=gif640?wx_fmt=gif專門拿著硬碟去恢復也失敗了,。。。。還好離職的程式設計師家裡還有一份,雖然不是最新的不過也是萬幸。神奇的是新來的程式設計師第二天還來了。

小明說他是故事裡的路人甲:同病相憐撒 我剛剛弄錯了一個數據 現在可能要賠四千多……

紀冬夏:手下一行碼,餘生兩行淚

lee貝勒:變數{foo}/{bar}前為何不加上$符號,這可是shell變數的引用格式啊

阿涵感覺自己萌萌噠:還記得之前某次大型全球金融危機就是 某個銀行職員寫錯了一個數640?wx_fmt=gif640?wx_fmt=gif640?wx_fmt=gif

好好學習假不假__不假:不懂的各位,就當作新浪的資料都被刪除了,微博以後都不存在了就行

鋇鹽不溶--explode:可以在知乎回答[親手把一家公司弄垮是怎樣的體驗]

白玉糖包子:我懂我懂,我花了一晚做的PPT,好不容易做完了,系統問我要儲存麼?我毅然決然選擇了“否”!

農村古天樂:老總:感謝你小夥子,我們不用償還那些債務了,來,咱商量一下怎麼弄個新公司

公眾號內回覆“1”帶你進粉絲群640?wx_fmt=gif