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