Linux下誤刪文件的解決之道
你曾經(jīng)是否遇到這樣的事?當(dāng)你發(fā)現(xiàn)的時候,你已經(jīng)通過刪除鍵,或者在命令行中使用 rm 命令,錯誤的刪除了一個不該刪除的文件。在***種情況下,你可以到垃圾箱,搜索那個文件,然后把它復(fù)原到原始位置。但是第二種情況又該怎么辦呢?你可能知道,Linux 命令行不會把刪除的文件轉(zhuǎn)移到任何位置,而是直接把它們移除了,biu~,它們就不復(fù)存在了。
把刪除創(chuàng)建為 rm -i 的別名
當(dāng) -i 選項配合 rm 命令(也包括其他文件處理命令比如 cp 或者 mv)使用時,在刪除文件前會出現(xiàn)一個提示。這同樣也可以運用到當(dāng)復(fù)制,移動或重命名一個文件,當(dāng)所在位置已經(jīng)存在一個和目標(biāo)文件同名的文件時。
這個提示會給你第二次機會來考慮是否真的要刪除該文件 - 如果你在這個提示上選擇確定,那么文件就被刪除了。這種情況下,很抱歉,這個技巧并不能防止你的粗心大意。
為了 rm -i 別名替代 rm ,這樣做:
- alias rm='rm -i'
運行 alias 命令可以確定 rm 現(xiàn)在已經(jīng)被別名了:
然而,這只能在當(dāng)前用戶的當(dāng)前 shell 上有效。為了***改變,你必須像下面展示的這樣把它保存到 ~/.bashrc 中(一些版本的 Linux 系統(tǒng)可能是 ~/.profile)。
為了讓 ~/.bashrc(或 ~/.profile)中所做的改變立即生效,從當(dāng)前 shell 中運行文件:
- . ~/.bashrc
取證工具-Foremost
然而,當(dāng)你意識到你意外的刪除了系統(tǒng)中的一個文件并感到恐慌時-不用擔(dān)心。讓我們來看一看 foremost,一個用來處理這種狀況的取證工具。
CentOS/RHEL 7 中安裝 Foremost,需要首先啟用 Repoforge:/strong>
- # rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
- # yum install foremost
在 Debian 及其衍生系統(tǒng)中,需這樣做:
- # aptitude install foremost
安裝完成后,我們做一個簡單的測試吧。首先刪除 /boot/images 目錄下一個名為 nosdos.jpg 的圖像文件:
- # cd images
- # rm nosdos.jpg
要恢復(fù)這個文件,如下所示使用 foremost(要先確認所在分區(qū) - 本例中, /boot 位于 /dev/sda1 分區(qū)中)。
- # foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued
其中,/home/gacanepa/rescued 是另外一個磁盤中的目錄 - 請記住,把文件恢復(fù)到被刪除文件所在的磁盤中不是一個明智的做法。如果在恢復(fù)過程中,占用了被刪除文件之前所在的磁盤分區(qū),就可能無法恢復(fù)文件。另外,進行文件恢復(fù)操作前不要做任何其他操作。
當(dāng) foremost 執(zhí)行完成以后,恢復(fù)的文件(如果可以恢復(fù))將能夠在目錄 ·/home/gacanepa/rescue/jpg` 中找到。
總結(jié)
在這篇文章中,我們闡述了如何避免意外刪除一個不該刪除的文件,以及萬一這類事情發(fā)生,如何恢復(fù)文件。還要警告一下, foremost 可能運行很長時間,時間長短取決于分區(qū)的大小。
如果您有什么問題或想法,和往常一樣,不要猶豫,告訴我們??梢越o我們留言。