Linux-環境與備份

實驗環境:

系統CENTOS7.2 添加一塊虛擬硬碟(準備一個測試分區)

正常使用一塊磁碟過程如下:

添加磁碟大小:20G à分區à格式化à掛載

對新添加的硬碟進行格式化:

[root@xuegod63 ~]# 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@xuegod63 ~]# ls /dev/sdb*

/dev/sdb /dev/sdb1

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

[root@xuegod63 ~]# mkfs.xfs /dev/sdb1

[root@xuegod63 ~]# mkdir /sdb1 #創建掛載點

[root@xuegod63 ~]# mount /dev/sdb1 /sdb1 #掛載

準備備份測試文件

[root@xuegod63 ~]# cd /sdb1/

[root@xuegod63 sdb1]# cp /etc/passwd ./

[root@xuegod63 sdb1]# mkdir test

[root@xuegod63 sdb1]# touch test/a

[root@xuegod63 sdb1]# tree /sdb1/

[root@xuegod63 sdb1]# tree /sdb1/

/sdb1/

├── passwd

└── test

└── a

備份

1、備份整個分區。 (這個功能就像是虛擬機的快照,伺服器被黑後,進行快速恢復)

xfsdump -f 備份存放位置 要備份路徑或設備文件

注意:備份的路徑這裡不能寫成/sdb1/。 可以是/dev/sdb1 或/sdb1

[root@xuegod63 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 xuegod63.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@xuegod63 sdb1]# xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1

-L :xfsdump 紀錄每次備份的 session 標頭,這裡可以填寫針對此文件系統的簡易說明

-M :xfsdump 可以紀錄儲存媒體的標頭,這裡可以填寫此媒體的簡易說明

3、指定只備份分區中某個目錄

參數:-s 文件路徑 只對指定的文件進行備份,-s指定時,路徑寫的是相對路徑(-s可以是文件或目錄)

[root@xuegod63 sdb1]# xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1

4、查看備份信息與內容

備份成功後,我們就可以在/var/lib/xfsdump/inventory目錄下看到生成的檔案信息

[root@xuegod63 opt]# xfsdump -I(字母大寫i)

測試恢復:先刪除之前創建的內容

[root@xuegod63 sdb1]# ls

passwd test

[root@xuegod63 sdb1]# pwd

/sdb1

[root@xuegod63 sdb1]# rm -rf ./*

文件系統恢復

語法:xfsrestore -f 指定恢復文件的位置 指定存放恢復後的文件的路徑

[root@xuegod63 opt]# xfsrestore -f /opt/dump_sdb1 /sdb1

查看恢復情況

[root@xuegod63 ~]# ls /sdb1/

恢復單個文件如下:

[root@xuegod63 ~]# mkdir /var/test/

[root@xuegod63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg /var/test/

[root@xuegod63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2 /var/test/ #恢複目錄

註:

使用 xfsdump 時,請注意下面下面的幾個限制:

1、xfsdump 不支持沒有掛載的文件系統備份!所以只能備份已掛載的!

2、xfsdump 必須使用 root 的許可權才能操作 (涉及文件系統的關係)

3、xfsdump 只能備份 XFS 文件系統

4、xfsdump 備份下來的數據 (檔案或儲存媒體) 只能讓 xfsrestore 解析

5、xfsdump 是透過文件系統的 UUID 來分辨各個備份檔的,因此不能備份兩個具有相同 UUID 的文件系統

增量備份

概念

增量備份是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加或者被修改的文件。這就意味著,第一次增量備份的對象是進行全備後所產生的增加和修改的文件;第二次增量備份的對象是進行第一次增量備份後所產生的增加和修改的文件,以此類推。

優缺點

優點:沒有重複的備份數據,因此備份的數據量不大,備份所需的時間很短。

缺點:數據恢復相對比較麻煩,它需要上一次全備份和所有增量備份的內容纔能夠完全恢復成功,並且它們必須沿著從全備份到依次增量備份的時間順序逐個反推恢復,因此可能會延長的恢復時間

實戰: 增量備份文件系統

準備一個備份目錄進行備份

[root@xuegod63 sdb1]# tree /sdb1

/sdb1/

├── passwd

└── test

└── a

對上面的內容進行第一次全備

[root@xuegod63 sdb1]# xfsdump -f /opt/test-full /sdb1 -L test-full -M media0

增加一些內容,然後進行第1次增量備份

[root@xuegod63 ~]# touch /sdb1/1.txt /sdb1/2.txt

[root@xuegod63 ~]# tree /sdb1/

/sdb1/

├── 1.txt

├── 2.txt

├── passwd

└── test

└── a

[root@xuegod63 sdb1]# xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-bak1 -M media0

-l <level> 做一個等級為1的備份

再次增加內容,然後進行level 2級別的增量備

[root@xuegod63 sdb1]# touch /sdb1/test/a.txt /sdb1/test/b.txt

[root@xuegod63 ~]# tree /sdb1/

/sdb1/

├── 1.txt

├── 2.txt

├── passwd

└── test

├── a

├── a.txt

└── b.txt

[root@xuegod63 sdb1]# xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-bak2 -M media0

[root@xuegod63 ~]# rm -rf /sdb1/* #刪除所有數據

現在進行恢復,要想恢復全部全部數據,包括新添加的文件,如何恢復?

步驟:

1、先恢復完全備份

2、情況1: 恢復最後一次增量備份(如果兩次增量備份都是1級的,所以只需要恢復最後一個增量就可以了。

3、情況2:如果你做的是第一次是1級備,第二次是2級備,那麼你在恢復的時候就需要先恢復完全備份,然後是1級備,最後是2級備)

[root@xuegod63 ~]# xfsrestore -f /opt/test-full /sdb1/

[root@xuegod63 ~]# xfsrestore -f /opt/test-back2 /sdb1/ #故意先恢復back2,查看

[root@xuegod63 ~]# tree /sdb1/ #查看,發現沒有1.txt ,2.txt

/sdb1/

├── passwd

└── test

├── a

├── a.txt

└── b.txt

[root@xuegod63 ~]# xfsrestore -f /opt/test-back1 /sdb1/

[root@xuegod63 ~]# tree /sdb1/

到此,數據恢復成功了

如果還有不明白的,可以直接點擊搜索

「MK老師」

我會手把手教你如何備份與恢復文件


推薦閱讀:
相關文章