生活在 Linux 下,折騰肯定是少不了的,所以玩壞的情況也是常有的事情。如果有一臺時光機器可以讓系統回到某個時間點那就好辦了,所以今晚介紹的軟件是 Snapper。
Snapper 是一個由 openSUSE 的 Arvin Schnell 開發的工具,用于管理 Btrfs 子卷和 LVM 精簡配置 (thin-provisioned) 卷。它可以創建和比較快照,在快照間回滾,并支持自動按時間序列創建快照。
安裝
直接用你的包管理器安裝 snapper 即可。
如果找不到這個軟件就去官網下載:http://snapper.io/
前端界面
如果你需要一個界面工具來管理,那么安裝這個:
https://github.com/ricardomv/snapper-gui
在安裝界面之前你需要先安裝依賴:
sudo apt install python3 libgtksourceview-3.0-1 gir1.2-gtksource-3.0 python3-dbus python3-setuptools
然后安裝界面:
$ git clone https://github.com/ricardo-vieira/snapper-gui/
$ cd snapper-gui/
$ sudo python3 setup.py install
安裝雖然完成了,不過有一點需要修改一下,Snapper 只有在 root 用戶下才能對全系統備份,所以改一下 Snapper GUI 的啟動命令以便使用 root 啟動(sudo snapper-gui
)。
創建一個備份
在為 btrfs 子卷建立一個 snapper 配置前,這個子卷必須已經存在。否則,你應該在建立 snapper 配置前創建它。
界面操作
新建一個快照配置
全系統備份,直接設置根目錄即可。
設置根目錄
命令行操作
要為位置為 / 的 btrfs 子卷創建一個新的 snapper 配置文件,并命名為 config:
# sudo snapper -c config create-config /
Snapper 每個小時自動創建一次快照,默認保留最新的 30 個快照,舊的快照會被自動清理。用戶手動創建的快照不會被自動清理。
手動創建一個快照:
# sudo snapper create -d "關于本次手動備份的說明"
恢復到指定快照
恢復到某個時間點:
snapper undochange <編號1>..0
刪除快照
sudo snapper delete <編號>
完整用法
用法:snapper [--全局選項] <命令> [--命令選項] [命令參數]
全局選項:
--quiet, -q 靜默正常輸出。
--verbose, -v 顯示調試信息。
--utc 以 UTC 顯示日期和時間。
--iso 以 ISO 格式顯示日期和時間。
--table-style, -t <樣式> 表格樣式 (整數)。
--config, -c <配置名稱> 設置要使用的配置名稱。
--no-dbus 不是用 DBus。
--root, -r <路徑> 在目標根目錄上操作(不用 DBus 時才起作用)。
--version 打印版本號并退出。
列出配置:
snapper list-configs
創建配置:
snapper create-config <子卷>
'create-config' 命令的選項:
--fstype, -f <文件系統類型> 手動設置文件系統類型。
--template, -t <名稱> 要使用的配置模板名稱。
刪除配置:
snapper delete-config
獲取配置:
snapper get-config
設置配置:
snapper set-config <配置數據>
列出快照:
snapper list
'list' 命令的選項:
--type, -t <類型> 要列出的快照類型。
--all-configs, -a 列出所有可訪問配置中的快照。
創建快照:
snapper create
'create' 命令的選項:
--type, -t <類型> 快照類型。
--pre-number <編號> 相關的前期快照編號。
--print-number, -p 打印所創建快照的編號。
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。選項:number, timeline, empty-pre-post。
--userdata, -u <用戶數據> 快照的用戶數據。
--command <命令> 運行命令,創建前期和后期快照。
修訂快照:
snapper modify <編號>
'modify' 命令的選項:
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。選項:number, timeline, empty-pre-post。
--userdata, -u <用戶數據> 快照的用戶數據。
刪除快照:
snapper delete <編號>
“delete”命令的選項:
--sync, -s 刪除后同步。
掛載快照:
snapper mount <編號>
卸載快照:
snapper umount <編號>
對比快照:
snapper status <編號1>..<編號2>
'status' 命令的選項:
--output, -o <文件> 保存狀態到文件。
對比快照:
snapper diff <編號1>..<編號2> [文件]
“diff”命令的選項:
--input, -i <文件> 讀取文件以比較文件的差異。
--diff-cmd <命令> 用于比較文件的命令。
--extensions, -x <選項> 傳遞到 diff 命令的額外選項。
對比快照的擴展屬性:
snapper xadiff <編號1>..<編號2> [文件]
取消更改 (回滾):
snapper undochange <編號1>..<編號2> [文件]
'undochange' 命令的選項:
--input, -i <文件> 讀取要回滾的文件。
回滾:
snapper rollback [編號]
'rollback' 命令的選項:
--print-number, -p 打印所創建的第二個快照的編號。
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。選項:number, timeline, empty-pre-post。
--userdata, -u <用戶數據> 快照的用戶數據。
Setup quota:
snapper setup-quota
清空快照:
snapper cleanup <清理算法>