
在 Linux 上建立檔案系統快照以執行復原的功能是過去使用者常常要求的一項功能。現在,Snapper 與 Btrfs 檔案系統或簡易佈建的 LVM 磁碟區合用,填補了這個空白。
Btrfs 是一個適用於 Linux 的全新寫時複製檔案系統,它支援子磁碟區 (每個實體分割區中的一或多個可獨立掛接的檔案系統) 的檔案系統快照 (子磁碟區於特定時間點之狀態的副本)。快照在使用 XFS、Ext4 或 Ext3 格式化之簡易佈建的 LVM 磁碟區上同樣受支援。Snapper 可讓您建立和管理這些快照。它包含一個指令行和一個 YaST 介面。自 SUSE Linux Enterprise Server 12 開始,還可以從 Btrfs 快照進行開機。如需詳細資訊,請參閱第 6.3 節 「透過從快照開機來執行系統復原」。
您可以使用 Snapper 執行以下任務︰
復原 zypper 和 YaST 所做的系統變更。如需詳細資料,請參閱第 6.2 節 「使用 Snapper 復原變更」。
從之前的快照還原檔案。如需詳細資料,請參閱第 6.2.2 節 「使用 Snapper 還原檔案」。
透過從快照開機來復原系統。如需詳細資料,請參閱第 6.3 節 「透過從快照開機來執行系統復原」。
手動建立即時快照並管理現有的快照。如需詳細資料,請參閱第 6.5 節 「手動建立和管理快照」。
SUSE Linux Enterprise Desktop 上的 Snapper 設定為充當系統變更的「恢復與復原工具」。依預設,SUSE Linux Enterprise Desktop 的根分割區 (/) 使用 Btrfs 格式。如果根分割區 (/) 足夠大 (大約超過 16GB),則會自動啟用快照建立功能。預設不會在 / 外的分割區上建立快照。
建立快照時,快照和原件都會指向檔案系統中的同一區塊。因此,快照最初並不佔用額外的磁碟空間。如果原始檔案系統中的資料經過修改,則會複製變更後的資料區塊,同時保留快照的舊資料區塊。因此,快照便會佔用與已修改資料相同的空間。這樣,經過一段時間之後,快照配置的空間不斷增大。因而,從包含快照的 Btrfs 檔案系統刪除檔案可能無法釋放磁碟空間!
快照始終位於建立快照所在的同一分割區或子磁碟區上。而無法儲存到其他分割區或子磁碟區上。
因此,包含快照的分割區必須比「一般」分割區更大。確切大小很大程度上取決於保留的快照數和資料修改量。一般來說,您應該考慮使用比平常大兩倍的大小。為了防止磁碟上的空間耗盡,系統會自動清理舊快照。如需詳細資訊,請參閱第 6.1.3.4 節 「控制快照歸檔」。
雖然快照本身在技術上並無不同,但是我們會根據建立的場合將快照分成三類。
每小時建立一個快照。系統會自動刪除舊快照。依預設,系統會保留過去十天、十個月或十年的第一個快照。時間軸快照預設已停用。
每當使用 YaST 或 Zypper 安裝一個或多個套件時,均會建立一對快照︰安裝開始前建立一個 (「前」),安裝結束後建立另一個 (「後」)。如果重要系統元件 (如核心) 已經安裝,則快照對會標示為重要 (important=yes)。系統會自動刪除舊快照。依預設,系統會保留最近十個重要快照以及最近十個「一般」快照 (包括管理快照)。預設系統會啟用安裝快照。
每當您使用 YaST 管理系統時,均會建立一對快照︰啟動 YaST 模組時建立一個 (「前」),關閉模組時建立另一個 (「後」)。系統會自動刪除舊快照。依預設,系統會保留最近十個重要快照以及最近十個「一般」快照 (包括安裝快照)。預設系統會啟用管理快照。
出於不同原因,需要將一些目錄從快照中排除。下列清單顯示排除的所有目錄︰
/boot/grub2/i386-pc、/boot/grub2/x86_64-efi、/boot/grub2/powerpc-ieee1275、/boot/grub2/s390x-emu
不支援對開機載入程式組態進行復原。上面列出的目錄是架構專屬目錄。前兩個目錄存在於 AMD64/Intel 64 機器上,後兩個目錄分別存在於 IBM POWER 和 IBM z Systems 上。
/home
如果 /home 不在獨立的分割區上,系統會將其排除以避免在復原時發生資料遺失。
/opt、/var/opt
協力廠商產品通常會安裝到 /opt。系統會將該目錄排除以避免在復原時解除安裝這些應用程式。
/srv
包含 Web 和 FTP 伺服器的資料。系統會將該目錄排除以避免在復原時發生資料遺失。
/tmp、/var/tmp、/var/cache、/var/crash
包含暫存檔案和快取的所有目錄均會從快照中排除。
/usr/local
在手動安裝軟體時會用到此目錄。系統會將該目錄排除,以免在復原時解除安裝這些安裝的軟體。
/var/lib/libvirt/images
使用 libvirt 管理之虛擬機器影像的預設位置。已排除,以確定復原期間虛擬機器影像不會取代為舊版本。依預設,此子磁碟區是使用寫入時不複製選項建立的。
/var/lib/mailman、/var/spool
系統會排除包含郵件或郵件佇列的目錄以避免復原之後遺失郵件。
/var/lib/named
包含 DNS 伺服器的區域資料。從快照中排除該目錄是為了確保名稱伺服器在復原之後可以運作。
/var/lib/mariadb、/var/lib/mysql、/var/lib/pgqsl
這些目錄包含資料庫資料。依預設,這些子磁碟區是使用寫入時不複製選項建立的。
/var/log
記錄檔案位置。從快照中排除該目錄是為了在復原損毀系統之後能夠對記錄檔案進行分析。
SUSE Linux Enterprise Desktop 隨附合理的預設設定,該設定適合大多數使用案例。不過,您可以根據自己的需求對建立自動快照以及快照保留的方方面面進行設定。
三種快照類型 (時間軸、安裝、管理) 均可獨立啟用或停用。
啟用:
snapper-c root set-config "TIMELINE_CREATE=yes"
停用:
snapper -c root set-config "TIMELINE_CREATE=no"
預設會啟用時間軸快照,根分割區除外。
啟用:
安裝套件 snapper-zypp-plugin
停用:
解除安裝套件 snapper-zypp-plugin
預設系統會啟用安裝快照。
啟用:
在 /etc/sysconfig/yast2 中將 USE_SNAPPER 設定為 yes。
停用:
在 /etc/sysconfig/yast2 中將 USE_SNAPPER 設定為 no。
預設系統會啟用管理快照。
使用 YaST 或 Zypper 安裝套件時所建立的快照對由 snapper-zypp-plugin 處理。何時建立快照由 XML 組態檔案 /etc/snapper/zypp-plugin.conf 定義。依預設,該檔案如下所示︰
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w"1 important="true"2>kernel-*3</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <solvable match="w">*</solvable>4 10 </solvables> 11 </snapper-zypp-plugin-conf>
match 屬性定義模式是 Unix 外圍程序樣式的萬用字元 ( | |
如果符合指定模式並且相應的套件標示為重要 (如核心套件),則該快照也會標示為重要。 | |
用於比對套件名稱的模式。根據 | |
此行無條件符合所有套件。 |
使用此組態時,只要安裝套件即會建立快照對 (第 9 行)。在安裝標示為重要的核心、dracut、glibc、systemd 或 udev 套件時,快照對也會標示為重要 (第 4 行至第 8 行)。系統會評估所有規則。
要停用規則,請使用 XML 備註將其刪除或停用。若想避免系統在每次安裝套件時都建立快照對,可將第 9 行設為備註︰
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w" important="true">kernel-*</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <!-- <solvable match="w">*</solvable> --> 10 </solvables> 11 </snapper-zypp-plugin-conf>
支援在 / 階層下建立新的子磁碟區並永久掛接該磁碟區。但是,您需確定不要在快照中建立新子磁碟區,否則在復原後您不再能刪除快照。
SUSE Linux Enterprise Desktop 上設定了 /@/ 子磁碟區,該子磁碟區用做永久子磁碟區 (例如 /opt、/srv、/home 等) 的獨立根目錄。您建立和永久掛接的任何新子磁碟區都需要在這個初始根檔案系統中建立。
若要這樣做,請執行以下指令。在此範例中,從 /dev/sda2 建立了一個新子磁碟區 /usr/important。
mount /dev/sda2 -o subvol=@ /mnt btrfs subvolume create /mnt/usr/important umount /mnt
/etc/fstab 中的相應項目需類似於:
/dev/sda2 /usr/important btrfs subvol=@/usr/important 0 0
快照會佔用磁碟空間。為了防止磁碟用盡而導致系統中斷,會自動刪除舊快照。預設會保留最多 10 個重要的安裝快照與管理快照,以及最多 10 個普通的安裝快照與管理快照。如果這些快照佔用的空間超過根檔案系統大小的 50%,則會刪除其他快照。永遠會至少保留 4 個重要快照和 2 個普通快照。
如需如何變更這些值的指示,請參閱第 6.4.1 節 「管理現有的組態」。
除了針對 Btrfs 檔案系統建立快照之外,Snapper 還支援針對使用 XFS、Ext4 或 Ext3 格式化之簡易佈建的 LVM 磁碟區建立快照 (但不支援對一般 LVM 磁碟區建立快照)。如需 LVM 磁碟區的詳細資訊以及設定指示,請參閱Section 7.2, “LVM Configuration”。
若要對簡易佈建的 LVM 磁碟區使用 Snapper,您需要為它建立一個 Snapper 組態。在 LVM 上,需要使用 --fstype=lvm(檔案系統) 指定檔案系統。檔案系統 的有效值有 ext3、etx4 或 xfs。範例:
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
您可以依第 6.4.1 節 「管理現有的組態」 中所述根據需求調整此組態。
SUSE Linux Enterprise Desktop 上的 Snapper 已預先設定為充當復原 zypper 和 YaST 所做變更的工具。要充當復原工具,Snapper 設定為在每次執行 zypper 和 YaST 的前後建立一對快照。此外,Snapper 還可讓您還原遭意外刪除或修改的系統檔案。出於此目的需要啟用根分割區的時間軸快照 — 如需詳細資訊,請參閱第 6.1.3.1 節 「停用/啟用快照」。
預設會為根分割區及其子磁碟區設定上述的自動快照。為了讓這些快照可供其他分割區 (例如 /home) 使用,您可以建立自訂組態。
使用快照還原資料時,您必須知道 Snapper 可以處理兩種完全不同的案例。
當如下文所述復原變更時,系統會比較兩個快照,並復原這兩個快照之間的變更。使用此方法還允許明確選取要還原的檔案。
當如第 6.3 節 「透過從快照開機來執行系統復原」中所述執行復原時,系統會重設回建立快照當時的狀態。
復原變更時,還可以將快照與目前系統進行比較。根據此類比較還原全部檔案時,其效果等同於執行復原。但是,還是建議使用第 6.3 節 「透過從快照開機來執行系統復原」中所述的方法復原,因為它的速度更快並且可讓您在執行復原之前複查系統。
在建立快照時,沒有任何一種機制可確保資料的一致性。如果在建立快照的同時寫入檔案 (如資料庫),則將導致檔案損毀或部分寫入。還原此類檔案將會導致問題。此外,有些系統檔案 (例如 /etc/mtab) 是絕對不能還原的。因此,強烈建議您始終仔細檢閱已變更檔案及其差異的清單。請只還原真正屬於您要執行回復的檔案。
如果您在安裝期間使用 Btrfs 設定根分割區,系統將會自動安裝 Snapper (已預先設定為用於復原 YaST 或 Zypper 所做的變更)。每當您啟動 YaST 模組或 Zypper 交易時,都會建立兩個快照:擷取啟動模組之前檔案系統狀態的「前快照」,以及完成模組之後的「後快照」。
您可以使用 YaST Snapper 模組或 snapper 指令行工具,透過從「前快照」還原檔案來復原 YaST/Zypper 所做的變更。比較兩個快照時,這些工具還可讓您查看哪些檔案已經過變更。此外,您還可以顯示某檔案的兩個版本之間的差異 (diff)。
從 YaST 的區段或透過輸入 yast2 snapper 啟動模組。
請確定設為。除非您手動新增了自己的 Snapper 組態,否則應始終如此設定。
從清單中選擇一對前快照和後快照。YaST 與 Zypper 快照對都屬於類型。在欄中,YaST 快照標示為 zypp(y2base),Zypper 快照標示為 zypp(zypper)。
按一下以開啟兩個快照之間不同的檔案清單。
檢閱檔案清單。若要顯示檔案的前版本與後版本之間的「差異」,請從清單中選取它。
要還原一個或多個檔案,請勾選相應的核取方塊來選取相關的檔案或目錄。按一下,然後按一下確認該動作。
要還原單個檔案,請按一下其名稱以啟動差異比對檢視。按一下,然後按一下確認您的選擇。
snapper 指令復原變更 #
執行 snapper list -t pre-post 取得 YaST 和 Zypper 快照的清單。在欄中,YaST 快照標示為 yast 模組名稱;Zypper 快照標示為 zypp(zypper)。
root # snapper list -t pre-post
Pre # | Post # | Pre Date | Post Date | Description
------+--------+-------------------------------+-------------------------------+--------------
311 | 312 | Tue 06 May 2014 14:05:46 CEST | Tue 06 May 2014 14:05:52 CEST | zypp(y2base)
340 | 341 | Wed 07 May 2014 16:15:10 CEST | Wed 07 May 2014 16:15:16 CEST | zypp(zypper)
342 | 343 | Wed 07 May 2014 16:20:38 CEST | Wed 07 May 2014 16:20:42 CEST | zypp(y2base)
344 | 345 | Wed 07 May 2014 16:21:23 CEST | Wed 07 May 2014 16:21:24 CEST | zypp(zypper)
346 | 347 | Wed 07 May 2014 16:41:06 CEST | Wed 07 May 2014 16:41:10 CEST | zypp(y2base)
348 | 349 | Wed 07 May 2014 16:44:50 CEST | Wed 07 May 2014 16:44:53 CEST | zypp(y2base)
350 | 351 | Wed 07 May 2014 16:46:27 CEST | Wed 07 May 2014 16:46:38 CEST | zypp(y2base)
使用下列指令取得快照對的已變更檔案清單:snapper status 前..後。含有內容變更的檔案以 標示,新增的檔案以 標示,刪除的檔案以 標示。
root # snapper status 350..351
+..... /usr/share/doc/packages/mikachan-fonts
+..... /usr/share/doc/packages/mikachan-fonts/COPYING
+..... /usr/share/doc/packages/mikachan-fonts/dl.html
c..... /usr/share/fonts/truetype/fonts.dir
c..... /usr/share/fonts/truetype/fonts.scale
+..... /usr/share/fonts/truetype/みかちゃん-p.ttf
+..... /usr/share/fonts/truetype/みかちゃん-pb.ttf
+..... /usr/share/fonts/truetype/みかちゃん-ps.ttf
+..... /usr/share/fonts/truetype/みかちゃん.ttf
c..... /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4
c..... /var/lib/rpm/Basenames
c..... /var/lib/rpm/Dirnames
c..... /var/lib/rpm/Group
c..... /var/lib/rpm/Installtid
c..... /var/lib/rpm/Name
c..... /var/lib/rpm/Packages
c..... /var/lib/rpm/Providename
c..... /var/lib/rpm/Requirename
c..... /var/lib/rpm/Sha1header
c..... /var/lib/rpm/Sigmd5
若要顯示特定檔案的差異,請執行 snapper diff 前..後 檔案名稱。如果不指定檔案名稱,將會顯示所有檔案的差異。
root # snapper diff 350..351 /usr/share/fonts/truetype/fonts.scale
--- /.snapshots/350/snapshot/usr/share/fonts/truetype/fonts.scale 2014-04-23 15:58:57.000000000 +0200
+++ /.snapshots/351/snapshot/usr/share/fonts/truetype/fonts.scale 2014-05-07 16:46:31.000000000 +0200
@@ -1,4 +1,4 @@
-1174
+1486
ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso10646-1
ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso8859-1
[...]
若要還原一或多個檔案,請執行 snapper -v undochange 前..後 檔案名稱。如果不指定檔案名稱,將會還原所有已變更的檔案。
root # snapper -v undochange 350..351
create:0 modify:13 delete:7
undoing change...
deleting /usr/share/doc/packages/mikachan-fonts
deleting /usr/share/doc/packages/mikachan-fonts/COPYING
deleting /usr/share/doc/packages/mikachan-fonts/dl.html
deleting /usr/share/fonts/truetype/みかちゃん-p.ttf
deleting /usr/share/fonts/truetype/みかちゃん-pb.ttf
deleting /usr/share/fonts/truetype/みかちゃん-ps.ttf
deleting /usr/share/fonts/truetype/みかちゃん.ttf
modifying /usr/share/fonts/truetype/fonts.dir
modifying /usr/share/fonts/truetype/fonts.scale
modifying /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4
modifying /var/lib/rpm/Basenames
modifying /var/lib/rpm/Dirnames
modifying /var/lib/rpm/Group
modifying /var/lib/rpm/Installtid
modifying /var/lib/rpm/Name
modifying /var/lib/rpm/Packages
modifying /var/lib/rpm/Providename
modifying /var/lib/rpm/Requirename
modifying /var/lib/rpm/Sha1header
modifying /var/lib/rpm/Sigmd5
undoing change done不建議透過使用 Snapper 回復變更的方式回復使用者新增。因為快照中排除了某些目錄,屬於這些使用者的檔案將保留在檔案系統中。如果使用已刪除使用者的使用者 ID 建立使用者,則此使用者將繼承這些檔案。因此,強烈建議您使用 YaST工具來移除使用者。
除了安裝與管理快照之外,Snapper 還會建立時間軸快照。您可以使用這些備份快照來還原不小心刪除的檔案或還原舊版檔案。利用 Snapper 的差異比對功能,您還可以瞭解在特定時間點執行了哪些修改。
還原檔案功能對於預設不會建立快照的子磁碟區或分割區上的資料尤其有用。例如,要從主目錄還原檔案,可以為自動建立時間軸快照的 /home 建立單獨的 Snapper 組態。如需指示,請參閱第 6.4 節 「建立和修改 Snapper 組態」。
從根檔案系統 (由 Snapper 的根組態定義) 建立的快照可用於執行系統復原。建議您使用從快照開機然後執行復原的方式執行此復原。如需詳細資料,請參閱第 6.3 節 「透過從快照開機來執行系統復原」。
也可使用從根檔案系統快照還原所有檔案的方式執行復原 (如下文所述)。但我們不建議採用這種方法。您可以還原單個檔案 (如 /etc 目錄中的組態檔案),但不能從快照還原整份檔案清單中的檔案。
此限制僅影響從根檔案系統建立的快照!
從 YaST 的區段或透過輸入 yast2 snapper 啟動模組。
選擇要從中選擇快照的。
選取要從中還原檔案的時間軸快照,並選擇。時間軸快照屬於類型,以描述。
按一下檔案名稱,從文字方塊中選取一個檔案。隨即顯示快照版本與目前系統之間的差異。勾選該核取方塊以選取要還原的檔案。對所有您要還原的檔案執行此操作。
按一下,然後按一下確認該動作。
snapper 指令還原檔案 #執行以下指令獲取特定組態之時間軸快照的清單︰
snapper -c CONFIG list -t single | grep timeline
CONFIG 需要以現有的 Snapper 組態取代。使用 snapper list-configs 顯示清單。
執行以下指令獲取指定快照之已變更檔案的清單︰
snapper -c CONFIG status SNAPSHOT_ID..0
以您要從中還原檔案之快照的 ID 取代 SNAPSHOT_ID。
(選擇性)透過執行以下指令,列出目前檔案版本與快照中之檔案的差異
snapper -c CONFIG diff SNAPSHOT_ID..0 FILE NAME
如果您未指定 <檔案名稱>,則會顯示所有檔案的差異。
要還原一或多個檔案,請執行
snapper -c CONFIG -v undochange
SNAPSHOT_ID..0 FILENAME1 FILENAME2如果未指定檔案名稱,將會還原所有已變更的檔案。
SUSE Linux Enterprise Desktop 上包含的 GRUB 2 版本能夠從 Btrfs 快照開機。除 Snapper 的復原功能外,它還可復原設定有誤的系統。只有針對預設 Snapper 組態 (root) 建立的快照才可開機。
從 SUSE Linux Enterprise Desktop 12 SP2 開始,僅當根分割區的預設子磁碟區組態未變更時,才支援系統復原。
將快照開機時,該快照中包含之檔案系統的部分會以唯讀模式掛接,而從快照中排除的所有其他檔案系統以及該檔案系統的排除部分會以讀寫模式掛接並且可修改。
使用快照還原資料時,您必須知道 Snapper 可以處理兩種完全不同的案例。
如第 6.2 節 「使用 Snapper 復原變更」中所述復原變更時,系統會比較兩個快照並回復這兩個快照之間的變更。使用此方法還可以將選取的檔案明確排除在還原之外。
如下文所述執行復原時,系統會重設回建立快照當時的狀態。
若要從可開機快照執行復原,必須符合以下要求。執行預設安裝時,系統會進行相應設定。
根檔案系統必須是 Btrfs。不支援從 LVM 磁碟區快照開機。
根檔案系統必須位於單一裝置、單一分割區以及單一子磁碟區上。如 /srv 之類從快照中排除的目錄 (如需完整的清單,請參閱第 6.1.2 節 「從快照中排除的目錄」) 可以位於單獨的分割區上。
系統必須能透過已安裝的開機載入程式開機。
要從可開機的快照執行復原,請按如下步驟執行︰
將系統開機。在開機功能表中,選擇並選取您要開機的快照。系統會按日期列出快照清單,最近的快照最先列出。
登入系統。仔細檢查是否一切都如預期般運作。請注意,您無法對快照中包含的任何目錄執行寫入。但無論您接下來執行什麼操作,您寫入到其他目錄的資料都不會遺失。
根據您是否要執行復原操作,選擇下一步動作︰
如果系統處於您不想執行復原的狀態,請重新開機以開機到目前系統狀態,然後選擇其他快照或啟動救援系統。
如果您要執行復原,請執行
sudo snapper rollback
並在之後重新開機。在開機螢幕上,選擇預設開機項目以重新開機到已恢復的系統。
如果安裝期間未停用快照,將在初始系統安裝結束時建立初始可開機快照。您隨時可以透過將此快照開機,返回到該狀態。安裝後可依描述識別該快照。
開始對 Service Pack 或新的主要版本進行系統升級時,也會建立可開機快照 (前提是快照未停用)。
若要從快照開機,請重新開機並選擇。此時會開啟一個螢幕,其中列出了所有可開機的快照。最近的快照列在最前面,最舊的快照列在最後面。使用 ↓ 和 ↑ 導覽,然後按 Enter 啟動所選的快照。從開機功能表啟動快照不會立即重新開機,而是開啟所選快照的開機載入程式。
開機載入程式中的每個快照項目遵循一種可方便您識別快照的命名規劃:
[*]1OS2 (KERNEL3,DATE4TTIME5,DESCRIPTION6)
如果快照標示為 | |
作業系統標籤。 | |
採用 | |
採用 | |
此欄位包含快照的描述。對於手動建立的快照,這是使用選項 |
可以用自訂字串來取代快照描述欄位中的預設字串。例如,如果自動建立的描述不能充分描述快照,或者使用者提供的描述太長,則這種做法會很有用。若要為快照編號設定自訂字串字串,請使用以下指令:
snapper modify --userdata "bootloader=STRING" NUMBER
描述的長度不應超過 25 個字元 - 超過此大小的內容無法在開機畫面上正常顯示。
無法進行完整系統復原,即將整個系統還原到與建立快照時完全相同的狀態。
根檔案系統快照並不包含所有目錄。如需詳細資料和原因,請參閱第 6.1.2 節 「從快照中排除的目錄」。因此,這些目錄中的資料不會還原,也就形成以下限制。
如果從快照中排除的子磁碟區 (如 /opt) 中的應用程式還有其他部分資料安裝在該快照中包含的子磁碟區中,則應用程式及附加產品的安裝資料在復原後可能無法使用。重新安裝應用程式或附加產品可解決此問題。
如果應用程式在快照以及目前系統之間變更了檔案許可權和/或擁有權,則復原後該應用程式可能無法存取這些檔案。請在復原之後重設受影響檔案的許可權和/或擁有權。
如果服務或應用程式在快照和目前系統之間建立了新的資料格式,則復原之後該應用程式可能無法讀取受影響的資料檔案。
/srv 等子磁碟區可能同時包含代碼和資料。復原可能導致代碼不起作用。例如,降級 PHP 版本可能導致該 Web 伺服器之 PHP 程序檔損毀。
如果復原從系統移除了使用者,但這些使用者所擁有的資料存在於快照排除的目錄中,則這些資料不會予以移除。如果使用相同使用者 ID 建立使用者,則此使用者將繼承這些檔案。使用 find 等工具尋找並移除孤立的檔案。
無法復原開機載入程式,因為開機載入程式的所有「階段」必須組合在一起共同作用。而執行 /boot 復原則無法保證這一要求。
每個分割區或 Btrfs 子磁碟區都有一個專用的組態檔案用於定義 Snapper 的行為方式。這些組態檔案位於 /etc/snapper/configs/ 下。
如果根檔案系統足夠大 (大約有 16 GB),則安裝會自動為根檔案系統 / 啟用快照。相應的預設組態命名為 root。該組態可建立和管理 YaST 及 Zypper 快照。如需預設值清單,請參閱第 6.4.1.1 節 「組態資料」。
您可以為其他格式為 Btrfs 的分割區或 Btrfs 分割區上的現有子磁碟區建立您自己的組態。在下面的範例中,我們將設定 Snapper 組態以用於備份掛接於 /srv/www 且採用 Btrfs 格式之獨立分割區上的 Web 伺服器資料。
建立組態後,您可以使用 snapper 自身或 YaST 模組從這些快照中還原檔案。在 YaST 中,您需要選取,同時還需要使用全域參數 -c 指定 snapper 的組態 (例如 snapper -c myconfig list)。
若要建立新的 Snapper 組態,請執行 snapper create-config:
snapper -c www-data1 create-config /srv/www2
此指令將會使用 /etc/snapper/config-templates/default 中的合理預設值建立一個新的組態檔案 /etc/snapper/configs/www-data。如需如何調整這些預設值的指示,請參閱第 6.4.1 節 「管理現有的組態」。
新組態的預設值取自 /etc/snapper/config-templates/default。若要使用您自己的一組預設值,請在同一目錄中建立此檔案的副本,然後根據您的需求進行調整。若要使用該副本,請使用 create-config 指令指定 -t 選項:
snapper -c www-data create-config -t my_defaults /srv/www
snapper 提供多個用於管理現有組態的子指令。您可以列出、顯示、刪除及修改它們︰
使用指令 snapper list-configs 可獲取所有現有組態︰
root # snapper list-configs
Config | Subvolume
-------+----------
root | /
usr | /usr
local | /local
使用子指令 snapper -c CONFIG get-config 可顯示指定的組態。Config 需要使用 snapper list-configs 所顯示的組態名稱取代。如需有關組態選項的詳細資訊,請參閱第 6.4.1.1 節 「組態資料」。
若要顯示預設組態,請執行
snapper -c root get-config
使用子指令 snapper -c CONFIG set-config OPTION=VALUE 可修改指定組態中的選項。Config 需要使用 snapper list-configs 所顯示的組態名稱取代。OPTION 及 VALUE 的可能的值列於第 6.4.1.1 節 「組態資料」中。
使用子指令 snapper -c CONFIG delete-config 可刪除組態。Config 需要使用 snapper list-configs 所顯示的組態名稱取代。
每個組態都包含可以從指令行修改的選項清單。以下清單提供每個選項的詳細資料。若要變更某個值,請執行 snapper -c 組態 set-config "索引鍵=值"。
ALLOW_GROUPS、ALLOW_USERS
授予一般使用者快照的使用權限。如需相關資訊,請參閱第 6.4.1.2 節 「以一般使用者身分使用 Snapper」。
預設值為 ""。
BACKGROUND_COMPARISON
定義建立前後快照後是否應在背景中對它們進行比較。
預設值為 "yes"。
EMPTY_*
為包含相同「前」快照和「後」快照的快照組定義清理演算法。如需詳細資料,請參閱 第 6.6.3 節 「清理無差異的快照組」。
FSTYPE
分割區的檔案系統類型。請勿進行變更。
預設值為 "btrfs"。
為安裝快照與管理快照定義清理演算法。如需詳細資料,請參閱 第 6.6.1 節 「清理數字快照」。
QGROUP / SPACE_LIMIT
將配額支援新增至清理演算法。如需詳細資料,請參閱 第 6.6.5 節 「新增磁碟配額支援」。
SUBVOLUME
要建立快照之分割區或子磁碟區的掛裝點。請勿進行變更。
預設值為 "/".
SYNC_ACL
如果是一般使用者使用 Snapper (請參閱第 6.4.1.2 節 「以一般使用者身分使用 Snapper」),則使用者必須能夠存取 .snapshot 目錄並能夠讀取其中的檔案。如果 SYNC_ACL 設定為 yes,Snapper 會使用 ACL 自動允許 ALLOW_USERS 或 ALLOW_GROUPS 項目中的使用者和群組存取該目錄及其中的檔案。
預設值為 "no"。
TIMELINE_CREATE
如果設定為 yes,則會每小時建立一個快照。有效值:yes 和 no.
預設值為 "no"。
TIMELINE_CLEANUP / TIMELINE_LIMIT_*
為時間軸快照定義清理演算法。如需詳細資料,請參閱 第 6.6.2 節 「清理時間軸快照」。
依預設,Snapper 只能由 root 使用者使用。但是,在下列情況中,某些群組或使用者需要能夠建立快照或透過回復至快照來復原變更:
想要建立 /srv/www 快照的網站管理員
想要建立其主目錄快照的使用者
為了以上這些目的,您可以建立用於授予使用者或/和群組權限的 Snapper 組態。相應的 .snapshots 目錄必須可由指定的使用者讀取和存取。實現這一目的最簡單的方法是將 SYNC_ACL 選項設定為 yes。
請注意,此程序中的所有步驟都必須由 root 使用者執行。
若不存在,請為使用者應該能夠在其上使用 Snapper 的分割區或子磁碟區建立 Snapper 組態。如需指示,請參閱第 6.4 節 「建立和修改 Snapper 組態」。範例:
snapper --config web_data create /srv/www
組態檔案將在 /etc/snapper/configs/CONFIG 下建立,其中 CONFIG 是您在上一步中使用 -c/--config 指定的值 (如 /etc/snapper/configs/web_data)。根據您的需求調整該值;如需詳細資料,請參閱第 6.4.1 節 「管理現有的組態」。
設定 ALLOW_USERS 和/或 ALLOW_GROUPS 的值,以分別向使用者和/或群組授予權限。多個項目需要用 Space 加以分隔。例如,若要向使用者 www_admin 授予權限,請執行:
snapper -c web_data set-config "ALLOW_USERS=www_admin" SYNC_ACL="yes"
現在,指定的使用者和/或群組便可以使用給定的 Snapper 組態。您可以使用 list 指令進行測試,例如:
www_admin:~ > snapper -c web_data list
Snapper 並不限於依照組態自動建立和管理快照;您還可以使用指令行工具或 YaST 模組手動建立快照對 (「前與後」) 或單一快照。
所有 Snapper 操作都會對現有組態進行 (如需詳細資料,請參閱第 6.4 節 「建立和修改 Snapper 組態」)。您只能為存在組態的分割區或磁碟區建立快照。預設會使用系統組態 (根)。如果您要為您自己的組態建立或管理快照,則必須明確選擇它。使用 YaST 中的下拉式方塊,或在指令行上指定 -c 選項 (snapper -c MYCONFIG COMMAND)。
每個快照都包含快照本身和一些中繼資料。建立快照時,您還需要指定中繼資料。修改快照即表示變更其中繼資料 — 您無法修改其內容。使用 snapper list 顯示現有快照及其中繼資料:
snapper --config home list
列出組態 home 的快照。若要列出預設組態 (root) 的快照,請使用 snapper -c root list 或 snapper list。
snapper list -a
列出所有現有組態的快照。
snapper list -t pre-post
列出預設 (root) 組態的所有「前」快照與「後」快照組。
snapper list -t single
列出預設 (root) 組態的所有 single 類型快照。
下列中繼資料適用於每個快照:
類型:快照類型,請參閱第 6.5.1.1 節 「快照類型」 以取得詳細資料。此資料無法變更。
編號:快照的唯一編號。此資料無法變更。
前快照編號:指定相應前快照的編號。僅適用於類型為後的快照。此資料無法變更。
描述:快照的描述。
使用者資料:延伸描述,您可在其中以逗號分隔之「鍵=值」清單的形式指定自訂資料:reason=testing, project=foo。此欄位還用於將快照標示為重要 (important=yes) 並列出建立該快照的使用者 (user=tux)。
清理演算法:快照的清理演算法,請參閱第 6.6 節 「自動快照清理」 以取得詳細資料。
Snapper 知道三種不同類型的快照:前、後與單一。實際上,它們並無差異,但是 Snapper 會以不同的方式處理它們。
前
修改前檔案系統的快照。每個前快照都對應一個後快照。例如,用於自動建立 YaST/Zypper 快照。
後
修改後檔案系統的快照。每個後快照都對應一個前快照。例如,用於自動建立 YaST/Zypper 快照。
單一
獨立快照。例如,用於自動按小時建立快照。這是建立快照時的預設類型。
Snapper 提供了三種用於清理舊快照的演算法。每日 cron 工作中會執行這些演算法。可以定義要在 Snapper 組態中保留的不同類型的快照數量 (如需詳細資料,請參閱第 6.4.1 節 「管理現有的組態」)。
當達到特定的快照計數時刪除舊快照。
刪除經過特定期限的舊快照,但會保留若干每小時、每日、每月和每年快照。
刪除無差異的前/後快照對。
可透過執行 snapper create 或在 YaST 模組 中按一下建立快照。下列範例說明如何從指令行建立快照。透過 YaST 介面可便於採用這兩種建立方法。
您應始終指定有意義的描述,以便日後能夠識別其用途。透過使用者資料選項可以指定更多資訊。
snappercreate --description "2014 年第 2 週的快照"
為預設 (根) 組態建立獨立快照 (類型為單一) 並提供描述。因為未指定清理演算法,所以一律不自動刪除快照。
snapper --config home create --description "在 ~tux 中清理"
為名為 home 的自訂組態建立獨立快照 (類型為單一) 並提供描述。因為未指定清理演算法,所以一律不自動刪除快照。
snapper --config home create --description "每日資料備份" --cleanup-algorithm timeline>
為名為 home 的自訂組態建立獨立快照 (類型為單一) 並提供描述。當檔案符合特定於組態中時間軸清理演算法的準則時,將會自動刪除該檔案。
snapper create --type pre--print-number--description "在 Apache 組態清理之前"--userdata "important=yes"
建立類型為前的快照並列印快照編號。需要第一個指令才能建立用於儲存「前」和「後」狀態的快照對。快照會標示為重要。
snapper create --type post--pre-number 30--description "在 Apache 組態清理之前"--userdata "important=yes"
建立類型為後並與前快照編號 30 配對的快照。需要第二個指令才能建立用於儲存「前」和「後」狀態的快照對。快照會標示為重要。
snapper create --command COMMAND--description "在指令前後"
在執行指令前後自動建立快照對。僅當在指令行上使用 snapper 時,此選項才可用。
Snapper 可讓您修改快照的描述、清理演算法和使用者資料,所有其他中繼資料則無法變更。下列範例說明如何從指令行修改快照。透過 YaST 介面可便於採用這兩種建立方法。
若要透過指令行修改快照,您需要知道其編號。使用 snapper list 可以顯示所有快照及其編號。
YaST 模組已列出所有快照。從清單中選擇一個快照,然後按一下。
snapper modify --cleanup-algorithm "時間軸" 10
修改預設 (根) 組態之快照 10 的中繼資料。清理演算法設為時間軸。
snapper --config home modify --description "每日備份" -cleanup-algorithm "時間軸"120
修改名為 home 的自訂組態之快照 120 的中繼資料。將會設定新的描述並取消設定清理演算法。
若要使用 YaST 模組刪除快照,請從清單中選擇快照,然後按一下。
若要使用指令行工具刪除快照,您需要知道其編號。請透過執行 snapper list 來取得該編號。若要刪除快照,請執行 snapper delete 編號。
使用 Snapper 刪除快照時,在背景中執行的 Btrfs 程序將會回收已釋放的空間。因此,可用空間的可見度與可用性將會延遲。如果您希望在刪除快照後立即可以使用釋放的空間,請結合選項 --sync 使用 delete 指令。
刪除前快照時,您應一律刪除其對應的後快照 (反之亦然)。
snapper delete 65
刪除預設 (根) 組態的快照 65。
snapper -c home delete 89 90
刪除名為 home 之自訂組態的快照 89 和 90。
snapper delete --sync 23
刪除預設 (根) 組態的快照 23,並使釋放的空間立即可用。
有時,雖然 Btrfs 快照存在,但卻缺少包含 Snapper 中繼資料的 XML 檔案。這種情況表示快照對 Snapper 不可見,需要手動刪除該快照:
btrfs subvolume delete /.snapshots/SNAPSHOTNUMBER/snapshot rm -rf /.snapshots/SNAPSHOTNUMBER
如果您要刪除快照以釋放硬碟上的空間,請確定先刪除舊快照。快照越舊,它佔用的磁碟空間就越多。
快照也可由每日 cron 工作自動刪除。如需詳細資訊,請參閱第 6.5.1.2 節 「清理演算法」。
快照會佔用磁碟空間,一段時間後,快照可能會佔用大量的磁碟空間。為了防止磁碟上的空間耗盡,Snapper 提供了演算法用於自動刪除舊快照。這些演算法依據時間軸快照和數字快照 (管理快照與安裝快照組) 而異。您可以指定要為每種類型保留的快照數量。
除此之外,您可以指定一個快照空間配額,用於定義快照可佔用的最大磁碟空間量。系統還可以自動刪除無相異的「前」快照與「後」快照組。
清理演算法一律系繫結到單一 Snapper 組態,因此您需要為每個組態指定演算法。如果您想要防止自動刪除特定的快照,請參閱 如何永久保留快照? 。
預設設定 (root) 設定為清理數字快照以及空的「前」快照與「後」快照組。已啟用配額支援 - 快照佔用的空間不可超過根分割區可用磁碟空間的 50%。時間軸快照預設為停用,因此,時間軸清理演算法亦已停用。
數字快照 (管理快照與安裝快照組) 的清理由 Snapper 組態的以下參數控制。
NUMBER_CLEANUP
啟用或停用安裝快照與管理快照組的清理。如果已啟用,則在快照總數超過 NUMBER_LIMIT 和/或 NUMBER_LIMIT_IMPORTANT 指定的數字,以及 NUMBER_MIN_AGE 指定的時限時,會刪除快照組。有效值:yes (啟用)、no (停用)。
預設值為 "yes"。
用於變更或設定值的範例指令:
snapper -c CONFIG set-config "NUMBER_CLEANUP=no"
NUMBER_LIMIT / NUMBER_LIMIT_IMPORTANT
定義要保留多少個普通和/或重要安裝快照與管理快照組。只會保留最新的快照。如果 NUMBER_CLEANUP 設定為 "no",則忽略此參數。
NUMBER_LIMIT 的預設值為 "2-10",NUMBER_LIMIT_IMPORTANT 的預設值為 "4-10"。
用於變更或設定值的範例指令:
snapper -c CONFIG set-config "NUMBER_LIMIT=10"
如果已啟用配額支援 (請參閱第 6.6.5 節 「新增磁碟配額支援」),則需要將限制指定為最小值-最大值範圍,例如 2-10。如果已停用配額支援,則需要提供常數值,例如 10,否則清理將會失敗並出現錯誤。
NUMBER_MIN_AGE
定義快照在可供自動刪除之前的最短保留期限 (秒)。期限小於此處指定值的快照不會刪除,不論存在多少個這樣的快照。
預設值為 "1800"。
用於變更或設定值的範例指令:
snapper -c CONFIG set-config "NUMBER_MIN_AGE=864000"
NUMBER_LIMIT、NUMBER_LIMIT_IMPORTANT 和 NUMBER_MIN_AGE 始終會予以評估。只有在滿足全部條件時,才會刪除快照。
如果您希望總是保留 NUMBER_LIMIT* 所定義數量的快照而不考慮其期限,請將 NUMBER_MIN_AGE 設定為 0。
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=10 NUMBER_LIMIT=10 NUMBER_MIN_AGE=0
不過,如果您不想保留超過特定期限的快照,請將 NUMBER_LIMIT* 設定為 0,並使用 NUMBER_MIN_AGE 提供期限。
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=0 NUMBER_LIMIT=0 NUMBER_MIN_AGE=864000
時間軸快照的清理由 Snapper 組態的以下參數控制。
TIMELINE_CLEANUP
啟用或停用時間軸快照的清理。如果已啟用,則在快照總數超過 TIMELINE_LIMIT_* 指定的數量以及 TIMELINE_MIN_AGE 指定的期限時,會刪除快照。有效值:yes 和 no.
預設值為 "yes"。
用於變更或設定值的範例指令:
snapper -c CONFIG set-config "TIMELINE_CLEANUP=yes"
TIMELINE_LIMIT_DAILY、TIMELINE_LIMIT_HOURLY、TIMELINE_LIMIT_MONTHLY、TIMELINE_LIMIT_WEEKLY、TIMELINE_LIMIT_YEARLY
要以小時、天、月、週和年保留的快照數量。
每個項目的預設值為 "10",但 TIMELINE_LIMIT_WEEKLY 除外 (預設為 "0")。
TIMELINE_MIN_AGE
定義快照在可供自動刪除之前的最短保留期限 (秒)。
預設值為 "1800"。
TIMELINE_CLEANUP="yes" TIMELINE_CREATE="yes" TIMELINE_LIMIT_DAILY="7" TIMELINE_LIMIT_HOURLY="24" TIMELINE_LIMIT_MONTHLY="12" TIMELINE_LIMIT_WEEKLY="4" TIMELINE_LIMIT_YEARLY="2" TIMELINE_MIN_AGE="1800"
此組態範例啟用了會自動清理的每小時快照。系統始終會同時評估 TIMELINE_MIN_AGE 和 TIMELINE_LIMIT_*。在此範例中,快照在可供刪除之前的最短期限設定為 30 分鐘 (1800 秒)。因為我們建立了每小時快照,所以這可確保僅保留最新的快照。如果將 TIMELINE_LIMIT_DAILY 設為非零值,這表示同時會保留當天的第一個快照。
每小時:已建立的最後 24 個快照。
每日:保留最近 7 天內建立的第一個每日快照。
每月:保留最近 12 個月內當月最後一天建立的第一個快照。
每週:保留最近 4 週內當週最後一天建立的第一個快照。
每年:保留最近 2 年內當年最後一天建立的第一個快照。
如第 6.1.1 節 「快照類型」中所述,每當您執行 YaST 模組或執行 Zypper 時,會在啟動時建立一個「前」快照,在結束時建立一個「後」快照。如果您做出任何變更,則「前」快照與「後」快照沒有差異。在 Snapper 組態中設定以下參數可自動刪除此類「空白」快照組:
EMPTY_PRE_POST_CLEANUP
如果設定為 yes,將會刪除前後快照相同的快照對。
預設值為 "yes"。
EMPTY_PRE_POST_MIN_AGE
定義前後快照相同的快照對在自動刪除之前必須保留的最短期限 (以秒為單位)。
預設值為 "1800"。
Snapper 未針對手動建立的快照提供自訂清理演算法。但是,您可以向手動建立的快照指定 number 或 timeline 清理演算法。如果您這麼做,該快照會加入所指定演算法的「清理佇列」。可以在建立快照時,或者透過修改現有快照來指定清理演算法:
snapper create --description "Test" --cleanup-algorithm number
為預設 (root) 組態建立獨立快照 (單一類型) 並指定 number 清理演算法。
snapper modify --cleanup-algorithm "時間軸" 25
使用數字 25 修改快照,並指定清理演算法 timeline。
除了上述 number 和/或 timeline 清理演算法之外,Snapper 還支援配額。您可以定義允許快照佔用的可用空間百分比。此百分比值一律套用至相應 Snapper 組態中定義的 Btrfs 子磁碟區。
如果在安裝期間啟用了 Snapper,則會自動啟用配額支援。如果在安裝後的某個時間手動啟用 Snapper,則可以透過執行 snapper setup-quota 來啟用配額支援。這需要提供有效的組態 (如需詳細資訊,請參閱第 6.4 節 「建立和修改 Snapper 組態」)。
配額支援由 Snapper 組態的以下參數控制。
QGROUP
Snapper 使用的 Btrfs 配額群組。如果未設定,請執行 snapper setup-quota。如果已設定,則僅當您熟悉 man 8 btrfs-qgroup 時方可對其進行變更。此值是使用 snapper setup-quota 設定的,請勿變更。
SPACE_LIMIT
允許快照使用的空間限制,以 1 (100%) 的分數表示。有效值範圍為 0 到 1 (0.1 = 10%,0.2 = 20%...)。
需遵循以下限制和指導方針:
只能在已啟用現有 number 和/或 timeline 清理演算法的前提下才能啟用配額。如果未啟用任何清理演算法,則無法套用配額限制。
啟用配額支援後,Snapper 會視需要執行兩輪清理。第一輪清理套用針對數字快照和時間軸快照指定的規則。僅當完成這一輪清理後超出配額時,才會在第二輪清理中套用配額特定的規則。
即使已啟用配額支援,Snapper 也永遠會保留 NUMBER_LIMIT* 和 TIMELINE_LIMIT* 值指定的快照數量,而不論是否超出了配額。因此,建議為 NUMBER_LIMIT* 和 TIMELINE_LIMIT* 指定範圍值 (min-max),以確定可以套用配額。
例如,如果已設定 NUMBER_LIMIT=5-20,Snapper 將執行第一輪清理,並將普通的數字快照數量減少為 20 個。如果這 20 個快照超出配額,Snapper 將在第二輪清理中刪除最舊的快照,直到符合配額限制。永遠會保留最少五個快照,不論這些快照佔用了多少空間。
/var/log、/tmp 及其他目錄中的變更?
對於我們確定要從快照中排除的某些目錄,請參閱第 6.1.2 節 「從快照中排除的目錄」獲取清單及排除原因。為了將某路徑從快照中排除,我們為該路徑建立了子磁碟區。
目前,Btrfs 工具無法顯示快照配置的磁碟空間量。但是,如果您啟用了配額,則可以判斷在刪除所有快照後可以釋放多少空間:
取得配額群組 ID (在以下範例中為 1/0):
root # snapper -c root get-config | grep QGROUP
QGROUP | 1/0重新掃描子磁碟區配額:
btrfs quota rescan -w /
顯示配額群組 (在以下範例中為 1/0) 的資料:
root # btrfs qgroup show / | grep "1/0"
1/0 4.80GiB 108.82MiB
第三欄顯示刪除所有快照時可釋放的空間數量 (108.82MiB)。
為了釋放包含快照之 Btrfs 分割區上的空間,您需要刪除不需要的快照,而不是檔案。與新快照相比,較舊的快照佔用的空間更多。如需詳細資料,請參閱第 6.1.3.4 節 「控制快照歸檔」。
從一個 Service Pack 升級到另一個 Service Pack 會導致快照佔用系統子磁碟區上的大量磁碟空間,這是因為有許多資料進行了變更 (套件更新)。對於不再需要的快照,建議您手動將其刪除。如需詳細資料,請參閱第 6.5.4 節 「刪除快照」。
能,請參閱第 6.3 節 「透過從快照開機來執行系統復原」獲取詳細資訊。
目前,Snapper 無法防止手動刪除快照。但是,您可以防止清理演算法自動刪除快照。除非您使用 第 6.5.2 節 「建立快照」--cleanup-algorithm 指定清理演算法,否則不會為手動建立的快照 (請參閱) 指定清理演算法。總是為自動建立的快照指定 number 或 timeline 演算法。若要從一或多個快照中移除此類指定,請執行以下步驟:
列出所有可用的快照:
snapper list -a
記住您要防止刪除的快照數。
執行以下指令,並用您記住的數字取代數字預留位置:
snapper modify --cleanup-algorithm "" #1 #2 #n
再次執行 snapper list -a 來檢查結果。在 Cleanup 欄中,與修改的快照相對應的項目現在應該為空白。
請造訪 Snapper 首頁,網址為 http://snapper.io/。