Restic für Backups nutzen

Für Backups nutze ich seit vielen Jahren rsync-time-backup. Allerdings hörte ich in letzter Zeit viel gutes über die freie Software Restic. Restic selbst wird über GitHub entwickelt und ist unter der BSD-Lizenz in der Zweiklausel-Version lizenziert. Unter Linux und macOS kann Restic einfach über entsprechende Paketmanager installiert werden:

brew install restic

Restic arbeiten mit sogenannten Repositories. In einem Repository befindet sich das entsprechende Backup mit all seinen Versionen. Um ein solchen Repository anzugelegen wirde der Befehl:

restic init --repo ./

genutzt. Bei Restic ist jedes Backup automatisch verschlüsselt, sodass bereits beim Anlegen eines Backups ein entsprechendes Passwort vergeben werden muss. Die Daten werden mit AES, bei 256 Bit, verschlüsselt.

restic.net

Danach kann theoretisch mit dem ersten Backup begonnen werden:

restic -r /Volumes/Volume/ResticRepository backup /Users/User

In diesem Fall würde der Ordner /Users/User/ in das Restic-Repository gesichert. Bevor das Backup startet, muss das entsprechende Passwort des Repositorys eingegeben werden. Anschließend wird der Nutzer über den Fortschritt des Prozesses informiert:

repository 567f35fa opened successfully, password is correct
created new cache in /Users/User/Library/Caches/restic
[0:09] 10 files 4.296 MiB, total 451 files 224.551 MiB, 0 errors
/Users/User/System/btrfstune
/Users/User/System/busybox
...

Nach dem Abschluss des Backups erscheint eine entsprechende Meldung im Terminal:

Files:          25 new,     0 changed,     0 unmodified
Dirs:            2 new,     0 changed,     0 unmodified
Added to the repo: 616.694 KiB

processed 25 files, 615.493 KiB in 0:00
snapshot 6c0d7af6 saved

Nun verfügt der Nutzer über ein Backup Repository mit einem bzw. mehreren Snapshots. Die angelegten Snapshots können über dem Befehl:

restic -r /Volumes/Volume/ResticRepository snapshots

angezeigt werden. Der Nutzer erhält eine entsprechende Ausgabe im Terminal:

repository fd5947c7 opened successfully, password is correct
ID        Time                 Host        Tags        Paths
------------------------------------------------------------------------------
6c0d7af6  2020-01-05 10:09:15  Earth.local             /Users/User/System
31d3160f  2020-01-05 10:11:30  Earth.local             /Users/User/System
38d6cbca  2020-01-05 10:15:09  Earth.local             /Users/User/System
ea96fa22  2020-01-05 10:15:20  Earth.local             /Users/User/System
------------------------------------------------------------------------------
4 snapshots

Das beste Backup nutzt nichts, wenn es nicht wiederhergestellt werden kann. Dazu wird die Option restore genutzt:

restic -r /Volumes/Volume/ResticRepository restore 38d6cbca --target /Users/User/System

Anschließend wird der gewünschte Snapshop wieder hergestellt:

repository fd5947c7 opened successfully, password is correct
restoring  to /Users/User/System

Soll anstatt eines bestimmten Snapshot der letzte Snapshot wiederhergestellt werden so wird anstatt einer Snapshot-ID einfach latest als Wert angegeben. Soll nur eine einzelne Datei wiederhergestellt werden, ist das komplette zurückspielen eines Backup eher suboptimal. Für einen solchen Fall können die Snapshots im Dateisystem gemountet werden.

restic -r /Volumes/Volume/ResticRepository mount /Volumes/Volume/ResticRepositoryMounted

Anschließend wird das Repository im Dateisystem unter dem angegebenen Mountpoint eingebunden:

repository fd5947c7 opened successfully, password is correct
Now serving the repository at /Volumes/Volume/ResticRepositoryMounted
When finished, quit with Ctrl-c or umount the mountpoint.

Im Gegensatz zu den Befehlen zur Wiederherstellung des Backups muss beim Mounten keine Snapshot-ID angegeben werden. In der gemounteten Struktur werden stattdessen alle Snapshots angezeigt. Die gewünschte Datei zur Wiederherstellung kann somit gesucht und wiederhergestellt werden.

Beim Backup sollen in vielen Fällen bestimmte Dateien nicht gesichert werden. Dies können z.B. temporäre Dateien oder Caches sein. Um diese Datei vom Backup auszuschließen, kann ein sogenanntes Exclude File genutzt werden:

restic -r /Volumes/Volume/ResticRepository backup /Users/User/System --exclude-file="/Users/User/excludes.txt"

Eine solche Datei könnte z.B. wie folgt aussehen:

+ /etc/
+ /home/
+ /root/
+ /srv/
+ /usr/local/
+ /var/

