linux系統中不小心執行了rm -rf ./* 怎么辦?解決:文件系統的備份與恢復


XFS提供了 xfsdump 和 xfsrestore 工具協助備份XFS文件系統中的數據。xfsdump 按inode順序備份一個XFS文件系統。
centos7選擇xfs格式作為默認文件系統,而且不再使用以前的ext,仍然支持ext4,xfs專為大數據產生,每個單個文件系統最大可以支持8eb,單個文件可以支持16tb,不僅數據量大,而且擴展性高。還可以通過xfsdump,xfsrestore來備份和恢復。
與傳統的UNIX文件系統不同,XFS不需要在備份前被卸載;對使用中的XFS文件系統做備份就可以保證鏡像的一致性。XFS的備份和恢復的過程是可以被中斷然后繼續的,無須凍結文件系統。xfsdump 甚至提供了高性能的多線程備份操作——它把一次dump拆分成多個數據流,每個數據流可以被發往不同的目的地
首先了解一下xfsdump的備份級別有以下兩種,默認為0(即完全備份)
0 級別代表: 完全備份
1 到9級別代表: 增量備份

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

 

環境聲明:

系統CENTOS7.2 添加一塊虛擬硬盤(准備一個測試分區)
正常使用一塊磁盤過程如下:
添加磁盤大小:20Gà分區à格式化掛載

[root@harry63 ~]# fdisk /dev/sdb

歡迎使用fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符0x06d5a427 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n #創建一個新的分區
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #創建一個主分區
分區號 (1-4,默認 1):
起始 扇區(2048-41943039,默認為 2048):#
將使用默認值2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認為 41943039):+1G #指定分區大小
分區 1 已設置為 Linux 類型,大小設為 1 GiB
命令(輸入 m 獲取幫助):p #打印分區表
磁盤/dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x06d5a427
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
命令(輸入 m 獲取幫助):w #保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。

[root@rich七哥 ~]# ls  /dev/sdb*

  /dev/sdb  /dev/sdb1

使用新的分區,格式化分區,並進行掛載

 

 

[root@harry63 ~]# mkfs.xfs /dev/sdb1
[root@harry63 ~]# mkdir /sdb1     #創建掛載點
[root@harry63 ~]# mount /dev/sdb1 /sdb1   #掛載
准備備份測試文件
[root@harry63 ~]# cd /sdb1/
[root@harry63 sdb1]# cp /etc/passwd ./
[root@harry63 sdb1]# mkdir test
[root@harry63 sdb1]# touch test/a
[root@harry63 sdb1]# tree /sdb1/
[root@harry63 sdb1]# tree /sdb1/
/sdb1/
├──passwd
└── test
    └── a

  

開始備份

1、備份整個分區。 (這個功能就像是虛擬機的快照,服務器被黑后,進行快速恢復)
xfsdump -f 備份存放位置 要備份路徑或設備文件
注意:此軟件在需要安裝,備份的路徑這里不能寫成/sdb1/。 可以是/dev/sdb1 或/sdb1
[root@harry63 sdb1]#yum install -y xfsdump
[root@harry63 sdb1]# xfsdump -f /opt/dump_sdb1 /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
========== dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 指定備份會話標簽
session label entered: "dump_sdb1"
--------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of harry63.cn:/sdb1
xfsdump: dump date: Fri Nov 17 12:24:53 2017
xfsdump: session id: b5a25fcd-d43d-4308-bf29-142066f89d9a
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
============== media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 指定設備標簽,就是對要備份的設備做一個描述
media label entered: "sdb1"
--------------------------------- end dialog --------------------------------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 24544 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 46 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
2、 指定備份時免交互操作,方便后期做定時備份
[root@harry63 sdb1]# xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1
-L :xfsdump 紀錄每次備份的 session 標頭,這里可以填寫針對此文件系統的簡易說明
-M :xfsdump 可以紀錄儲存媒體的標頭,這里可以填寫此媒體的簡易說明

3、指定只備份分區中某個目錄
參數:-s 文件路徑 只對指定的文件進行備份,-s指定時,路徑寫的是相對路徑(-s可以是文件或目錄)
[root@harry63 sdb1]# xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1
4、查看備份信息與內容
備份成功后,我們就可以在/var/lib/xfsdump/inventory目錄下看到生成的檔案信息
[root@harry63 opt]# xfsdump -I(字母大寫i)

測試恢復:先刪除之前創建的內容
[root@harry63 sdb1]# ls
passwd test
[root@harry63 sdb1]# pwd
/sdb1
[root@harry63 sdb1]# rm -rf ./*

4.4.3 文件系統恢復

語法:xfsrestore -f 指定恢復文件的位置 指定存放恢復后的文件的路徑
[root@harry63 opt]# xfsrestore -f /opt/dump_sdb1 /sdb1
查看恢復情況
[root@harry63 ~]# ls /sdb1/
恢復單個文件如下:
[root@harry63 ~]# mkdir /var/test/
[root@harry63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg/var/test/
[root@harry63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/var/test/ #恢復目錄

恢復成功!

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM