使用grep恢復被刪文件內容node
2010年8月24日陳皓髮表評論閱讀評論 8,956 人閱讀 操作系統
在Unix/Linux下,最危險的命令恐怕就屬rm命令了,每次在root下使用這個命令的時候,我都要盯着命令行看上幾分鐘纔敢把回車敲下去。之前,看到同事在腳本中使用rm命令 —— rm {$App_Dir}/* 。由於腳本沒有判斷變量$App_Dir是否爲空,結果,在一次用root操做的時候,整個操做系統一下就不見了,還好只是開發機。今後,咱們你們都不再敢使用rm命令了。命令行
這裏給你們介紹一個小技巧用來恢復一些被rm了的文件中的數據。咱們知道,rm命令其實並非真正的從物理上刪除文件內容,只過不把文件的inode回收了,其實文件內容還在硬盤上。因此,若是你不小刪除了什麼比較重要的程序配置文件的時候,咱們徹底能夠用grep命令在恢復,下面是一個恢復示例:開發
1字符串
grep -a -B 50 -A 60 'some string in the file' /dev/sda1 > results.txtstring
說明:變量
關於grep的-a意爲–binary-files=text,也就是把二進制文件看成文本文件。配置
-B和-A的選項就是這段字符串以前幾行和以後幾行。file
/dev/sda1,就是硬盤設備,技巧
> results.txt,就是把結果重定向到results.txt文件中。
若是你幸運的話,你就能夠看到被恢復的內容了。這正是Unix的簡單哲學(詳見《Unix傳奇下篇》)—— 全部的設備都是文件。
固然,我仍是建議你把root用戶的rm的命令用alias換成別一個腳本,那個腳本會幫你把刪除的文件放到某個地方。