Migawki Btrfs
Wprowadzenie
Dział zatytułowany „Wprowadzenie”Czym jest migawka Btrfs?
Dział zatytułowany „Czym jest migawka Btrfs?”Zacznijmy od podstaw:
Migawki Btrfs wywodzą się z funkcji podwolumenu. Możesz zapytać, czym jest podwolumen? Pomyśl o podwolumenie jak o oddzielnym systemie plików wewnątrz systemu plików Btrfs. Pozwala to na segmentację danych na różne części. Dlatego na przykład w CachyOS mamy różne podwolumeny dla:
- Głównego systemu plików: (
/) - Katalogu głównego administratora: (
/root) - Katalogu domowego: (
/home) - Katalogów var: (
/var/cache,/var/tmp,/var/log) - Katalogu srv: (
/srv)
Dzięki posiadaniu różnych podwolumenów dla tych katalogów możemy zarządzać nimi niezależnie, stosować różne ustawienia i, co najważniejsze, tworzyć dla nich migawki.
W tym miejscu rodzi się migawka. Migawka jest zasadniczo kopią podwolumenu tylko do odczytu lub do odczytu i zapisu (domyślnie) w określonym punkcie w czasie. Oznacza to, że możesz uchwycić stan swojego systemu plików, w tym wszystkich plików i katalogów, w danym momencie.
Dlatego migawki stają się odniesieniem w czasie, co oznacza, że gdy plik docelowy odbiega od danych migawki, migawka zachowa oryginalny plik, a plik docelowy utworzy nowy plik ze zmianami, podczas gdy migawka pozostanie na zawsze taka sama. Z tego powodu niektórzy użytkownicy nazywają migawkę „danymi zamrożonymi w czasie”.
Wyobraź sobie zrobienie zdjęcia swojemu systemowi plików w określonym momencie, do którego zawsze możesz wrócić, kiedy tylko zajdzie taka potrzeba.
Jedną z kluczowych zalet migawek jest to, że są bardzo oszczędne pod względem miejsca, ponieważ są tylko odniesieniem do oryginalnych danych, dopóki nie zostaną wprowadzone zmiany.
Jednak to właśnie w tym miejscu migawka różni się od tradycyjnej kopii zapasowej. Powiedzmy, że twój dysk uległ awarii. Gdybyś miał tradycyjną kopię zapasową, mógłbyś przywrócić swoje dane z tej kopii. Jednakże, gdybyś miał tylko migawki na uszkodzonym dysku, straciłbyś do nich dostęp, ponieważ są one przechowywane na tym samym dysku.
Przypadki odzyskiwania, w których migawki są przydatne i nieprzydatne
Dział zatytułowany „Przypadki odzyskiwania, w których migawki są przydatne i nieprzydatne”Są przydatne do odzyskiwania po:
- Awarii lub uszkodzeniu po aktualizacji systemu.
- Błędnych konfiguracjach, które uniemożliwiają uruchomienie systemu.
- Przypadkowym usunięciu lub modyfikacji plików.
Nie są przydatne do odzyskiwania po:
- Problemach z programem rozruchowym (bootloaderem).
- Awariach sprzętowych (np. uszkodzonych dyskach twardych).
Zarządzanie migawkami (GUI i CLI)
Dział zatytułowany „Zarządzanie migawkami (GUI i CLI)”Kilka rzeczy do rozważenia przed rozpoczęciem zarządzania migawkami. Dotyczy to zarówno metod CLI, jak i GUI.
- Zaleca się przechowywanie maksymalnie 10 migawek. Powyżej tej liczby migawki stają się zbyt stare i mniej użyteczne. W najgorszym przypadku przywrócenie starej migawki może wprowadzić problemy z kompatybilnością z nowszymi wersjami oprogramowania.
- Migawki idealnie nadają się do celów odzyskiwania systemu. Można ich jednak używać do cofania zmian w plikach bez przywracania całej migawki.
- Dodaj znaczący opis podczas tworzenia migawek. Pomoże ci to później zidentyfikować przeznaczenie każdej z nich.
Btrfs Assistant (GUI)
Dział zatytułowany „Btrfs Assistant (GUI)”Przed kontynuowaniem upewnij się, że masz zainstalowany btrfsmaintenance, aby móc korzystać z funkcji automatycznego zarządzania migawkami.
Dla tych, którzy wolą zarządzać Btrfs, migawkami i innymi elementami za pomocą interfejsu graficznego, Btrfs Assistant jest świetnym projektem dla początkujących.
Konfiguracja automatycznego czyszczenia migawek
Dział zatytułowany „Konfiguracja automatycznego czyszczenia migawek”Skonfigurujemy automatyczne czyszczenie migawek za pomocą Btrfs Assistant. Pomoże to efektywnie zarządzać migawkami bez ręcznej interwencji.
Postępuj zgodnie z poniższymi krokami:
-
Uruchom Btrfs Assistant, otwierając terminal i wpisując:
Terminal window btrfs-assistant-launcherAlternatywnie:
Terminal window sudo -E btrfs-assistant -
Przejdź do zakładki Ustawienia Snappera:

