Bis auf meinen Zocker Rechner und den Homeserver bin ich schon ein richtiger Appleleptiker. Zwei Macbook’s und zwei iPhones schwirren hier durch das Netz. Im Gegensatz zu mir ist meine Frau allerdings auf Backups durch Time Machine angewiesen. Meine Arbeit ist zu 90% auf Server, die restlichen 10% liegen im git oder auf dem Fileserver. Meine Frau hingegen muss als promovierende Wissenschaftlerin mit allerlei Dokumenten, Daten und Grafiken jonglieren. Solche Daten sind weder für ein SCM geeignet, noch ist es sonderlich komfortabel diese immer mit dem Fileserver abzugleichen. Und gerade hier spielt das Time Machine Backup seine Stärken aus, inklusive Versionierung der Daten. Man könnte es als maximal unkompliziert für den End User betrachten. Anschließen -> Click -> Backup läuft und funktioniert. Manchmal macht Apple halt doch was richtig.

Warum keine andere Lösung?

Backblaze bietet verschlüsselte Backups an. Diverse Sync Tools können automatisch ganze Verzeichnisse abgleichen. Ein eigener Owncloud/Nextcloud Server kann auch Daten synchron halten.

Weil es eben nicht maximal unkompliziert für den End User ist, welcher dann wieder dringend Support braucht.

Aktuell hat Sie eine externe Festplatte, welche ab und zu abgeschlossen wird und dann erstmal den ganzen Tag lang Dateien abgleicht, Größen berechnet und Backups schreibt. Zudem ist es nur sehr sporadisch und im Falle einer Katastrophe, ja ich versuche meine Backups Desaster Safe zu halten, wahrscheinlich noch am gleichen Ort wie das Notebook. Eine Timecapsule hat zwar den Vorteil, dass Backups kontinuierlich gemacht werden, ist aber auch stationär Zuhause. Zudem kostet ist der Preis extrem hoch und mit nur einer Platte nicht sonderlich ausfallsicher. Genau hier kommt der Homeserver ins Spiel:

  • Dauerhaft online für kontinuierliche Backups
  • Mehrere Festplatten bei denen die Daten mittels parity checks auf Konsistenz geprüft werden.
  • Verschlüsseltes Offsitebackups zu Amazon Clouddrive.

Da die Time Machine nicht mit simplen Dummspeichern arbeiten kann (warum kann ich nicht einfach ein Blockdevice auf einem NFS ablegen?) wird hier spezielle Software benötigt. Netatalk wird mir hier gute Dienste leisten.

So, genug Prosa.

Aktuell liefert Ubuntu 16.04 leider eine recht veraltete Version von Netatalk aus und in den PPA’s lässt sich auch nichts Besseres finden. Getreu dem Motto “Neu ist immer besser” kompiliere ich mir die aktuelle Version halt selber.

Zuerst die neue Version ziehen und die benötigten Pakete zum kompilieren.

wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.10.tar.gz?download -O netatalk-3.1.10.tar.gz

tar -xzf netatalk-3.1.10.tar.gz
cd netatalk-3.1.10

apt install build-essential libevent-dev libssl-dev \ 
  libgcrypt-dev libkrb5-dev libpam0g-dev libwrap0-dev \
  libdb-dev libtdb-dev libmysqlclient-dev avahi-daemon \
  libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev \
  systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev \
  libio-socket-inet6-perl tracker libtracker-sparql-1.0-dev \
  libtracker-miner-1.0-dev

Es empfiehlt sich die Compilieroptionen mittels ./configure --help zu prüfen.

Da ich zuhause keine Domäne, LDAP oder andersartige Anmeldung am Server nutze, habe ich bewusst auf die Module PAM, LDAP und Kerberos verzichtet. Auch muss man auf die tracker Version achten. Diese sollte(!) zwar 1.0 sein, kann aber je nach Installation abweichen. pkg-config --list-all | grep tracker

./configure \
--prefix=/srv/netatalk/bin/3.1.10 \
--without-pam \
--with-init-style=debian-systemd \
--without-libevent \
--without-tdb \
--without-kerberos \
--without-ldap \
--with-cracklib \
--with-dbus-daemon=/usr/bin/dbus-daemon \
--with-dbus-sysconf-dir=/etc/dbus-1/system.d \
--with-tracker-pkgconfig-version=1.0

make
make install 

Ich nutze eine sehr einfache afp.conf.

;
; Netatalk 3.x configuration file
; Disabled spotlight, because of MASSIVE CPU usage
;

[Global]
hostname    = mein.server.example.com
log file    = /var/log/netatalk.log
log level   = default:warn
;spotlight   = yes


[TimeMachine]
time machine    = yes
path        = /srv/netatalk/storage
valid users     = @timemachine
; 500 GB (units of MB)
vol size limit  = 500000

Abschließend noch ein paar Gedanken dazu:

  • User lassen sich so nicht in einzelene Verzeichnisse sperren. Dafür muss pro User ein separater Share konfiguriert werden. Für zwei User kann man das machen, bringt aber wenig.
  • Will man Netatalk groß ausrollen, empfiehlt sich ein Script welches die Shares baut.
  • Wir haben uns in der Firma dagegen entschieden. Jeder Mac User bekommt eine 1TB Festplatte. Das ist deutlich günstiger und wartungsärmer als 100TB Netzwerkspeicher.

Todo:

  • Testen ob ein restore problemlos funktioniert.