恢復誤刪除的問題——EXT類型文件恢復和XFS類型文件備份和恢復

恢復誤刪除的問題

一、EXT 類型文件恢復

#####EXT 類型文件恢復#####
刪除一個文件,實際上並不清除 inode 節點和 block 的數據,只是在這個文件的父目錄 裏面的 block 中,
刪除這個文件的名字。Linux 是通過 Link 的數量來控制文件刪除的,只有 當一個文件不存在任何 Link 的時候,
這個文件纔會被刪除。 在 Linux 系統運維工作中,經常會遇到因操作不慎、操作錯誤等導致文件數據丟失的情 況,
尤其對於客戶企業中一些新手。當然,這裏所指的是徹底刪除,即已經不能通過“回收 站”找回的情況,
比如使用“rm -rf”來刪除數據。針對 Linux 下的 EXT 文件系統,可用的恢復工具有 debugfs、ext3grep、extundelete 等。
其中 extundelete 是一個開源的 Linux 數據 恢復工具,支持 ext3、ext4 文件系統。

在數據被誤刪除後,第一時間要做的就是卸載被刪除數據所在的分區,如果是根分區的 數據遭到誤刪,
就需要將系統進入單用戶模式,並且將根分區以只讀模式掛載。這樣做的原 因很簡單,因爲將文件刪除後,
僅僅是將文件的 inode 節點中的扇區指針清零,實際文件還 存儲在磁盤上,如果磁盤繼續以讀寫模式掛載,
這些已刪除的文件的數據塊就可能被操作系統重新分配出去,在這些數據庫被新的數據覆蓋後,
這些數據就真的丟失了,恢復工具也回 天無力。所以以只讀模式掛載磁盤可以儘量降低數據庫中數據被覆蓋的風險,
以提高恢復數 據成功的比例。

下面將介紹使用 extundelete 工具如何恢復誤刪除的文件。

1.編譯安裝 extundelete
在編譯安裝 extundelete 之前需要先安裝兩個依賴包 e2fsprogs-libs 和 e2fsprogs-devel,
這兩個包在系統安裝光盤的/Package 目錄下就有,使用 rpm 或 yum 命令將其安裝。
e2fsprogs-devel 安裝依賴於 libcom_err-devel 包。 安裝完依賴包之後,
即可將提前上傳的 extundelete 軟件包解壓、配置、編譯、安裝

