歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在openSUSE下使用Snapper實現快照和回滾

在openSUSE下使用Snapper實現快照和回滾

日期:2017/2/28 14:27:06   编辑:Linux教程

在過去的很長一段時間裡我們需要一種可以在Linux系統下實現文件系統快照來提供一種實現回滾操作的特性。現在Snapper和Btrfs聯合起來填補了這個缺口。

Btrfs,全新的Linux下的在“寫入的時候復制”的文件系統,支持子卷(在每一個物理分區內一個或多個獨立的可掛載的文件系統)文件系統快照(在一個確定的時間點上一份子卷狀態的副本)。Snapper提供了管理這些快照的方法。Snapper提供了一個命令行的接口和一個YaST的接口。

默認情況下openSUSE上的Snapper和Btrfs服務於回滾YaST和zypper所做的系統修改的撤銷工具。在使用YaST模塊或zypper的前後,一個快照就被創建了。Snapper讓你可以比較這兩個快照並且提供了在這兩個快照之間恢復之前狀態的方法。這個工具也提供了通過創建系統子卷每小時的快照來做系統備份的功能。

使用openSUSE代替Ubuntu的若干理由 http://www.linuxidc.com/Linux/2013-03/81023p2.htm

4.1需求

因為Btrfs是openSUSE上唯一支持快照的文件系統,在你想實現快照的所有分區和子卷下都必須使用Btrfs文件系統。

4.1.1快照和磁盤空間

當一個快照被創建,快照指針和原始指針指向文件系統中相同的塊。所以開始的時候一個快照不會占據額外的磁盤空間。如果原始文件系統中的數據被修改了,修改的數據塊被復制出來,而老的數據塊被保留為快照。因此一個快照占據了和被修改數據相同大小的磁盤空間。所以隨著時間推移被分配的快照占用的空間總量恆定的增長。結果就是從Btrfs文件系統中刪除文件包含的快照可能不會釋放磁盤空間!

注意:快照的位置

快照總是居於被快照的相同分區或子卷上。將快照存儲在不同的分區或子卷上是不可能的。

結果就是,包含快照的分區要比正常分區大,確切的數量在很大程度上依賴於你所保留的快照的數量和被修改的數據的數量。根據經驗你因該考慮到這會使用兩倍於你正常使用的空間。

提示:釋放空間/磁盤使用率

為了釋放包含快照的使用了Btrfs文件系統的分區的空間,你需要刪除不需要的快照而不是文件。老的快照會比最近的快照占據更多的空間。

因為在Btrsf文件系統上df工具不會顯示正確的磁盤使用率,你需要使用命令 btrfs filesystem df MOUNT_POINT .Btrfs工具現在不支持顯示快照分配的磁盤總空間。

4.2使用Snapper回滾YaST和zypper所做的修改

如果你在安裝的時候把ROOT分區設置為Btrfs文件系統,Snapper預配置為為YaST或zypper實現回滾操作,Snapper將被自動安裝。每次你開始一個YaST模塊或一個zypper交互,兩個快照就被創建了:一個“預快照”捕獲在你開始模塊之前的文件系統的狀態和一個“提交快照”在模塊被完成之後。

使用YaST Snapper模塊或者Snapper命令行工具,你可以通過從“預快照”恢復文件來撤銷YaST/zipper對系統所做的修改。通過比較這兩個快照工具還允許你查看那個文件已經被修改了。你也可以在一個文件的兩個版本之間顯示不同。(diff)

因為Linux是一個多任務的系統,除了YaSY和zypper其他的進程可能在“預”和“提交”的快照之間的時間幀修改數據。如果這種情況發生,完全恢復之前的快照也將撤銷那些被其他進程所做的修改。在很多情況下這不是我們想要的----因此強烈推薦在開始回滾前接近查看兩個快照之間所做的改變。如果有其他進程所做的改變你想保存,選擇哪個文件用來回滾。

重要:限制

在開始使用它的回滾機制前,確保你了解關於Snapper的限制。見1.7“限制”(111頁)查看詳細信息。

注意:快照的存儲時間

默認情況下,最後的100個YaST和zypper快照被保留。如果這個數字被超出,老的快照就被刪除了。

過程4.1:使用YaST的Snapper單元來撤銷更改

1 通過在YaST的混雜菜單部分選擇或者通過在終端下鍵入 yast2 snapper

2 確保當前配置被設置為root。這通常是必須的,除非你手動添加了Snapper配置的權限

3 從列表中選擇一對“預”“提交”快照,YaST和zypper快照對都回以Pre &Post標志。YaST快照會以yast modul_ename 在描述列標記;zypper快照會以zypp(zypper)標出。

4 單擊顯示更改來打開在兩個快照之間文件差異的列表。下面的圖片顯示了在添加了用戶tester之後的文件列表。

5 查看文件列表。可以通過從列表中選擇來實現顯示一個文件“預”和“提交”的版本的不同。下面的圖片顯示了添加了用戶tester之後/etc/passwd的變化

6 通過在相關的文件和目錄之前的預覽復選框上打勾來恢復一系列文件。單擊恢復選擇並通過單擊Yes確認動作。

如果要恢復一個單一的文件,單擊他的名字激活它的比較對話框。先單擊恢復然後單擊Yes確認你的選擇。

過程4.2

1 運行snapper list –t pre-post可以得到yast和zypper的快照列表。YaST快照在描述列被標記為yast module_name;zypper被標記為zypp(zypper)。

2 使用snapper status PRE..POST 可以得到一個快照對改變的列表。被改變的文件和目錄以C標記,新添加的文件以+標記,刪除的文件以-標記。下面的例子顯示了安裝了ncftp包之後的一個快照對。

3 使用snapper diff PRE..POST FILENAME 顯示一個特定文件的不同。如果你不指定FILLNAME,會顯示所有文件的不同。

4 運行snapper –v undochange PRE..POST FILLNAME來恢復一個或更多的文件。如果你不指定一個FILLNAMES,所有改變了的文件將被恢復。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-10/108037p2.htm

Copyright © Linux教程網 All Rights Reserved