Docker (Auto)Backup mit Time Machine

Als erstes habe ich mir im Systemordner „/Library/Scripts/“ ein shell script namens „docker-backup.sh“ angelegt:

#!/bin/bash
set -euo pipefail

LOGFILE=“/var/log/timemachine_docker_backup.log“

log() {
echo „[$(date ‚+%Y-%m-%d %H:%M:%S‘)] $1“ >> „$LOGFILE“
}

DOCKER=“/Applications/Docker.app/Contents/Resources/bin/docker“
TMUTIL=“/usr/bin/tmutil“

log „Backup gestartet“

if [ ! -x „$DOCKER“ ]; then
log „Docker Binary nicht gefunden – Abbruch“
exit 1
fi

RUNNING_CONTAINERS=“$($DOCKER ps -q)“

log „Laufende Container: ${RUNNING_CONTAINERS:-keine}“

if [ -n „$RUNNING_CONTAINERS“ ]; then
$DOCKER stop $RUNNING_CONTAINERS >> „$LOGFILE“ 2>&1
log „Container gestoppt“
else
log „Keine laufenden Container“
fi

log „Time Machine Backup gestartet“
$TMUTIL startbackup –auto –block >> „$LOGFILE“ 2>&1
log „Time Machine Backup abgeschlossen“

if [ -n „$RUNNING_CONTAINERS“ ]; then
$DOCKER start $RUNNING_CONTAINERS >> „$LOGFILE“ 2>&1
log „Container neu gestartet“
fi

log „Backup-Prozess abgeschlossen“

Als nächstes wurde im System-Ordner „/Library/LaunchDaemons“ eine „com.local.timemachine.dockerbackup.plist“ mit folgendem Inhalt erstellt:

<?xml version=“1.0″ encoding=“UTF-8″?>
<!DOCTYPE plist PUBLIC „-//Apple//DTD PLIST 1.0//EN“ „http://www.apple.com/DTDs/PropertyList-1.0.dtd“>
<plist version=“1.0″>
<dict>
<key>Label</key>
<string>com.local.timemachine.dockerbackup</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Scripts/docker-backup.sh</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>StandardErrorPath</key>
<string>/tmp/docker-backup.error.log</string>
<key>StandardOutPath</key>
<string>/tmp/docker-backup.log</string>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</array>
<key>UserName</key>
<string>root</string>
</dict>
</plist>

Das Ganze ließ sich dann wohl auch mit entsprechend gesetzten Berechtigungen im Terminal aktivieren, woran ich letztlich gescheitert bin. Das Script wurde einfach nie wie definiert periodisch 1x täglich morgens um 05:00 Uhr ausgeführt.

Gelöst habe ich das Problem dann mit dem Tool Lingon X, welches dann ohne Umstände alles, wie gewünscht eingestellt hat.