Der Public/Drop Box Ordner unter macOS

Wer ein macOS-System sein Eignen nennt, wird im Home-Verzeichnis des jeweiligen Nutzers einen Public-Ordner und in diesem einen Ordner mit dem Namen Drop Box finden. Wer jetzt denkt, das dieser Ordner etwas mit dem Dienst Dropbox zu hat, der irrt.

Stattdessen handelt es sich um einen automatisch erzeugten Ordner seitens macOS, der mit der Dateifreigabe bzw. dem Austausch von Dateien zu tun hat. Da dieser Ordner bei den meisten Nutzern nicht benötigt wird, kann die Freigabe und der Ordner gelöscht werden. Dazu müssen sie Systemeinstellungen geöffnet werden und dort der Punkt Freigaben und dort wiederum der Punkt Dateifreigabe ausgewählt werden.

Die entsprechende Freigabe in den Systemeinstellungen von macOS

Der eigentliche Public-Ordner kann allerdings nicht einfach gelöscht werden, da er nicht mit Nutzerrechten angelegt wurde. Hier kommt das Terminal zur Hilfe:

sudo rm -R ~/Public

Anschließend ist der Ordner und die Freigabe Geschichte.

Thunderbird-Log unter macOS erzeugen

Für die Suche nach einem Problem mit einem IMAP-Server wollte ich unter anderem das Log des Mail-Clienten sehen. In meinem Fall ist dies Thunderbird. Thunderbird ist in der Lage Log-Dateien zu schreiben. Allerdings müssen dafür im Terminal unter macOS einige Umgebungsvariablen gesetzt werden:

export MOZ_LOG=POP3:4,IMAP:4,SMTP:4
export MOZ_LOG_FILE=~/thunderbird.log

Anschließend kann Thunderbird über das Terminal gestartet werden:

/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin

Während der Ausführung schreibt Thunderbird die entsprechenden Ereignisse in die konfigurierte Log-Datei.

Videos im Terminal unter Ubuntu in MP3s umwandeln

Videos können unter Ubuntu mithilfe von FFmpeg einfach in MP3s umgewandelt werden:

ffmpeg -i file.mp4 file.mp3

Mithilfe von find kann diese Operation auch für ein komplettes Verzeichnis durchgeführt werden:

find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Da diese Operation einige Zeit in Anspruch nimmt, kann das Ganze auch mittels screen ausgeführt und so in den Hintergrund verlagert werden:

screen find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Base64 kodierte Daten in Binärdateien umwandeln

Base64 ist eine Kodierung, welche es ermöglicht binäre Daten in ASCII-Zeichen zu kodieren. Genutzt wird diese Art der Kodierung unter anderem beim Versenden von Anhängen in Mails. Manchmal ist es notwendig solche Daten im Terminal wieder in ihre binäre Form zu verwandeln. Dazu kann unter Linux und macOS das Werkzeug base64 genutzt werden:

base64 base64.txt --decode > binary.dat

Mit diesem Befehl wird der Inhalt der Datei base64.txt dekodiert und in die Datei binary.dat geschrieben.

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.