Apple bietet mit der eingebauten Backup-Funktion Timemachine eine leicht zu bedienende und immer im Hintergrund laufende Backupsoftware an, die ohne weiteres Zutun die Daten des Mac’s sichert und diese im “Desasterfall” (oder bei einer Neuinstallation) zur Verfügung stellt. Oder auch für den Fall, dass man mal eine Datei gelöscht hat, die man nicht löschen wollte.
Timemachine ist somit eine super Geschichte. Man schließt eine externe Festplatte über USB oder Firewire an seinen Mac an und sichert auf dieser automatisch alle Backups. Alternativ bietet Apple (natürlich) auch eine externe, über LAN & WLAN erreichbare Speicherplatte (Timecapsule) an. Auch schön, dann kann diese irgendwo stehen und muss nicht direkt mit dem Mac verbunden sein. Macht sich zum Beispiel im Wohnzimmer ganz gut, wenn dort nicht noch mehr Kabel durch die Gegend liegen.
Leider hat aber auch die Timecapsule wieder einen kleinen (monetären) Nachteil: Günstig ist die nicht. Dafür kann die halt noch eine ganze Menge mehr als “nur” Daten speichern: Gigabit Switch, PPPoE Einwahl (man kann ein xDSL Modem anschließen und für DSL Einwahl nutzen), WLAN AP 2,4 und 5GHz und noch einiges mehr. Für einen Großteil sicherlich einfach zu viel, da ein Großteil eh schon mit vorhandener Hardware abgedeckt wird (man hat seinen Router, man braucht keinen Gigabit Switch). Also häufig einfach zu teuer und nicht individuell auf den eigenen Bedarf anpassbar….
Die Ausgangssituation:
Man hat sowieso schon einen Linux Rechner im lokalen Netz für Netzwerkdienste (NFS; Mail, Web usw.) laufen und besitzt eine “normale” Netzwerkausstattung mit Router inkl. Switchports, Verkabelung oder WLAN. Auf dem Rechner befinden sich noch genug Gigabytes freier Festplattenplatz (sinnigerweise im RAID…) und könnten für einen weiteren im Netzwerk befindlichen Mac Rechner genutzt werden. Der Mac soll den Speicherplatz sowohl für Backups über Timemachine als auch als “Netzwerklaufwerk” nutzen, zum Beispiel für den Austausch zwischen anderen nicht-Mac Rechnern und dem Mac selber. Auf diesem Rechner existieren NFS Freigaben für Linux Clients, die der Mac auch selber nutzen kann.
Problem
Leider ist es mit den NFS Freigaben nicht so einfach, diese auch für Timemachine Backups zu nutzen. NFS unterstützt eine Funktion nicht, die der Mac bei Timemachine einsetzt: Die Rückmeldung, ob die Daten nun auch wirklich geschrieben wurden. Somit kann man zwar Sparse-Bundles, die man auf sein NFS Share legt als Timemachine Ziel einrichten. Allerdings habe zumindest ich es nicht (trotz einiger Doku) hinbekommen, diese auch mit Timemachine zu nutzen. Jeder Versuch bricht nach einiger Zeit mit einer Fehlermeldung ab.
Schade. Damit fällt diese Variante leider flach. Eine andere Variante muss ran…
Die Idee:
Unterstützung für das Apple-File-Protokoll (AFP) auf dem Linux Rechner einrichten. Hierbei gleichzeitig den Timemachine Support für Freigaben anlegen. Die Freigabe für Timemachine auf dem Mac einrichten und hierdrauf seine Daten sichern. Gleichzeitig kann nun der von Timemachine genutzte Speicherplatz auf dem Linux Rechner über andere Mechanismen (Festplatten im RAID? Backup der Timemachine-Verzeichnisstruktur über Software-Backup? rsync?…) gesichert werden. Also hat man gleich auch noch von seinem Timemachine-Backup ein Backup. Ideal Daten-GAU-Paranoiker
Die Durchführung
Wir müssen verschiedene Schritte erfüllen, um eine nutzbare AFP Integration in das Linux auf dem Rechner (wir nennen ihn mal Datenbunker) für den Mac (Datensklave) zu integrieren.
- AFP Integration (netatalk) auf dem Datenbunker installieren
- einen Bonjour-ähnlichen Dienst (dient der automatischen Bekanntgabe von Freigaben und Services im Mac-Netzwerk) installieren
- Zugriffsrechte überlegen
- Freigaben auf dem Datenbunker anlegen
- Freigaben auf dem Datensklaven einrichten
- Bonjour-Dienst einrichten
- Timemachine konfigurieren und testen
Schritt 1:
Wir richten einen Dienst ein, der AFP Unterstützung auf das Linux bringt. Hierzu eignet sich netatalk. Netatalk bringt eine AFP (Apple File Protocol) Integration für Linux und UNIX Derivate (xBSD) mit sich und unterstützt neben der Dateifreigabe zusätzlich noch eine Druckerunterstützung.
Hierzu installieren wir über einen im Linux integrierten Paketmanager (apt, RPM o.ä.) oder aus den Sourcen selber mindestens Version 2.0.5. Da ich dieses hier exemplarisch an einem Ubuntu Linux erkläre gehe ich von einem apt-ähnlichen Paketmanager aus.
Über den Paketmanager wird das Paket netatalk installiert:
sudo apt-get install netatalk
Damit wird die derzeit in den Repositorys verfügbare Version 2.0.5.3 inklusive aller Abhängigkeiten installiert. Aktuell seit dem 12. Juli 2010 im Source bei Sourceforge ist die Version 2.1.3. Wer also diese installieren möchte, der nimmt diese.
Alle nötigen Konfigurationsdateien werden unter /etc/netatalk abgelegt. Darin befinden sich nun ein paar Dateien, die uns später interessieren werden.
Unter (Ubuntu) Linux liegt in /etc/default eine Datei netatalk, in welcher ein paar Grundlagen definiert sind.
#$ cat /etc/default/netatalk
AFPD_MAX_CLIENTS=50
ATALK_NAME=`/bin/hostname --short`
ATALK_MAC_CHARSET='MAC_ROMAN'
ATALK_UNIX_CHARSET='LOCALE'
AFPD_GUEST=nobody
ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no
ATALK_BGROUND=no
export ATALK_MAC_CHARSET
export ATALK_UNIX_CHARSET
Wichtig sind hier die Optionen CNID_METAD_RUN=yes. Diese Option dient der Umsetzung von HFS+ Dateiattributen auf ext3. Sollte man ruhig eingeschaltet lassen, da man auf dem Linux sicherlich kein HFS+ nutzt.
Zweite wichtige Option: AFPD_RUN=yes . Damit wird festgelegt, dass der AFPdaemon gestartet wird. Sollte man nun noch die Druckerunterstützung aktivieren wollen, so muss noch PAPD_RUN=no auf yes gesetzt werden.
Schritt 2:
Installation und Einrichtung von Avahi, einem Dienst, der unter Linux den im LAN befindlichen Macs einen Bonjour-ähnlichen Service-Übersichtsdienst zur Verfügung stellt.
Avahi wird über
#$ sudo apt-get install avahi-daemon
#$ sudo apt-get install libnss-mdns
installiert. Automatisch werden im Verzeichnis /etc/avahi und dem Unterverzeichnis services/ Dateien für den Dienst angelegt.
Wir erstellen eine Datei /etc/avahi/services/afpd.services mit dem Inhalt:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Datenbunker %h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>
Mit dieser Datei wird der Avahi Dienst angewiesen, den Macs in der Netzwerkübersicht einen Eintag mit dem Hostname des Linux-Hosts sowie einem Symbol anzuzeigen. Die Symbole lassen sich mit dem Wert model=XYZ in der Zeile definieren. Verschiedene Werte lassen sich einstellen, so dass unterschiedliche Symbole im Finder des Mac angezeigt werden. Mögliche Werte (vll. auch mehr?) sind: Xserve, Mac, MacBook, MacBookPro, Powerbook, MacBookAir, MacPro, AppleTV1,1, AirPort, Macmini und natürlich TimeCapsule.
Wir wählen, da wir quasi sowas wie eine TimeCapsule errichten, das entsprechende Icon über den Wert <txt-record>model=TimeCapsule</txt-record> aus. Auch, wenn es nicht ganz korrekt ist 
Der Übersichtlichkeit halber setzen wir noch Datenbunker %h. Damit wird nicht nur der Hostname des Linuxhosts sondern noch ein etwas erkärender Name angezeigt. Zudem kann es auch vorkommen, dass man mehrere AFP Shares von verschiedenen Hosts mounten möchte.
Letzte nötige Änderung für Avahi: Wir fügen an das Ende der mit hosts: beginnenden Zeile der Datei /etc/nsswitch.conf den Wert mdns an. Die Zeile sieht dann so aus:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
Schritt 3:
Freigaben einrichten: Die Freigaben werden über die Datei /etc/netatalk/AppleVolumes.default definiert. Hierdrin legen wir zwei Einträge an. Der erste Eintrag ist für Die Homeverzeichnisse der Benutzer, der zweite Eintrag für die Timemachine Freigabe. Man kann nach belieben weitere Einträge (z.B. für verschiedene Zwecke: MP3s, filme usw.) einfügen.
Freigaben der Homeverzeichnisse:
In der Datei /etc/netatalk/AppleVolumes.default ist die Zeile
~/ "Heimverzeichnisse auf Datenbunker"
zuständig. Wir verzichten auf weitere Einschränkungen (wie zum Beispiel die Angabe, welche Benutzer erlaubt sind; wir erlauben hiermit alles).
Zweite Zeile (alles in einer Zeile!) zur Freigabe für Timemachine:
/freigabe/auf/host allow:erlaubterUser,@erlaubteGruppe Datenbunker dbpath:/var/AppleDB options:usedot,noadouble,nohex,upriv,tm
Kurze Erklärung zu den einzelnen Werten:
/freigabe/auf/host: Hiermit geben wir auf auf dem Host das benannte Verzeichnis frei.
erlaubterUser: Diesmal eine Beschränkung auf den Benutzer erlaubterUser, mehrere werden mit Kommata getrennt.
@erlaubteGruppe: Wir beschränken den Zugriff auf die Gruppe
Datenbunker: Wir geben einen Namen für das Share mit, wird im Finder bei der Anmeldung in der Übersicht zur Auswahl angezeigt.
dbpath:/var/AppleDB: Pfad, wo auf dem Host die für AFP nötige File-DB hinterlegt wird.
options:usedot,noadouble,nohex,upriv,tm: Default-Werte. Wichtig hier die Option tm. Damit wird das Share für Timemachine nutzbar gemacht.
Schritt 4:
Wir starten die zwei Dienste avahi-daemon und netatalk:
sudo /etc/init.d/avahi-daemon start
sudo /etc/init.d/netatalk start
Laufen die Dienste u.U. schon (ps -aux | grep avahi), so müssen die restartet werden. Aber das versteht sich ja von selbst
Schritt 5:
Den Mac davon überzeugen, dass er das Share nun f. Timemachine nehmen soll.
Hierzu öffnen wir ein Terminal, geben dort defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1 ein. Fertig. Damit akzeptiert der Mac auch die nicht-wirklich-Apple-Timemachine-Shares.
Schritt 6:
Freigabe im Finder mounten, Timemachine einrichten, testen.
Im Finder “Mit Server verbinden” auswählen. Als Hostname afp://IP_DES_LINUXHOSTs eingeben, verbinden auswählen. Man wird nach einem Benutzer und Passwort gefragt. Hier den Benutzernamen auf dem Linux und das dazugehörige Passwort eingeben. Der Finder zeigt beim Verbindeversuch nun die zwei oben definierten Freigaben zur Auswahl an. Auswählen, fertig.
Man ist nun mit dem Share verbunden und kann im Finder darauf zugreifen.
In der Timemachine-Konfiguration kann nun dieses Share als Timemachine-Backup-Ziel ausgewählt werden. Timemachine fängt nun an und legt auf dem Share die passenden Verzeichnisse f. das Backup an. Man kann auf dem Host einmal nachsehen und sieht, dass nun einige Verzeichnisse dazu gekommen sind. Das wichtigste ist wohl das Timemachine-Backup-Spare.
Das Verzeichnis heißt zum Beispiel Besitzer des Macs.sparsebundle. Zusätzlich werden noch weitere Verzeichnisse angelegt.
Fehlende Schreibrechte:
Wird der Zugriff im Finder verweigert und es kann nicht geschrieben werden (Fehlermeldung: Fehlende Rechte), einfach mal die Rechte der Freigabe /freigabe/auf/host auf dem Linux Host vergleichen. Vll. fehlen hier noch ein paar Rechte.
Fazit:
Für wenig Geld (und eigentlich auch recht wenig Aufwand) kann eine für den Mac erreichbare Speicherlösung aufgebaut werden. Natürlich ist es nicht so einfach wie eine Timecapsule (auspacken, anschließen und Apple-Voodo abwarten), aber sicherlich eine ideale Ergänzung im Netzwerk und mit Sicherheit ein Stück flexibler. Schließlich kann man auf dem Linux Host noch weitere Dienste einrichten und nutzen, die es auf der Timecapsule nicht gibt. Selbst mit einer (Neu-)Investition in eine große Festplatte und vll. einen Nettop als Linux-Host kommt man noch günstig(er) weg.
Was man nun noch mal testen müsste: Restore über das Share. Aber das kommt irgendwann später….
Also rundum eine gute Geschichte. Schnell, leicht und flexibel. Und zudem günstig….
Weitere Infos/ Quellen
http://www.kde4.de/?page_id=389#InstallationAvahi
http://buffalo.nas-central.org/wiki/Time_Machine_%26_Time_Capsule_support_on_your_LinkStation
http://thomas.pelletier.im/2010/01/time-machine-freebsd-and-afp-are-on-a-little-boat/
http://www.micromux.com/2010/04/28/timemachine-backups-to-nfs/