Zmodyfikuj ustawienia Przechowywania migawek w następujący sposób:
- Upewnij się, że wybrana jest konfiguracja
root - Wprowadź wartość
0dla Godzinowych, Dziennych, Tygodniowych, Miesięcznych i Rocznych. - Odznacz
Włącz migawki osi czasu. - Wprowadź wartość
10w poluLiczba. - Zaznacz ✅ przy
Włączone czyszczenie Snapper. - Kliknij przycisk
Zapiszw prawym górnym rogu iZastosuj zmiany systemdw prawym dolnym rogu. Timersnapper-cleanup.timerzostanie teraz włączony, aby automatycznie czyścić stare migawki na podstawie Twojej konfiguracji.
- Upewnij się, że wybrana jest konfiguracja
Usuwanie migawek za pomocą Btrfs Assistant
Dział zatytułowany „Usuwanie migawek za pomocą Btrfs Assistant”-
Otwórz Btrfs Assistant:
Terminal window btrfs-assistant-launcherAlternatywnie:
Terminal window sudo -E btrfs-assistant -
Przejdź do zakładki Snapper:

-
Wybierz migawkę(i), którą chcesz usunąć z listy.
-
Kliknij przycisk
Usuńznajdujący się na górze okna. -
Zregeneruj wpisy bootloadera, aby odzwierciedlić zmiany:
systemd-boot
Terminal window sudo sdboot-manage genGRUB
Terminal window sudo grub-mkconfig -o /boot/grub/grub.cfgLimine
Terminal window sudo limine-mkinitcpio
Sprawdź ich Oficjalne Wiki, aby uzyskać bardziej szczegółowe informacje o tym, co można zrobić.
Snapper (CLI)
Dział zatytułowany „Snapper (CLI)”Teraz, gdy omówiliśmy, czym jest migawka Btrfs i jakie ma zastosowania, porozmawiajmy o tym, jak nimi zarządzać za pomocą narzędzia o nazwie Snapper, stworzonego przez Arvina Schnella z openSUSE.
CachyOS domyślnie używa następującej konfiguracji Snappera:
# subvolume to snapshotSUBVOLUME="/"
# filesystem typeFSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithmsQGROUP=""
# fraction or absolute size of the filesystems space the snapshots may useSPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be freeFREE_LIMIT="0.2"
# users and groups allowed to work with configALLOW_USERS=""ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots# directorySYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating# post-snapshotBACKGROUND_COMPARISON="yes"
# run daily number cleanupNUMBER_CLEANUP="yes"
# limit for number cleanupNUMBER_MIN_AGE="1800"NUMBER_LIMIT="50"NUMBER_LIMIT_IMPORTANT="15"
# create hourly snapshotsTIMELINE_CREATE="no"
# cleanup hourly snapshots after some timeTIMELINE_CLEANUP="yes"
# limits for timeline cleanupTIMELINE_MIN_AGE="1800"TIMELINE_LIMIT_HOURLY="5"TIMELINE_LIMIT_DAILY="7"TIMELINE_LIMIT_WEEKLY="0"TIMELINE_LIMIT_MONTHLY="0"TIMELINE_LIMIT_YEARLY="0"
# cleanup empty pre-post-pairsEMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanupEMPTY_PRE_POST_MIN_AGE="1800"Oto lista najczęstszych poleceń Snappera.
Pobierz bieżącą konfigurację:
sudo snapper get-configPrzykład wyjścia:
❯ snapper list-configsConfig │ Subvolume───────┼──────────root │ /Wyświetl dostępne migawki + szczegóły:
sudo snapper listPrzykład wyjścia:
# │ Type │ Pre # │ Date │ User │ Cleanup │ Description │ Userdata────┼────────┼───────┼──────────────────────────┼──────┼─────────┼──────────────────────────────────────────────────────────────────────────┼─────────0 │ single │ │ │ root │ │ current │715 │ pre │ │ Thu 22 Jan 2026 16:14:07 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │716 │ post │ 715 │ Thu 22 Jan 2026 16:14:25 │ root │ number │ docker-buildx lilv sof-firmware zed │717 │ pre │ │ Sat 24 Jan 2026 11:19:48 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │718 │ post │ 717 │ Sat 24 Jan 2026 11:20:19 │ root │ number │ bpf cachyos-hello cachyos-wallpapers cpupower jdk-openjdk ldb less libev │719 │ pre │ │ Sat 24 Jan 2026 11:20:31 │ root │ number │ pacman -U --config /etc/pacman.conf -- /home/mario/.cache/yay/visual-s │720 │ post │ 719 │ Sat 24 Jan 2026 11:20:36 │ root │ number │ visual-studio-code-bin │721 │ pre │ │ Sat 24 Jan 2026 20:46:40 │ root │ number │ pacman -Syu plasma-login-manager │722 │ post │ 721 │ Sat 24 Jan 2026 20:46:48 │ root │ number │ cmake fastfetch harfbuzz harfbuzz-icu jdk21-openjdk lib32-harfbuzz lib32 │723 │ pre │ │ Sat 24 Jan 2026 20:46:53 │ root │ number │ pacman -R sddm-kcm cachyos-themes-sddm sddm │724 │ post │ 723 │ Sat 24 Jan 2026 20:46:56 │ root │ number │ cachyos-themes-sddm sddm sddm-kcm │725 │ pre │ │ Sun 25 Jan 2026 08:05:05 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │726 │ post │ 725 │ Sun 25 Jan 2026 08:05:11 │ root │ number │ plasma-login-manager │727 │ pre │ │ Sun 25 Jan 2026 15:55:28 │ root │ number │ pacman -S --config /etc/pacman.conf -- cachyos-extra-znver4/caligula │728 │ post │ 727 │ Sun 25 Jan 2026 15:55:30 │ root │ number │ caligula │- Oto podsumowanie kolumn:
#: Wskazuje numer migawki, który jest używany w innych poleceniach.Type: Wskazuje, czy migawka jest pojedyncza, czy stanowi część pary przed/po.single: Te migawki nie mają specjalnego związku z innymi migawkami.pre: Te migawki są przeznaczone do wykonania przed jakąkolwiek zmianą w systemie (np. edycją pliku lub instalacją pakietu).post: Jak sama nazwa wskazuje, te migawki odnoszą się do migawek wykonanych po dokonaniu zmiany w systemie. Są one powiązane z odpowiadającą im migawkąpre.
Pre #: W przypadku migawekpost, ta kolumna wskazuje numer odpowiadającej im migawkipre.Date: Data i godzina utworzenia migawki.User: Użytkownik, który utworzył migawkę.Cleanup: Wskazuje algorytm czyszczenia zastosowany do migawki.- W Snapperze dostępnych jest kilka algorytmów czyszczenia, takich jak
number,timelineiempty-pre-post. W tym przykładzie użyto algorytmunumber, co oznacza, że starsze migawki będą usuwane na podstawie predefiniowanego limitu. timeline: Migawki są czyszczone na podstawie ich wieku i częstotliwości.empty-pre-post: Usuwa pary migawek przed/po z pustymi różnicami.
- W Snapperze dostępnych jest kilka algorytmów czyszczenia, takich jak
Description: Krótki opis migawki, często wskazujący powód jej utworzenia.Userdata: Dodatkowe dane zdefiniowane przez użytkownika powiązane z migawką. Aby uzyskać więcej szczegółów na temat kolumn wyjściowych
Utwórz nową migawkę:
sudo snapper create --type single --description "Mój opis migawki"Zmodyfikuj migawkę:
sudo snapper modify <opcja> <numer_migawki>Dostępne opcje:
Options for 'modify' command: --description, -d <description> Description for snapshot. --cleanup-algorithm, -c <algo> Cleanup algorithm for snapshot. --userdata, -u <userdata> Userdata for snapshot. --read-only Set snapshot read-only. --read-write Set snapshot read-write. --default Set snapshot as default snapshot.Przykład: Modyfikacja opisu migawki 729:
sudo snapper modify 729 --description 'Mój nowy opis migawki'Usuwanie migawek:
Usuń pojedynczą migawkę:
sudo snapper delete <numer_migawki>Usuń zakres migawek:
sudo snapper delete 718-721Migawki 718, 719, 720 i 721 zostaną usunięte.
Dokumentacja Snappera
Dział zatytułowany „Dokumentacja Snappera”Oficjalna strona man dla poleceń Snappera:
Przewodnik po pliku konfiguracyjnym Snappera:
Zalecenia i porady dotyczące Limine
Dział zatytułowany „Zalecenia i porady dotyczące Limine”Dostosuj ustawienia wyświetlania migawek w bootloaderze Limine
Dział zatytułowany „Dostosuj ustawienia wyświetlania migawek w bootloaderze Limine”- Ogranicz liczbę migawek wyświetlanych w menu bootloadera Limine, aby uniknąć bałaganu:
- Utwórz kopię zapasową pliku konfiguracyjnego limine-snapper-sync:
Terminal window sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig - Edytuj plik konfiguracyjny limine-snapper-sync:
Oczekiwany fragment wyjścia:
Terminal window sudo nano /etc/limine-snapper-sync.confOpcjonalnie dostosuj format nazwy migawki:Terminal window ### Max Snapshot Entries### Sets the limit for how many snapshot entries show up in the boot menu.### This depends on the size of your FAT32 boot partition and how many different kernel and module versions you want to keep.### A larger FAT32 boot partition allows more snapshot entries.MAX_SNAPSHOT_ENTRIES=10Terminal window ### Snapshot Name Format### Choose a format for how snapshot entries look in the Limine bootloader:### 0. ID=111 2023-12-20 10:59:59 (default)### 1. 111│2023-12-20 10:59:59### 2. 111 │ 2023-12-20 10:59:59### 3. 2023-12-20 10:59:59│111### 4. 2023-12-20 10:59:59 │ 111### 5. 2023-12-20 10:59:59### 6. 111### 7. 111│snapshot description### 8. 2023-12-20 10:59:59│snapshot description### 9. │snapshot descriptionSNAPSHOT_FORMAT_CHOICE=88to dobry wybór, ponieważ pokazuje datę i godzinę wraz z opisem migawki. - Zapisz plik i wyjdź, naciskając
CTRL+O,Enter,CTRL+X
Przywracanie z migawki
Dział zatytułowany „Przywracanie z migawki”Limine
- Z menu bootloadera Limine przejdź do menu Migawki:

