如何在 Ubuntu 桌面系統上設定 Btrfs 自動快照

Ubuntu Desktop 26.04 LTS 的安裝指南列出了其標準和進階磁碟設定選項,但並未將 Btrfs 列為安裝程式選項。該指南上次更新時間為 2026 年 5 月 6 日。這意味著 Btrfs Ubuntu Desktop 可能會使用自訂分割區或子磁碟區佈局。在自動建立快照之前,請務必確認實際掛載的分割區或子磁碟區/;Snapper 指令如果假定根子磁碟區為 Btrfs,則可能會失敗或保護錯誤的資料。本指南使用 Snapper 在已驗證的 Btrfs 子磁碟區上設定每小時一次的時間軸快照,然後啟用計劃清理,以避免舊快照無限累積。

Snapper 已包含在 Ubuntu 軟體倉庫中,Ubuntu 26.04 LTS (Resolute) 軟體包中包含用於其時間軸和清理任務的 systemd 單元。以下指令適用於目標快照為 Btrfs 子磁碟區的系統。如果您的 Ubuntu 系統使用的是 ext4、LVM 或 Btrfs 頂層掛載點,而不是您要保護的子卷,請在執行佈局檢查時停止,並先解決佈局問題。

Btrfs快照保護的是什麼?

Btrfs 快照是一個時間點子卷,它最初與來源檔案共用檔案範圍。它可用於在誤編輯或更新後恢復檔案或比較系統狀態。它並非獨立備份:快照保留在同一檔案系統上,因此磁碟故障、檔案系統損壞、被盜或意外刪除整個檔案系統都可能導致即時資料和快照遺失。

快照不會遞歸捕獲巢狀子磁碟區。如果/home存在一個單獨的子卷,則根子卷的快照不會包含該單獨子卷的內容/home。請為每個需要保護的子磁碟區規劃一個 Snapper 配置,或依賴單獨的備份來保存使用者資料。在另一台設備或遠端系統上保留第二個副本,以備災難復原之用。

1. 確認 Ubuntu 系統運作在 Btrfs 檔案系統上

打開終端機並檢查根掛載點:

findmnt -no SOURCE,FSTYPE,OPTIONS /
sudo btrfs subvolume show /
sudo btrfs subvolume list /

第一條命令應報告檔案btrfs系統類型。檢查掛載點的掛載選項subvol=,並使用子卷清單了解其佈局。第二條指令應辨識掛載在指定位置的子卷/。如果檔案系統類型不是 Btrfs,則此 Snapper 操作步驟不適用。如果指令報告該/子卷不是子卷,或顯示它是頂層子卷,請勿盲目建立根 Snapper 配置。 Btrfs 的頂層子磁碟區有特殊限制;請改用設計合理的子磁碟區佈局或對已驗證的獨立子磁碟區進行快照。

分別檢查該/home掛載點是掛載點還是子磁碟區findmnt /home。sudo btrfs subvolume show /home如果它是獨立的,並且您想要對個人文件進行快照,則需要單獨配置。此外,還要考慮其他重要路徑(例如單獨的資料掛載點)是否位於其他檔案系統上。根快照不會自動包含它們。

2. 安裝 Snapper 和 Btrfs 工具

確認目標磁碟區為 Btrfs 子磁碟區後,安裝 Ubuntu 軟體包:

sudo apt update
sudo apt install snapper btrfs-progs

snapper管理快照配置和保留策略;btrfs-progs提供檢查 Btrfs 檔案系統的實用工具。在建立新配置前,請檢查是否存在已存在的配置:

sudo snapper list-configs

如果已存在指向正確根子磁碟區的配置root,請保留該配置並檢查其設置,而不是建立重複配置。如果輸出為空且/已確認是您要保護的子卷,則建立該配置:

sudo snapper -c root create-config /

此create-config指令會為選定的子磁碟區建立 Snapper 配置及其快照目錄。如果命令提示配置已存在或路徑不是子卷,請停止並檢查目前設定;切勿為了強制執行命令而刪除現有配置。

