如何在 Linux 中恢復已刪除的文件
一、概述
這曾經發(fā)生在你身上嗎?你意識到你錯誤地刪除了一個文件---要么通過Del鍵,要么在命令行中使用rm。
在第一種情況下,您可以使用回站站(GNOME界面),然后將其恢復到原始位置。但是第二種情況呢?我相信你可能知道,Linux 命令行不會將刪除的文件發(fā)送到任何地方,而是直接刪除它們。
二、過程
1、 為“rm -i”創(chuàng)建別名
該-i選項與rm一起使用時在刪除文件之前會出現提示。此提示讓您有第二次機會考慮是否真的要刪除文件 ,但此提示不會保護您免受自己的粗心大意刪除文件,它只是給你提供了二次確認的機會。
要將rm替換為別名'rm -i',請執(zhí)行以下操作:
alias rm='rm -i'
alias命令將確認rm現在是別名:
但是,這只會在當前 shell 中的當前用戶會話期間持續(xù)。要使更改永久生效,您必須將其保存到~/.bashrc(某些發(fā)行版可能會使用~/.profile),如下所示:
為了使~/.bashrc(or ~/.profile) 中的更改立即生效,請從當前 shell 獲取文件:
2、 恢復工具 – Foremost
在日常的系統操作,請小心的你文件,但是,如果您意識到您不小心刪除了系統中的文件并且驚慌失措,別擔心,此工具會輕松幫你找回誤刪除的文件!
2.1 安裝軟件包
CentOS/RHEL 7,是目前在生產環(huán)境見到的使用最廣泛的版本,下面展示在CentOS/RHEL 7中的安裝過程。
#rpm -Uvh https://rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/foremost-1.5.7-1.el7.rf.x86_64.rpm
命令展示:
[root@192_168_209_128 images]# foremost -h
foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus.
$ foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t <type>] [-s <blocks>] [-k <size>]
[-b <size>] [-c <file>] [-o <dir>] [-i <file]
-V - display copyright information and exit
-t - specify file type. (-t jpeg,pdf )
-d - turn on indirect block detection (for UNIX file-systems)
-i - specify input file (default is stdin)
-a - Write all headers, perform no error detection (corrupted files)
-w - Only write the audit file, do not write any detected files to the disk
-o - set output directory (defaults to output)
-c - set configuration file to use (defaults to foremost.conf)
-q - enables quick mode. Search are performed on 512 byte boundaries.
-Q - enables quiet mode. Suppress output messages.
-v - verbose mode. Logs all messages to screen
選項釋義:
- -t:指定要恢復的文件類型如jpeg,pdf,exe,doc等,如果要恢復所有文件類似,指定參數值為"all"即可。
- -d:打開間接塊檢測(對于 UNIX 文件系統)。
- -i:指定輸入文件(默認為標準輸入)。
- -a:不執(zhí)行錯誤檢測(損壞的文件)。
- -w:只輸出審計文件,不輸出被刪除的文件至磁盤上。
- -o:設置輸出目錄(默認為輸出)。
2.2 示例展示
(1) 安裝完成后,讓我們進行一個簡單的測試。
首先我們將xihu.jpg從/boot/images目錄中刪除:
[root@192_168_209_128 images]# cd image
[root@192_168_209_128 images]# pwd
/boot/images
[root@192_168_209_128 images]# ls
xihu.jpg
[root@192_168_209_128 images]# rm xihu.jpg
(2) 執(zhí)行恢復。
要恢復它,首先按如下方式使用(您需要首先識別底層分區(qū) -在這種情況下/dev/sda1就是/boot所在的分區(qū)):
remost -t jpg -i /dev/sda1 -o /home/rescure/
(3) 查看恢復情況。
查看一下審計文件。
從輸出內容來看,文件被成功恢復。
注意事項:
其中/home/rescue是單獨磁盤上的目錄 - 請記住,在已刪除文件所在的同一驅動器上恢復文件不是明智之舉。
如果在恢復過程中,您占用已刪除文件所在的相同磁盤扇區(qū),則可能無法恢復任何內容。此外,必須在執(zhí)行恢復之前停止所有活動。
在 foremost 完成執(zhí)行后,恢復的文件(如果可以恢復)將在/home/rescue/jpg目錄中找到。
三、小結
在本文中,我們解釋了如何避免意外刪除文件以及在發(fā)生此類意外事件時如何嘗試恢復文件。但是請注意,根據分區(qū)的大小,最終可能需要運行很長時間。