11 posts 44 tags 7 domains

Odzyskiwanie danych z restica — restore vs mount

Dwie drogi do plików w backupie restic: restore kopiuje na dysk, mount pokazuje repo jako wirtualny system plików. Kiedy używać której.

Problem

Backup masz, działa codziennie, snapshoty się gromadzą. Pytanie kluczowe: jak się do tego dobrać kiedy coś trzeba odzyskać? Restic daje dwa zupełnie różne narzędzia — restore i mount. Każde do innej sytuacji.

restic restore — kopia plików na dysk

restore wyciąga wybrane pliki ze snapshota i zapisuje je w docelowej lokalizacji. To zwykła kopia 1:1, taka sama struktura katalogów jak w backupie.

bash
$restic restore latest --target /tmp/restore --include /etc

Po częściach:

  • latest — najnowszy snapshot. Można podać konkretny ID (a1b2c3d4) albo latest z filtrem (latest --host raspi --tag auto)
  • --target /tmp/restore — gdzie zapisać. Restic odtworzy tu pełną strukturę: /etc/passwd z backupu wyląduje w /tmp/restore/etc/passwd
  • --include /etc — przywróć tylko to co pasuje. Bez tego kopiuje cały snapshot

Częste warianty

bash
#Cały snapshot
$restic restore latest --target /tmp/restore
#Pojedynczy plik
$restic restore latest --target /tmp/restore \
--include /etc/nginx/nginx.conf
#Wiele ścieżek
$restic restore latest --target /tmp/restore \
--include /etc \
--include /var/www
#Wykluczanie wzorcem
$restic restore latest --target /tmp/restore --exclude '*.log'
#Konkretny snapshot po ID
$restic restore a1b2c3d4 --target /tmp/restore

Przywracanie nadpisujące

bash
$restic restore latest --target /

Kiedy używać restore: gdy wiesz co odzyskujesz, ile tego jest, i potrzebujesz fizycznych plików (do skryptu, migracji, odtworzenia po awarii dysku).

restic mount — backup jako wirtualny FS

mount montuje całe repo jako system plików przez FUSE. Chodzisz po nim jak po zwykłym katalogu, ale fizycznie nic się nie kopiuje — pliki ściągają się on-demand kiedy do nich zaglądasz.

bash
$sudo mkdir -p /mnt/restic
$sudo restic mount /mnt/restic

To proces na pierwszym planie — terminal zostaje zajęty komunikatem typu Now serving the repository at /mnt/restic. W drugim oknie chodzisz po plikach.

Odmontowanie: Ctrl+C w oknie z mount, albo fusermount -u /mnt/restic z innego terminala.

Co tam zobaczysz

text
/mnt/restic/
├── snapshots/
│   ├── latest/                    # symlink na najnowszy
│   ├── 2026-05-09T03:30:15/       # snapshoty po dacie
│   └── 2026-05-08T03:30:11/
├── hosts/
│   └── raspi/                     # snapshoty pogrupowane per host
├── tags/
│   └── auto/                      # per tag
└── ids/
    └── a1b2c3d4/                  # po ID

Wewnątrz każdego snapshota — pełna oryginalna struktura plików.

Praktyczne zastosowania

bash
#Przeglądanie zawartości
$ls /mnt/restic/snapshots/latest/etc/
$cat /mnt/restic/snapshots/latest/etc/nginx/nginx.conf
#Diff dwóch wersji tego samego pliku
$diff \
/mnt/restic/snapshots/2026-05-09T03:30:15/etc/nginx/nginx.conf \
/mnt/restic/snapshots/2026-05-02T03:30:11/etc/nginx/nginx.conf
#Wyciągnięcie pojedynczego pliku
$cp /mnt/restic/snapshots/latest/etc/passwd /tmp/
#Przeszukiwanie historii
$grep -r "ServerName" /mnt/restic/snapshots/latest/etc/apache2/

Wymagania

bash
$sudo apt install fuse

Na Raspberry Pi i większości distro już jest. Jeżeli backup robi root, mount też odpalaj jako root — inaczej nie odczyta plików spoza Twojego usera.

Kiedy używać mount: gdy nie wiesz dokładnie czego szukasz, chcesz porównywać wersje, zerknąć co było w pliku tydzień temu, eksplorować historię. To narzędzie do dochodzenia śledczego, nie do odtwarzania.

Porównanie

Cecharestoremount
Co robiKopiuje pliki na dyskPokazuje repo jako katalog
Zajmuje miejsceTak (kopia 1:1)Nie (wirtualnie)
StartOd razu kopiujeNatychmiast, dane on-demand
Wiele snapshotów narazNieTak — wszystkie widoczne
Trzyma terminalNieTak (proces na żywo)
Najlepsze doPełnego przywracaniaPrzeglądania, eksploracji

Wskazówka praktyczna

W codziennym życiu częściej sięgasz po mount — szybko zerknąć co było, wyciągnąć jeden plik. restore używasz rzadziej, ale wtedy coś się naprawdę zepsuło: awaria dysku, błędne rm -rf, migracja na nowy sprzęt.

Co się dzieje pod spodem

restore ściąga z repo bloki potrzebne do złożenia plików, deszyfruje je i zapisuje na docelowy dysk — proces sekwencyjny, ograniczony przepustowością łącza i dysku.

mount korzysta z FUSE (Filesystem in Userspace) — restic rejestruje się jako provider i obsługuje żądania jądra. Otwarcie pliku → restic czyta z repo dokładnie te bloki, które aplikacja chce odczytać. Stąd cat na 100-megowym pliku ściągnie 100 MB, ale head ściągnie tylko pierwszych kilka KB.