3. 選擇快照計畫和保留策略

Snapper 的時間軸模式可以建立每小時快照,其時間軸清理演算法可以保留選定的每小時、每日、每週、每月和每年快照。對於可用空間有限的桌面,建議從適度的策略開始,並監控儲存空間,而不是保留無限的歷史記錄。此範例請求建立 6 個每小時快照、7 個每日快照、4 個每週快照和 3 個每月快照,但不建立年度快照:

sudo snapper -c root set-config 'TIMELINE_CREATE=yes TIMELINE_CLEANUP=yes TIMELINE_LIMIT_HOURLY=6 TIMELINE_LIMIT_DAILY=7 TIMELINE_LIMIT_WEEKLY=4 TIMELINE_LIMIT_MONTHLY=3 TIMELINE_LIMIT_YEARLY=0'

這些值描述的是保留類別,並非磁碟空間的硬性限制。即使大檔案已更改或刪除,只要快照引用這些舊資料區段,它們仍會被保留。可用空間也取決於其他 Btrfs 子磁碟區和檔案。請定期檢查df -h /,sudo btrfs filesystem usage /如果檔案系統即將滿,請減少保留期限或增加儲存空間。避免同時編輯多個配置:更改後請執行sudo snapper -c root get-config並驗證這些值。

4. 啟用 Snapper 的 systemd 定時器

在 Ubuntu 26.04 LTS 上,Snapper 軟體包檔案清單包含snapper-timeline.timer和snapper-cleanup.timer。啟用這兩個文件,以便 systemd 定期建立時間軸快照並執行清理程式:

sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer

檢查它們是否已加載,並查看下次加載時間:

systemctl list-timers snapper-timeline.timer snapper-cleanup.timer
systemctl status snapper-timeline.timer snapper-cleanup.timer

定時器顯示為活動狀態表示 systemd 已載入調度程序;但這本身並不能證明 Snapper 已成功建立快照。下次運行時間軸後,請檢查配置和快照清單:

sudo snapper list-configs
sudo snapper -c root list

如果在計劃運行後沒有出現時間軸快照,請確認是否TIMELINE_CREATE已設置yes,然後使用命令檢查服務日誌journalctl -u snapper-timeline.service -b。在檢查打包單元和日誌之前,請勿建立自訂計時器;重複的計劃可能會建立超出預期的快照。

5. 為 Btrfs 主目錄子磁碟區新增單獨的配置

僅當佈局檢查確認該磁碟區/home本身是 Btrfs 子磁碟區且目標包含使用者檔案時,才執行此操作。首先運行sudo snapper list-configs並確保該名稱home未使用。然後為該子卷建立配置並套用單獨的保留策略:

sudo snapper -c home create-config /home
sudo snapper -c home set-config 'TIMELINE_CREATE=yes TIMELINE_CLEANUP=yes TIMELINE_LIMIT_HOURLY=6 TIMELINE_LIMIT_DAILY=7 TIMELINE_LIMIT_WEEKLY=4 TIMELINE_LIMIT_MONTHLY=3 TIMELINE_LIMIT_YEARLY=0'

相同的 systemd 定時器會處理已啟用時間軸建立和清理功能的 Snapper 配置,因此通常不需要單獨的計時器。請確認其sudo snapper -c home list運作正常,並sudo snapper -c home get-config顯示預期值。名為 `<directory_name>` 的目錄/home不會自動成為單獨的子磁碟區;請在執行 `.` 之前進行驗證create-config。

如何判斷自動化流程是否有效?

  • 配置: sudo snapper list-configs顯示預期名稱和子卷。
  • 策略: sudo snapper -c root get-config已啟用報告時間軸建立和清理功能。
  • 日程表: systemctl list-timers顯示兩個 Snapper 計時器及其下次運行時間。
  • 快照: sudo snapper -c root list顯示計時器運行後帶有日期的條目。
  • 服務運行狀況: journalctl -u snapper-timeline.service -b不存在阻止建立快照的重複性錯誤。

