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.
$restic restore latest --target /tmp/restore --include /etc
Po częściach:
latest— najnowszy snapshot. Można podać konkretny ID (a1b2c3d4) albolatestz filtrem (latest --host raspi --tag auto)--target /tmp/restore— gdzie zapisać. Restic odtworzy tu pełną strukturę:/etc/passwdz backupu wyląduje w/tmp/restore/etc/passwd--include /etc— przywróć tylko to co pasuje. Bez tego kopiuje cały snapshot
Częste warianty
#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
$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.
$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
/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
#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
$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
| Cecha | restore | mount |
|---|---|---|
| Co robi | Kopiuje pliki na dysk | Pokazuje repo jako katalog |
| Zajmuje miejsce | Tak (kopia 1:1) | Nie (wirtualnie) |
| Start | Od razu kopiuje | Natychmiast, dane on-demand |
| Wiele snapshotów naraz | Nie | Tak — wszystkie widoczne |
| Trzyma terminal | Nie | Tak (proces na żywo) |
| Najlepsze do | Pełnego przywracania | Przeglą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.