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 Repositorys. In einem Repository befindet sich das entsprechende Backup mit all seinen Versionen. Um ein solchen Repository anzulegen wird 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.

Star Lite Mk II mit deutscher Tastatur?

Auf dem Markt existieren einige Hersteller von Laptops, welche speziell für Nutzung von Linux gedacht sind. Eines der Exemplare, welches heraussticht ist der Star Lite Mk II. Dabei handelt es sich um ein 11-Zoll großes Gerät mit einem 1.1GHz Quad-Core Intel® Pentium® N4200, 8 GB RAM, einer 240 GB SSD und das Ganze bei einer Auflösung von 1920×1080 Pixeln.

Der Star Lite Mk II

Auch der Preis des Gerätes bewegt sich unterhalb der 500 € Grenze, sodass der Star Lite Mk II durchaus ein attraktives Angebot ist. Leider konnte ich auf der Webseite des Herstellers nirgends in Erfahrung bringen, ob das Gerät mit einer deutschen Tastatur angeboten wird. Das nahm ich zum Anlass beim Support nachzufragen und bekam folgende Antwort:

Currently, we don’t offer a German layout. We don’t have any plans at the moment but we are aware of the demand so it is on our radar! I would suggest subscribing to our newsletter as this is the first place updates are published :)

Der Antwort nach zu urteilen wird es in absehbarer Zeit nichts mit einem deutschen Tastaturlayout beim Star Lite Mk II, aber ganze hoffnungslos ist der Fall wohl nicht. Zu finden ist die Seite des Herstellers unter starlabs.systems.

bsnes für macOS

Nachdem bsnes wieder als einzelner Emulator zurückgekehrt ist, existieren mittlerweile auch Versionen für macOS. Während für die Windows-Version bisher immer Binaries angeboten wurden, war dies für die macOS-Version nicht der Fall.

bsnes unter macOS

Über die Nightly-Builds kann bsnes jetzt auch als Kompilat für macOS bezogen werden. Dazu muss auf der Seite mit den Nighly-Builds der entsprechende Build ausgewählt werden. Anschließend kann der gewünschte Build für macOS, Linux, FreeBSD und Windows heruntergeladen und genutzt werden. bsnes selbst ist unter der GPL lizenziert und freie Software.

PHP-Version in der Shell bei all-inkl einstellen

Beim Webhoster all-inkl wird bei den größeren Paketen ein SSH-Zugang zu einer Shell mit angeboten. Mit diesem Zugang ist es unter anderem möglich PHP auf der Konsole auszuführen. Standardmäßig geschieht dies über den Befehl php. Aktuell nutzt der Befehl die Version 7.0.33 von PHP. Soll stattdessen eine höhere Version genutzt werden, so kann die symbolische Verknüpfung entsprechend verändert werden:

ln -sfv /usr/bin/php73 /usr/bin/php

Damit würde der Befehl php nun auf ein PHP in Version 7.3 zeigen. Neben der Version 7.3 sind noch weitere Versionen verfügbar:

/usr/bin/php56
/usr/bin/php70
/usr/bin/php71
/usr/bin/php72
/usr/bin/php73

Auch ohne Änderung der symbolischen Verknüfung kann die gewünschte PHP-Version verwendet werden, indem sie direkt aufgerufen wird:

/usr/bin/php72 update.php

In diesem Fall würde das Skript update.php mit der PHP-Version 7.2 ausgeführt werden.

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