- Wybierz migawkę i jądro, z których chcesz przywrócić:


- Twój system jest teraz w
trybie tylko do odczytu. Powinno pojawić się powiadomienie informujące, że wykryto migawkę, z prośbą o przywrócenie z niej:
- Kliknij
Przywróć teraz. Otworzy się okno terminala z monitem i poprosi o kilka potwierdzeń:Przykładowy monit o przywrócenie Snapshot ID : 2Date : 2026-01-26 11:19:14Description : nc-gitRestore method : replaceConfirm restore of snapshot 2 using the "replace" method?Type [y]es to restore, [l]ist to display all snapshots, or [c]ancel to abort.Your input: yesEnter a description for the "backup" of the subvolume: @Your input: @ - Wpisz
yesi opcjonalnie dodaj opis dla migawki zapasowej. - Rozpocznie się proces przywracania. Po zakończeniu wpisz
yesponownie w nowym monicie, aby ponownie uruchomić system:Terminal window The restore is complete. Please reboot now:Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.Your input: yes
GRUB
-
Z menu bootloadera GRUB uruchom system z wybranej migawki i jądra, które chcesz przywrócić.
-
Po uruchomieniu systemu otwórz Btrfs Assistant:
Terminal window btrfs-assistant-launcherAlternatywnie:
Terminal window sudo -E btrfs-assistant -
Przejdź do zakładki Snapper → zakładka „Przeglądaj/Przywróć” i wybierz migawkę, z której uruchomiłeś system:

-
Kliknij przycisk
Przywróći ponownie uruchom system, aby zastosować zmiany.