Da der Omnia Standardmäßig auf Btrfs aufbaut, bietet sich die Snapshotfunktionalität an. Hierzu hat die CZ.NIC ein eigenes Tool namens „schnapps“ geschaffen.
Dieses erstellt vor und nach Updates automatisch einen Snapshot.
Es gibt aber noch mehr Funktionen. Beispielsweise können auch Snapshots manuell erzeugt werden, bevor zb. Konfigurationsänderungen durchgeführt werden.
Anzeigen
Dies funktioniert mit schnapps list
, hier werden alle vorhandenen Snapshots gelistet. Mit Snapshot ID, Typ, Datum der Erstellung und Bezeichnung.
root@turris:~# schnapps list
# | Type | Date | Description
------+-----------+---------------------------+---------------------------------
1 | pre | 2018-06-11 21:10:10 +0200 | Automatic pre-update snapshot
2 | post | 2018-06-11 21:10:12 +0200 | Automatic post-update snapshot
3 | pre | 2018-06-11 23:27:16 +0200 | Automatic pre-update snapshot
4 | post | 2018-06-11 23:27:27 +0200 | Automatic post-update snapshot
Erstellen
schnapps create
Beispielsweise legt schnapps create
den folgenden Eintrag an
5 | single | 2018-06-15 16:27:56 +0200 | User created snapshot
Es ist möglich eine Beschreibung mitzugeben, dies ist mit schnapps create "<Beschreibung>"
möglich.
5 | single | 2018-06-14 16:30:51 +0200 | Konfiguration ok
Löschen
schnapps delete <Snapshot ID>
Rollback
schnapps rollback <Snapshot ID>
root@turris:/# schnapps rollback 9
Current state saved as snapshot number 11
Rolled back to snapshot 9
Create subvolume '/tmp/certstore/certbackup'
Vergleichen
schnapps cmp <Snapshot ID1> <Snapshot ID2>
root@turris:/# schnapps cmp 9 10
Comparing snapshots 9 and 10
This can take a while, please be patient.
Meaning of the lines is following:
- file file present in 9 and missing in 10
+ file file not present in 9 but exists in 10
~ file file in 9 differs from file in 10
~ /root/.viminfo
~ /testdatei
Es gibt in Snapshot10 eine Datei mehr, eine weniger und eine wurde geändert als in Snapshot9.
erweitertes Vergleichen
schnapps diff <Snapshot ID1> <Snapshot ID2>
root@turris:/# schnapps diff 9 10
diff -Nru @9/root/.viminfo @10/root/.viminfo
--- @9/root/.viminfo 2018-06-15 16:41:21.730000000 +0200
+++ @10/root/.viminfo 2018-06-15 16:48:56.440000000 +0200
@@ -23,13 +23,31 @@
nameserver 192.168.22.2
# File marks:
-'0 1 9 /testdatei
-'1 3 22 /mnt/snapshot-@7/etc/resolv.conf
-'2 2 0 /etc/resolv.conf
-'3 3 22 /etc/resolv.conf
+'0 2 8 /testdatei
+'1 1 9 /testdatei
+'2 3 22 /mnt/snapshot-@7/etc/resolv.conf
+'3 2 0 /etc/resolv.conf
+'4 3 22 /etc/resolv.conf
# Jumplist (newest first):
--' 1 9 /testdatei
+-' 2 8 /testdatei
+-' 1 0 /testdatei
+-' 3 22 /mnt/snapshot-@7/etc/resolv.conf
+-' 1 0 /mnt/snapshot-@7/etc/resolv.conf
+-' 2 0 /etc/resolv.conf
+-' 1 0 /etc/resolv.conf
+-' 3 22 /etc/resolv.conf
+-' 2 0 /etc/resolv.conf
+-' 1 0 /etc/resolv.conf
+-' 3 22 /etc/resolv.conf
+-' 3 22 /mnt/snapshot-@7/etc/resolv.conf
+-' 1 0 /mnt/snapshot-@7/etc/resolv.conf
+-' 2 0 /etc/resolv.conf
+-' 1 0 /etc/resolv.conf
+-' 3 22 /etc/resolv.conf
+-' 2 0 /etc/resolv.conf
+-' 1 0 /etc/resolv.conf
+-' 3 22 /etc/resolv.conf
-' 3 22 /mnt/snapshot-@7/etc/resolv.conf
-' 1 0 /mnt/snapshot-@7/etc/resolv.conf
-' 2 0 /etc/resolv.conf
@@ -50,10 +68,11 @@
# History of marks within files (newest to oldest):
> /testdatei
- " 1 9
- ^ 1 10
- . 1 9
- + 1 9
+ " 2 8
+ ^ 2 9
+ . 2 8
+ + 1 10
+ + 2 8
> /mnt/snapshot-@7/etc/resolv.conf
" 3 22
diff -Nru @9/testdatei @10/testdatei
--- @9/testdatei 2018-06-15 16:41:21.720000000 +0200
+++ @10/testdatei 2018-06-15 16:48:56.430000000 +0200
@@ -1 +1,2 @@
some stuff
+aenderung
Beispielsweise wurde in der Datei /testdatei
die Zeile „aenderung“ hinzugefügt.
Aufräumen
schnapps cleanup
root@turris:~# schnapps cleanup
Looking for old snapshots...
Hier werden anhand der Aufbewahrungsregeln unter /etc/config/schnapps
Snapshots gelöscht, die überflüssig sind.
Bearbeiten
schnapps modify <Snapshot ID> <Option> "<Änderung>"
Es lässt sich der Snapshottyp wie single
, time
, pre
, post
mit -t
ändern. Sowie die Beschreibung mit -d
.
Mount
schnapps mount <Snapshot ID>
Nun wird ein Snapshot gemounted als Verzeichnis.
/mnt/snapshot-@<Snapshot ID>
Dieser kann gelesen und beschrieben werden.
Das entmounten funktioniert dagegen wieder über
umount /mnt/snapshot-@<Snapshot ID>
Export
schnapps export <Snapshot ID> <Ablageorder>
Der Pfad muss in einen Order gehen, da automatisch eine omnia-medkit-<Snapshot ID>.tar.gz
erstellt wird. Zusätzlich wird eine .info erstellt, diese ist notwendig für einen Snapshotimport.
Import
schnapps import <Pfad zu omnia-medkit-<Snapshot ID>.info>
Der Snapshot wird mit der nächsten Snapshot ID in die Liste aufgenommen.
Sollten also Snapshots mit der Nummer 1,2,3,5 vorhanden sein, wird der importierte Snapshot mit der ID 6 versehen.