Turris Omnia - Snapshotverwaltung mit Schnapps

Datum

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.

Autor
Kategorien Router, Btrfs

PRTG Map