咱們能夠想像如下場景:
1. 場景一:系統發生意外宕機,工程師沒法快速定位問題,業務受到中斷,客戶十分不滿意。
2. 場景二:項目會議上,就是否升級某軟件到最新版本,A和B爭執不斷,A認爲爲了保持與其餘軟件的兼容性不能輕易升級,B認爲升級能充分利用軟件包的最新功能以及享受到新版本性能的提高
3. 場景三:服務器忽然沒法訪問了,致使業務中斷,工程師A和B由於追究責任爭得不可開交,A說是B修改了某項配置致使的,B反駁說個人配置都是正確的,不可能出錯。linux
可是Snapper能夠輕鬆幫你解決以上煩惱:
1. 使用Snapper按期作系統備份,系統發生意外宕機能夠快速回溯到以前的正常狀態。
2. 可使用Snapper來安裝/升級軟件,在安裝/升級先後作快照,若是安裝/升級失敗,就能夠快速的恢復系統到正常狀態
3. 大型軟件項目的部署配置,Snapper能夠幫助快速定位哪些配置文件作了改動,幫助定位錯誤,並快速撤銷配置文件的修改。git
關於Snapper,Linux User & Developer Magazine中如是說:」感謝Snapper,咱們才能夠肆無忌憚的折騰系統配置以及安裝/更新軟件,從舊的備份中恢復成爲了過去式,也不用再爲會丟失文件而提心吊膽,你只須要利用快照就能夠從壞點恢復到好點。github
快照是對卷在某一點上進行拷貝,提供了一種恢復文件系統到以前狀態的一種方法。Snapper是一個用來建立和維護快照的命令行工具,提供了基本的快照工具:建立、刪除快照;對比快照之間的變化,以及撤銷快照之間的操做。web
目前Snapper能夠爲如下文件系統類型建立快照:算法
Snapper是一個開源的項目,它基於GPLv2.0發佈。Snapper是由SUSE發起並維護。
- Snapper官方博客爲: http://snapper.io/
- Snapper源碼發佈在github: https://github.com/openSUSE/snapper
- Snapper GUI(目前僅支持btrfs、ext四、精簡LVM):https://github.com/ricardomv/snapper-gui
Snapper-gui尚在開發階段,功能不甚完善,有關介紹請參考另外一篇博文:技術預覽:利用Snapper GUI管理系統快照數據庫
SUSE快照方案爲:
- YaST/Zypper + Snapper + btrfs或thin-provisioning LVM
經過提供了YaST/Zypper界面化操做和Snapper命令行;centos
CentOS快照方案爲:
- Snapper + btrfs或thin-provisioning LVM
提供Snapper命令行操做,用戶能夠體驗一下如何使用開源的Snapper GUI做爲上層界面,但功能尚不完善。服務器
首先,咱們以btrfs文件系統爲例,來利用Snapper建立快照;
若是想爲普通的btrfs文件系統建立快照,須要先建立並掛載btrfs文件系統:markdown
建立btrfs文件系統app
# mkfs.btrfs /dev/sdb
掛載btrfs文件系統
# mount /dev/sdb /mnt
若是想利用快照保護根分區,須要在安裝時選擇btrfs做爲根分區,由於CentOS 7 根分區默認是xfs文件系統,因此在安裝過程選擇btrfs做爲根分區默認文件系統便可。
建立快照時,快照與原始點都會指向文件系統中的同一個塊。所以一開始時快照並不佔用額外的磁盤空間。但若是修改了原始文件系統中的數據,則會複製已更改的數據塊,同時將舊的數據塊做爲快照保留。所以,快照就將佔用與已修改數據相同的空間。因此長此以往,分配給快照的空間便會不斷增加。所以,包含快照的分區須要比常規分區大才行。確切的空間大小主要取決於要保留的快照數量以及數據更改量。通常來講,應考慮使用兩倍於常規使用磁盤空間的空間大小。
選擇「I will configure partitioning」,點擊「Done」進入下一步:
點擊「Click here to creat them automatically」自動添加,或者點擊「+」手動添加:
修改根分區的文件系統類型爲Btrfs:
完成以上,安裝後生成的根分區文件系統以下:
執行如下命令安裝snapper:
# yum install snapper
安裝完成之後檢查一下,確保安裝成功
# rpm -qa | grep snapper
接下來一步步建立快照,Snapper須要爲每個卷建立一個配置文件,配置文件定義了快照的建立和維護規則,執行如下命令爲咱們的根文件系統建立一個名爲btrfs_config的配置文件:
// snapper -c config_name create-config -f btrfs /mount-point # snapper -c btrfs_config create-config -f btrfs /
建立的配置文件通常是從/etc/snapper/config-templates/default拷貝,並在/etc/snapper/configs/文件夾下生成,咱們能夠看到新生成的配置文件以下,目前配置文件先採用默認設置,暫不修改其內容:
# ls /etc/snapper/configs/ btrfs_config
儘管不一樣的快照自己並沒有區別,但根據生成快照的不一樣情形將它們分紅如下三類:
- pre
修改前的文件系統快照。每一張前快照都有一個對應的post快照。
post
修改後的文件系統快照。每一張後快照都有一個對應的pre快照。
single
獨立的快照。目的之一就是爲了自動建立每小時快照。此爲建立快照時的默認類型。
能夠單首創建pre和post快照,好比咱們先建立一個pre快照, -p的含義是建立快照的同時,打印出快照編號:
# snapper -c btrfs_config create -t pre -p 1 # snapper -c btrfs_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+---------------------------------+------+----------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Wed 08 Jun 2016 11:28:09 AM EDT | root | | |
以後咱們可能會執行一些系統操做,好比咱們安裝了一個軟件包,根分區文件系統內容會有一些變化
yum install net-tools
咱們能夠在建立一個post快照:
# snapper -c btrfs_config create -t post --pre-num 1 -p 2 # snapper -c btrfs_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+---------------------------------+------+----------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Wed 08 Jun 2016 11:28:09 AM EDT | root | | | post | 2 | 1 | Wed 08 Jun 2016 12:26:19 PM EDT | root | | |
編號爲1和2的快照就組成了一個快照對,記錄了在安裝net-tools先後的根分區變化,經過如下命令查看這些變化:
# snapper -c btrfs_config status 1..2 +..... /usr/bin/netstat +..... /usr/lib/systemd/system/arp-ethers.service +..... /usr/sbin/arp +..... /usr/sbin/ether-wake +..... /usr/sbin/ifconfig +..... /usr/sbin/ipmaddr +..... /usr/sbin/iptunnel +..... /usr/sbin/mii-diag +..... /usr/sbin/mii-tool +..... /usr/sbin/nameif +..... /usr/sbin/plipconfig +..... /usr/sbin/route +..... /usr/sbin/slattach +..... /usr/share/doc/net-tools-2.0 +..... /usr/share/doc/net-tools-2.0/COPYING (略...) +..... /usr/share/man/pt/man8/route.8.gz c..... /var/cache/yum/x86_64/7/timedhosts c..... /var/lib/rpm/Basenames c..... /var/lib/rpm/Dirnames (略...) +..... /var/lib/yum/yumdb/n/6a2a1ded37167c106d2be6dbec20003079f37cf6-net-tools-2.0-0.17.20131004git.el7-x86_64/var_infra +..... /var/lib/yum/yumdb/n/6a2a1ded37167c106d2be6dbec20003079f37cf6-net-tools-2.0-0.17.20131004git.el7-x86_64/var_uuid c..... /var/log/audit/audit.log c..... /var/log/cron c..... /var/log/messages c..... /var/log/snapper.log c..... /var/log/yum.log
「+」號表明新增文件,「-」表明刪除文件,「c」表明修改了文件,與diff語法相同。
建立pre類型的快照並打印快照編號,該快照標記爲important,且爲其添加描述以方便之後查詢:
# snapper create --type pre --print-number --description "Before install net-tools"--userdata "important=yes"
建立post類型的快照,其對應的pre快照編號爲1,該快照標記爲important,且爲其添加描述以方便之後查詢:
# snapper create --type post --pre-number 1 --description "After install net-tools" --userdata "important=yes"
以上操做也能夠合併成一個命令:
# snapper -c btrfs_config create --command "yum install net-tools"
因爲默認配置中,啓動了自動快照功能,自動記錄整點的快照,也即類型爲single的timeline快照,咱們能夠看到Snapper自動生成了一個標號爲3的快照(注:若是每小時生成一個快照,過不了多久咱們的系統就會被快照佔滿,就會因存儲空間不足而崩潰,因此不可能無限制的生成快照,這就是配置文件中快照清理規則的做用了,僅會保留有限個數的當年、當月、當日快照,後面會詳細講解,這裏僅作預覽。)
# snapper -c btrfs_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+----+-------+---------------------------------+------+----------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Wed 08 Jun 2016 01:15:16 PM EDT | root | | | post | 2 | 1 | Wed 08 Jun 2016 01:15:21 PM EDT | root | | | single | 3 | | Wed 08 Jun 2016 02:01:01 PM EDT | root | timeline | timeline |
經過以上快照列表能夠看到,每一張快照均由快照自己以及一些元數據組成。建立快照時,須要指定元數據。修改快照意味着只能更改其元數據,快照內容是沒法更改的。每一張快照使用的元數據以下:
Type: 快照類型,有關詳細信息請參見快照類型,不能更改; #: 快照的惟一編號,不能更改; Pre #: 指定相應前快照的編號,僅適用於post,不能更改; Date: 建立快照的時間戳 User: 建立快照的用戶 Cleanup: 清理規則 Description: 快照的說明。 Userdata: 擴展的說明。可以使用逗號分隔的「鍵=值」列表格式指定自定義數據「reason=testing, project=foo」,此字段也可用於將快照標記爲重要 (important=yes) 以及列出建立快照的用戶 (user=tux)。
顯示指定快照中發生更改的一系列文件,例如,運行如下命令列出文件/var/log/yum.log的標號爲0的當前版本與標號爲2的快照中文件版本的差別,若是不指定文件名,則會顯示全部文件的差別:
# snapper -c btrfs_config diff 1..0 /var/log/yum.log --- /.snapshots/1/snapshot/var/log/yum.log 2016-06-08 13:01:51.977879395 -0400 +++ /var/log/yum.log 2016-06-08 13:47:50.520081926 -0400 @@ -3,3 +3,12 @@ Jun 08 08:15:18 Installed: snapper-libs-0.1.7-10.el7.x86_64 Jun 08 08:15:18 Installed: boost-serialization-1.53.0-25.el7.x86_64 Jun 08 08:15:19 Installed: snapper-0.1.7-10.el7.x86_64 +Jun 08 13:15:21 Installed: net-tools-2.0-0.17.20131004git.el7.x86_64 +Jun 08 13:47:47 Updated: 7:device-mapper-1.02.107-5.el7_2.2.x86_64 +Jun 08 13:47:47 Updated: 7:device-mapper-libs-1.02.107-5.el7_2.2.x86_64 +Jun 08 13:47:47 Installed: 7:device-mapper-event-libs-1.02.107-5.el7_2.2.x86_64 +Jun 08 13:47:48 Installed: 7:device-mapper-event-1.02.107-5.el7_2.2.x86_64 +Jun 08 13:47:48 Installed: 7:lvm2-libs-2.02.130-5.el7_2.2.x86_64 +Jun 08 13:47:48 Installed: libaio-0.3.109-13.el7.x86_64 +Jun 08 13:47:48 Installed: device-mapper-persistent-data-0.5.5-1.el7.x86_64 +Jun 08 13:47:50 Installed: 7:lvm2-2.02.130-5.el7_2.2.x86_64
若是是新增文件,則僅會顯示:
# snapper -c btrfs_config diff 1..0 /usr/bin/netstat Binary files /.snapshots/1/snapshot/usr/bin/netstat and /usr/bin/netstat differ
運行如下命令列出文件/var/log/yum.log在標號爲1和2的快照中文件版本的差別:
# snapper -c btrfs_config diff 1..2 /var/log/yum.log (略...)
經過以上命令能夠看到,Snapper 的快照存儲在當前子卷根目錄的 .snapshots 隱藏文件夾中。好比當前子卷是 /,那麼就是 /.snapshots,若是是 /mnt/vol1,那就是 /mnt/vol1/.snapshots。快照始終存放在建立快照的那個分區或子卷中,沒法將快照存儲到其餘分區或子卷。
要恢復一個或多個文件,請運行
# snapper -c CONFIG -v undochange SNAPSHOT_ID..0 FILENAME1 FILENAME2
若是沒有指定文件名,則會恢復全部已更改的文件,能夠經過如下命令撤銷以上操做,恢復系統狀態到快照1:
# snapper -c btrfs_config undochange 1..2
能夠經過如下命令刪除快照:
# snapper -c btrfs_config delete 1 2 # snapper -c btrfs_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+------+------+---------+-------------+--------- single | 0 | | | root | | current |
提示: 舊快照佔用的磁盤空間更多!!!
若是您要刪除快照以釋放硬盤上的空間,請務必先刪除舊快照。快照生成的時間越長,其佔用的空間就越大。經過配置文件設置自動刪除快照。有關詳細信息,請參見清理算法。
除了在 Btrfs 文件系統上生成快照以外,快照程序還支持在 XFS、Ext4 或 Ext3 格式的精簡LVM 卷(不支持在常規 LVM 捲上生成快照)上生成快照。
以系統上的/dev/sdb、/dev/sdc爲例,首先分別建立分區/dev/sdb一、/dev/sdc1:
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x962bc2ec. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p Partition number (1-4, default 1): First sector (2048-10485759, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): Using default value 10485759 Partition 1 of type Linux and of size 5 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
查看建立好的分區以下:
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 30G 0 disk +-sda1 8:1 0 500M 0 part /boot +-sda2 8:2 0 2G 0 part [SWAP] +-sda3 8:3 0 27.5G 0 part /home sdb 8:16 0 5G 0 disk +-sdb1 8:17 0 5G 0 part sdc 8:32 0 5G 0 disk +-sdc1 8:33 0 5G 0 part sr0 11:0 1 1024M 0 rom
建立PV:
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created
建立VG:
# vgcreate vg_thin /dev/sdb1 /dev/sdc1 Volume group "vg_thin" successfully created
建立精簡池:
# lvcreate -L 5G --thinpool thin_pool vg_thin Logical volume "thin_pool" created.
查看精簡LVM,能夠看到Allocated pool data爲0,說明thin_pool還沒有實際佔用磁盤空間:
# lvdisplay /dev/vg_thin/thin_pool --- Logical volume --- LV Name thin_pool VG Name vg_thin LV UUID 3811nd-ltYk-XWqO-mxog-Gq82-38do-BywBfY LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-06-08 14:05:58 -0400 LV Pool metadata thin_pool_tmeta LV Pool data thin_pool_tdata LV Status available # open 0 LV Size 5.00 GiB Allocated pool data 0.00% Allocated metadata 0.68% Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
建立精簡卷thin_vol一、thin_vol二、thin_vol3,忽略警告,能夠看到三個2G的精簡卷相加已經大於5G的精簡池thin_pool大小,可是建立仍然成功了,至於爲何能夠超額分配,請參考自動精簡配置(Thin provisioning )介紹
# lvcreate -V 2G --thin -n thin_vol1 vg_thin/thin_pool Logical volume "thin_vol1" created. # lvcreate -V 2G --thin -n thin_vol2 vg_thin/thin_pool Logical volume "thin_vol2" created. # lvcreate -V 2G --thin -n thin_vol3 vg_thin/thin_pool 6 GiB)! For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100. Logical volume "thin_vol3" created.
建立文件系統:
# mkfs.ext4 /dev/vg_thin/thin_vol1
掛載文件系統:
# mkdir /mnt/vol1 # mount /dev/vg_thin/thin_vol1 /mnt/vol1
爲了在精簡 LVM 捲上使用快照程序,首先爲其建立快照配置文件。在 LVM 上要使用 –fstype=lvm(filesystem) 指定文件系統。文件系統的有效值爲 ext三、etx4 或 xfs。以下:
# snapper -c lvm_config create-config -f "lvm(ext4)" /mnt/vol1/ # ls /etc/snapper/configs/ btrfs_config lvm_config # snapper -c lvm_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+------+------+---------+-------------+--------- single | 0 | | | root | | current |
# snapper -c lvm_config create --command "echo Hello > /mnt/vol1/hello_file" # snapper -c lvm_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+---------------------------------+------+---------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Wed 08 Jun 2016 02:41:07 PM EDT | root | | | post | 2 | 1 | Wed 08 Jun 2016 02:41:07 PM EDT | root | | |
# snapper -c lvm_config diff 1..2 --- /mnt/vol1/.snapshots/1/snapshot/hello_file 1969-12-31 19:00:00.000000000 -0500 +++ /mnt/vol1/.snapshots/2/snapshot/hello_file 2016-06-08 14:41:07.860147086 -0400 @@ -0,0 +1 @@ +Hello
默認狀況下,快照程序只能由 root 用戶使用。但在特定狀況下,某些組或用戶也須要建立快照或經過還原至快照來撤銷更改:
爲 ALLOW_USERS 和(或)ALLOW_GROUPS 設置值,分別爲用戶和(或)組授予權限。多個條目須要使用空格 分隔。例如,要爲用戶 thin_user 和 thin_group 授予權限,可運行:
# snapper -c web_data set-config "ALLOW_USERS=thin_user" "ALLOW_GROUPS=thin_group"
也能夠經過直接修改配置文件實現,此時,指定的用戶和(或)組即可以使用指定的快照程序配置。您可使用 list 命令對其進行測試,例如:
# thin_user:~ > snapper -c lvm_config list
基本操做的講解到此結束,下面講一下一些高級配置:
以上咱們都是採用Snapper自帶的默認設置/etc/snapper/config-templates/default建立配置文件,該默認配置文件通過了多方面的考慮,適合多數使用狀況。用戶也能夠根據本身的須要對如何建立自動快照以及如何保留快照進行自定義配置。
每一個配置都包含一系列選項,這些選項能夠經過命令行進行修改:
# snapper -c btrfs_config set-config "TIMELINE_CREATE=yes"
FSTYPE
分區的文件系統類型:btrfs、lvm(ext3)、lvm(ext4)、lvm(xfs),快照類型不可更改。
SUBVOLUME
分區或子卷生成快照的安裝點。不可更改。
BACKGROUND_COMPARISON
定義在建立先後快照後是否要在後臺對他們進行比較。默認值爲 「yes」。
時間線快照默認會啓用,能夠直接修改配置文件裏的TIMELINE_CREATE爲yes/no,也能夠經過如下命令啓停:
- 啓用
# snapper -c btrfs_config set-config "TIMELINE_CREATE=yes"
禁用
# snapper -c btrfs_config set-config "TIMELINE_CREATE=no"
快照會佔用磁盤空間。爲了防止磁盤空間不足進而致使系統中斷,舊的快照會自動刪除:
Snapper提供有三種清理舊快照的算法。這些算法以天天計劃做業方式執行。您能夠定義要在 Snapper 配置中保留的不一樣類型的快照數:
number
當達到某一快照計數時將刪除舊快照。
timeline
將刪除超過必定時限的舊快照,但保留必定量的每小時、天天、每個月和每一年快照。
empty-pre-post
將刪除無差別的先後快照對。
Snapper經過如下配置選項控制快照的清理規則:
TIMELINE_CLEANUP
定義當快照數量超出 TIMELINE_LIMIT_* 選項指定的數值同時快照超出 TIMELINE_MIN_AGE 中指定的時限時是否自動刪除舊快照。有效值:yes、no,默認值爲 「yes」。
TIMELINE_CREATE
若是設置爲 yes,便會每小時建立一個快照。這是目前惟一一種能夠自動建立快照的方式,所以強烈建議將其設置爲 yes。有效值:yes、no,默認值爲 「yes」。
TIMELINE_MIN_AGE
定義快照在自動刪除前必須保留的最小時限(以秒爲單位)。
默認值爲 「1800」。
TIMELINE_LIMIT_DAILY、TIMELINE_LIMIT_HOURLY、TIMELINE_LIMIT_MONTHLY、 TIMELINE_LIMIT_YEARLY
按小時、天、月、年保留的快照數量。每一項的默認值均爲 「10」。
TIMELINE_CLEANUP=」yes」
TIMELINE_CREATE=」yes」
TIMELINE_LIMIT_DAILY=」10」
TIMELINE_LIMIT_HOURLY=」10」
TIMELINE_LIMIT_MONTHLY=」10」
TIMELINE_LIMIT_YEARLY=」10」
TIMELINE_MIN_AGE=」1800」
每小時:最近建立的十張快照。
天天:保留最近十天內天天建立的首張快照。
每個月:保留最近十個月內每個月的最後一天建立的首張快照。
每一年:保留最後十年內每一年的最後一天建立的首張快照。
此示例配置可以實現按小時生成將自動清理的快照。TIMELINE_MIN_AGE和 TIMELINE_LIMIT_* 始終會同時進行評估。在本示例中,快照刪除前的最小保留時限設置爲 30 分鐘(1800 秒)。由於咱們會每小時建立一次快照,因此確保了只會保留最近的快照。若是 TIMELINE_LIMIT_DAILY 設置爲非零值,則表示還會保留當天的首張快照。
NUMBER_CLEANUP
定義當快照總數超出 NUMBER_LIMIT 中指定的數值,同時快照超出 NUMBER_MIN_AGE 中指定的時限時,是否自動刪除舊的快照。有效值:yes、no,默認值爲 「yes」。
NUMBER_LIMIT
在 NUMBER_CLEANUP 設置爲 yes 時,定義要保留的沒有標記爲重要的安裝快照對和管理快照對的數量。所保留的會是最新的那些快照。默認值爲 「50」。
NUMBER_LIMIT_IMPORTANT
在 NUMBER_CLEANUP 設置爲 yes 時,定義要保留的標記爲重要的快照對數。所保留的會是最新的那些快照。默認值爲 「10」。
NUMBER_MIN_AGE
定義快照對在自動刪除前必須保留的最小時限(以秒爲單位)。默認值爲 「1800」,即30分鐘。
注: 限制和時限
NUMBER_LIMIT、NUMBER_LIMIT_IMPORTANT 和 NUMBER_MIN_AGE 始終都會評估。只有同時符合所有條件纔會刪除快照。若是想不考慮時限而始終保留必定數量的快照,則可將 NUMBER_MIN_AGE 設置爲 0。另外,若是快照超過必定時限以後不想再保留,能夠將 NUMBER_LIMIT 和 NUMBER_LIMIT_IMPORTANT 設置爲 0。
EMPTY_PRE_POST_CLEANUP
若是設置爲 yes,系統會刪除先後快照相同的快照對。默認值爲 「yes」。
EMPTY_PRE_POST_MIN_AGE
定義先後快照相同的快照對在自動刪除以前必須保留的最短時限(以秒爲單位)。默認值爲 「1800」。
snapper 有多個子命令可用於管理現有的配置。您能夠列出、顯示這些配置,也能夠對它們進行刪除和修改:
使用如下命令顯示全部現有的配置:
# snapper list-configs Config | Subvolume -------------+---------- btrfs_config | / lvm_config | /mnt/vol1
使用 snapper -c CONFIG get-config 子命令能夠顯示指定的配置。CONFIG 應替換爲執行 snapper list-configs 命令後所顯示的某個配置名稱。請參見配置數據以瞭解有關配置選項的更多信息。
使用如下命令能夠刪除配置。CONFIG 應替換爲執行 snapper list-configs 命令後所顯示的某個配置名稱:
# snapper -c CONFIG delete-config
使用如下命令能夠修改指定配置中的選項。CONFIG 應替換爲執行 snapper list-configs 命令後所顯示的某個配置名稱。OPTION 和 VALUE 的可能值可參見配置數據:
# snapper -c CONFIG set-config OPTION=VALUE
在建立快照時並無能確保數據一致性的機制。若是在建立快照的同時寫入某個文件(例如數據庫),將致使文件損壞或寫入不完整。恢復此類文件會產生問題。並且,有些系統文件(例如/etc/mtab)甚至永遠都沒法恢復。所以==強烈建議==您要始終仔細查看已更改文件及其差別的列表。只恢復您要還原的操做真正包含的文件。
用戶可使用快照程序修改說明、清理算法以及快照的用戶數據,其餘元數據均沒法更改。
使用snapper list 查看全部快照及其編號
# snapper -c btrfs_config list
修改 btrfs_cconfig 配置的第 10 張快照的元數據,將清理算法設置爲 timeline:
# snapper -c btrfs_config modify --cleanup-algorithm "timeline" 10
修更名爲 btrfs_cconfig 配置的第 12 張快照的元數據,設置新的說明,並取消設置清理算法:
# snapper --config btrfs_config modify --description "daily backup" -cleanup-algorithm "timeline" 120
一些文件主要用來保存系統信息,例如/etc/mtab,這類文件不但願被快照操做影響到,Snapper容許經過/etc/snapper/filters/*.txt 指定過濾項,並在快照操做中忽略指定文件或文件夾的變化。
例如咱們的btrfs中咱們不但願快照跟蹤/var、/tmp等,能夠添加到filters,這樣在之後建立的快照中就看到不到關於/var、/tmp的快照跟蹤了。
SUSE還支持從快照啓動操做系統,而CentOS尚未引入該功能,我試用了一下沒有成功,不知道啥緣由,之後有精力再研究吧。。。曬幾張截圖:
1
2
3
4