- /*
- /var/cache/*
- /var/lib/lxcfs/*
- /var/log/*
- /var/tmp/*

Neben diesen Basisfunktionalitäten, verfügt Restic über weitere Funktionen, so z.B. zum Löschen alter Snapshots nach bestimmten Regeln. Alles in allem wirkt Restic für mich wie eine durchdachte Backup-Lösung, deren Nutzung durchaus ins Auge gefasst werden kann.

MikroTik-App für iOS

Für die Verwaltung eines MikroTik-Routers können unterschiedlichste Möglichkeiten gewählt werden. Neben dem Webinterface, WinBox oder der Konfiguration über das Terminal, z.B. per SSH, gibt es seit einiger Zeit auch eine App für iOS.

‎MikroTik
Preis: Kostenlos

Mit dieser App können die Geräte unterwegs verwaltet werden. Neben den Quick-Setup stehen auch die detaillierten Einstellungen der MikroTik-Router zur Verfügung.

Die MikroTik-App auf einem iPhone

Früher standen nur Drittanbieter-Apps für die mobile Verwaltung von MikroTik-Routern zur Verfügung. Im Gegensatz zu diesen verrichtet die offizielle MikroTik-App klaglos ihren Dienst.

MikroTik
Preis: Kostenlos

Neben der iOS-App wird auch eine App für Android von MikroTik bereitgestellt.

Lizenz eines MikroTik-Routers sichern

Auf MikroTik-Routern läuft als Betriebssystem das sogenannte RouterOS. Dieses auf Linux basierende System ist für die Funktionalität des jeweiligen Routers zuständig. Zu jedem Router bzw. jeder RouterOS-Installation gehört eine entsprechende Lizenz. Im Terminal können sich die Informationen über die Lizenz über dem Befehl:

/system license print

angesehen werden. Der Nutzer erhält eine Auflistung der aktuellen Lizenz:

software-id: XXXX-XXXX
nlevel: 4
features:

MikroTik unterscheidet bei RouterOS-Lizenzen sogenannte Level. Um so höher das Level um so mehr VPN-Verbindungen und ähnliches können mit dem Gerät genutzt werden. Auch unterscheiden sich die unterschiedlichen Level nicht in ihrer Funktionalität. Im Normalfall ist die Lizenz sicher innerhalb des Routers abgelegt. Aber natürlich kann es passieren, dass die entsprechende Lizenz verloren geht. Für einen solchen Fall kann die Lizenz über das Terminal gesichert werden. Dazu dient der Befehl:

/system license output

Anschließend wird eine Datei nach dem Schema XXXX-XXXX auf dem Gerät abgelegt, welche z.B. über Files im Webinterface heruntergeladen werden kann. Soll die Lizenz später wieder auf dem Gerät aktiviert werden, kann hierfür der entsprechende Import genutzt werden:

/system license import file-name=XXXX-XXXX.key

Ist die Lizenz auf dem Gerät bereits vorhanden, erhält der Nutzer die Meldung:

failure: no new key found

Name eines MikroTik-Routers über das Terminal ändern

Jeder MikroTik-Router verfügt über einen Namen. Dieser Name kann unter anderem über das Terminal verändert werden. Nachdem eine Verbindung zum Router per SSH aufgenommen wurde:

ssh admin@192.168.1.1

kann im Terminal ein neuer Name über den Befehl system identity vergeben werden:

/system identity set name=Xena

Die Änderung ist sofort wirksam, was sich im Terminal durch den veränderten Prompt bemerkbar macht.

MikroTik-Router über das Terminal aktualisieren

Anfang des letzten Jahres schrieb ich einen Artikel darüber, wie ein MikroTik-Router über das Webinterface aktualisiert werden kann. Neben der Aktualisierung über das Webinterface, kann dieser Prozess auch direkt über das Terminal durchgeführt werden. Dazu muss sich per SSH mit dem Gerät verbunden werden:

ssh admin@192.168.1.1

Nachdem der Prompt erschienen ist, werden im ersten Schritt die Pakete aktualisiert und anschließend das System neu gestartet:

/system package update check-for-updates
/system package update download
/system reboot

Der Neustart des Routers muss hierbei bestätigt werden. Anschließend startet das System neu und installiert die aktuellen Pakete. Nach spätestens einigen Minuten sollte der Router wieder verfügbar sein, sodass sich wieder per SSH mit diesem verbunden werden kann. Im letzten Schritt wird der Bootloader des Routers aktualisiert. Die aktuelle Version kann hierbei über den Befehl:

/system routerboard print

eingesehen werden. Dabei werden eine Reihe von Informationen ausgegeben:

routerboard: yes
board-name: hAP lite
model: RouterBOARD 941-2nD
serial-number: XXXXXXXXXXXX
firmware-type: qca9531L
factory-firmware: 3.33
current-firmware: 3.33
upgrade-firmware: 6.46.1

Interessant ist hier vor allem der Eintrag current-firmware. Das eigentliche Update wird mit dem Befehl:

/system routerboard upgrade

nach einer Sicherheitsabfrage durchgeführt. Anschließend muss das System abermals neu gestartet werden:

/system reboot

Nachdem Neustart ist der Router damit auf die aktuellste Version aktualisiert.