如果您的電腦按排程時間關機,計時器可能會根據其設定稍後運行;但這並不能取代檢查產生的快照。您可以進行一個簡單的手動測試來驗證 Snapper 是否可以建立快照:執行 `Snapper install` sudo snapper -c root create --description 'setup test',然後再次列出快照。此測試的是配置,而不是計時器;只有在您確定選擇了正確的條目後,才能刪除測試快照。

可能出現哪些問題?應該避免哪些問題?

首先,快照會隨著時間的推移佔用共享檔案系統的容量。保留控制會減少舊的歷史記錄,但保留的資料量會隨著文件變更而變化。請監控可用空間並確保清理程式正在運作。其次,根快照可能會遺漏嵌套的子卷,例如/home;成功執行命令並不意味著每個掛載路徑都受到保護。第三,僅靠 Snapper 快照無法保證可以啟動回滾。 Snapper 文件指出,回滾需要正確配置的 Btrfs 系統。 Ubuntu 的掛載佈局、啟動配置、加密方式和獨立檔案系統決定了可復原的範圍。在依賴回滾之前,請使用單獨的備份和還原媒體測試復原計畫。

不要將自動快照視為備份的替代品。將重要文件複製到另一台實體設備或遠端位置,並定期確認可以恢復這些文件。為了獲得最可靠的 Ubuntu 桌面設置,請使用 Snapper 來建立便利的本地還原點,使用單獨的備份工具來建立獨立副本,並使用經過測試的系統級故障復原流程。

官方參考資料

留下評論

如何在Linux系統上使用Cameractrls更改網路攝影機設置

如何在Linux系統上使用Cameractrls更改網路攝影機設置

使用 Cameractrls 在 Linux 上變更網路攝影機設定:調整曝光、色彩、減少閃爍和其他支援的控件,然後檢查相容的視訊模式。

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

在 Linux 系統上,您可以使用 JetBrains Toolbox 或獨立的 tar.gz 壓縮套件安裝 PhpStorm,此外還有 Snap 和 Arch AUR 版本可供選擇。 Java 已預先安裝。

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

在 Linux 上使用 GNOME Disks 或 dd 建立 CD-ROM ISO。識別光碟機,監控複製過程,驗證鏡像,並了解何時損壞的光碟或音訊光碟需要其他工具。

如何在 XFCE 4 上設定雙面板

如何在 XFCE 4 上設定雙面板

為每個顯示器建立一個單獨的 XFCE 4 面板,將第二個面板指派給正確的輸出,調整其位置和大小,並新增所需的啟動器和狀態項目。

如何在Linux上安裝Cisco Packet Tracer

如何在Linux上安裝Cisco Packet Tracer

下載適用於 Ubuntu 64 位元系統的 Cisco Packet Tracer 9.0.1,使用 APT 安裝 DEB 軟體包,在終端機中接受許可協議,然後登入以啟動實驗環境。

如何在Linux系統下使用GIMP摳圖

如何在Linux系統下使用GIMP摳圖

在 Linux 系統上使用 GIMP 去除照片背景:描繪主體,刪除選定的背景,保持透明度,並匯出可重複使用的 PNG 檔案。

免費下載 FlightGear:官方安裝指南

免費下載 FlightGear:官方安裝指南

從官方網站免費下載 FlightGear。比較 Windows、macOS 和 Linux 版本的軟體包,安裝資料文件,即可開始您的首次飛行。

Google Tasks桌面應用程式:如何在電腦上使用

Google Tasks桌面應用程式:如何在電腦上使用

在瀏覽器中開啟 Google Tasks,新增 Chrome 捷徑或應用程式啟動,並透過行事曆和 Gmail 管理有日期的待辦事項。

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler 可以將 MP3 片段對應到鍵盤按鍵,並支援音訊循環播放。了解這款經典免費軟體的功能、其舊功能的缺失以及下載前需要檢查的事項。

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

使用目前軟體包命令在 Ubuntu、Debian、Fedora、Arch 或 openSUSE 上安裝 Wireshark,然後安全地配置即時資料包擷取。