使用grep恢復被刪文件內容

在Unix/Linux下,最危險的命令恐怕就屬rm命令了,每次在root下使用這個命令的時候,我都要盯着命令行看上幾分鐘纔敢把回車敲下去。之前,看到同事在腳本中使用rm命令 —— rm {$App_Dir}/* 。由於腳本沒有判斷變量$App_Dir是否爲空,結果,在一次用root操做的時候,整個操做系統一下就不見了,還好只是開發機。今後,咱們你們都不再敢使用rm命令了。html

這裏給你們介紹一個小技巧用來恢復一些被rm了的文件中的數據。咱們知道,rm命令其實並非真正的從物理上刪除文件內容,只過不把文件的inode回收了,其實文件內容還在硬盤上。因此,若是你不小刪除了什麼比較重要的程序配置文件的時候,咱們徹底能夠用grep命令在恢復,下面是一個恢復示例:node

1
grep -a -B 50 -A 60 'some string in the file' /dev/sda1 > results.txt

說明:shell

  • 關於grep的-a意爲–binary-files=text,也就是把二進制文件看成文本文件。
  • -B和-A的選項就是這段字符串以前幾行和以後幾行。
  • /dev/sda1,就是硬盤設備,
  • > results.txt,就是把結果重定向到results.txt文件中。

若是你幸運的話,你就能夠看到被恢復的內容了。這正是Unix的簡單哲學(詳見《Unix傳奇下篇》)——全部的設備都是文件bash

固然,我仍是建議你把root用戶的rm的命令用alias換成別一個腳本,那個腳本會幫你把刪除的文件放到某個地方。spa

相關文章
相關標籤/搜索