[root@localhost opt]# yum -y install e2fsprogs-devel e2fsprogs-libs
[root@localhost ~]# yum -y install wget
[root@localhost opt]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost opt]# yum -y install bzip2
[root@localhost opt]# tar xvf extundelete-0.2.4.tar.bz2
[root@localhost opt]# cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install //將extundelete配置文件放到/usr/local/extundelete編譯並且安裝
cd /usr/local/extundelete/bin
ln -s /usr/local/extundelete/bin/* /usr/sbin/ == //給extundelete解壓的文件建議軟鏈接== extundelete的配置文件作爲usr/sbin的軟鏈接的源文件。extundelete 安裝在/usr/local/extundelete/bin裏面,搞個軟連接,把他寫到sbin那個目錄裏面

#####沒有make 安裝make####
make是gcc的編譯器,一定要安裝
1、安裝:
yum -y install gcc automake autoconf libtool make

2、安裝g++:
yum install gcc gcc-c++

2、模擬刪除並執行恢復操作
虛擬機添加新硬盤,使用 fdisk 命令創建新分區,將其掛載到/data目錄下,往該目錄下新建一些文件或目錄
fdisk -l
fdisk /dev/sdb
n
p
回車
回車
回車
p
w
新添加的5G硬盤,並且2個主分區,1個拓展分區,1個邏輯分區
將sdb5 ,進行格式化ext3文件系統,
掛載

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
extundelete /dev/sdb5 //查看磁盤的文件刪除情況。因爲常規刪除只是刪除文件名,沒有刪除節點號

也可以使用“extundelete /dev/sdb1 --inode 2”查看文件系統/dev/sdb1 下存在哪些文件,
具體的使用情況。其中–inode 2 代表從 i 節點爲 2 的文件開始查看,一般文件系統格式化掛 載之後,
i 節點是從 2 開始的,2 代表該文件系統最開始的目錄。

模擬誤刪除a b
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

二、 xfs 類型文件備份和恢復

extundelete 工具僅可以恢復 EXT 類型的文件,無法恢復 CentOS 7 系統默認採用 xfs 類型的文件。
針對 xfs 文件系統目前也沒有比較成熟的文件恢復工具,所以建議提前做好數 據備份,以避免數據丟失。
xfs 類型的文件可使用 xfsdump 與 xfsrestore 工具進行備份恢復。若系統中未安裝 xfsdump與xfsrestore工具,
可以通過yum install -y xfsdump命令安裝。xfsdump 按照inode 順序備份一個 xfs 文件系統。xfsdump 的備份級別
有兩種:0 表示完全備份;1-9 表示增量 備份。
xfsdump 的備份級別默認爲 0。
xfsdump 的命令格式爲:xfsdump -f 備份存放位置 要備份路徑或設備文件。常用的備份參數包括以下幾種:
-f:指定備份文件目錄;
-L:指定標籤 session label;
-M:指定設備標籤 media label;
-s:備份單個文件,-s 後面不能直接跟路徑
下面通過一個案例來備份恢復 xfs 類型的文件。首先添加一款新硬盤並格式化爲 xfs 類 型的文件系統,然後掛在到/date 目錄下
[root@localhost /]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

mkfs -t xfs -f /dev/sdb5 /data //加-f 是強制格式
[root@localhost /]# cd /data/
[root@localhost data]# cp /etc/passwd ./ //將密碼的內容複製到/data目錄文件名是passwd
[root@localhost data]# mkdir test
[root@localhost data]# touch test/a
[root@localhost data]# yum -y install tree
[root@localhost data]# tree /data
/data
├── passwd
└── test
└── a

##使用xfsdump 命令備份整個分區##
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1
####交互信息###
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 ####指定備份會話標籤

please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 ###指定設備標籤,就是對要備份的設備做一個描述

[root@localhost ~]# xfsdump -I ####查看備份內容信息-l 是大寫i
file system 0:
fs id: c7e3b663-a22e-4f0f-b293-be5a0f80e457
session 0:
mount point: localhost.localdomain:/data
device: localhost.localdomain:/dev/sdb1
time: Tue Jun 23 00:56:44 2020
session label: “dump_sb”
session id: 26963e6a-fef3-42b4-b789-1e21ad390af7
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /opt/dump_sdb1
start: ino 67 offset 0
end: ino 70 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 24032
mfile start: ino 67 offset 0
mfile end: ino 70 offset 0
media label: “sdb1”
media id: 6aedd0e0-3e36-4bb4-b7ed-c489c73ea48c
xfsdump: Dump Status: SUCCESS

####刪除之前創建的內容,模擬數據丟失###
[root@localhost ~]# cd /data/
[root@localhost data]# ls
passwd test
[root@localhost data]# rm -rf *
[root@localhost data]# ls

[root@localhost ~]# xfsrestore -f /opt/dump_sdb1 /data/ == ##解析xfsdump的備份標籤dump_sdb1==
[root@localhost ~]# ls /date/ ##查看解析後,恢復的sdb1數據

使用 xfsdump 時,需要注意以下的幾個限制
1、xfsdump 不支持沒有掛載的文件系統備份,所以只能備份已掛載的;
2、xfsdump 必須使用 root 的權限才能操作(涉及文件系統的關係);
3、xfsdump 只能備份 XFS 文件系統;
4、xfsdump 備份下來的數據(檔案或儲存媒體)只能讓 xfsrestore 解析;
5、xfsdump 是透過文件系統的 UUID 來分辨各個備份檔的,因此不能備份兩個具有相同 UUID 的文件系統。

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章