Netatalk-3-Konfiguration für Time-Machine-Backups

Um einen Linux-Server als Datenspeicher für Time-Machine-Backups einzurichten, müssen Sie das Apple File Protocol (AFP) unterstützen. Diese Aufgabe übernimmt das Programm netatalk. Die Konfiguration mit Netatalk 3 ist glücklicherweise ein Kinderspiel.

Netatalk 3 installieren

Die erste Hürde besteht aber darin, Netatalk 3 überhaupt zu installieren. Aktuelle Pakete sind momentan nur in wenigen Distributionen enthalten, z.B. in Fedora 23 oder in openSUSE 42.1. Debian stellt das Paket wegen angeblich unklaren Copyrights nicht mehr zur Verfügung. Unter Ubuntu gibt es nur die veraltete Version 2.2.5, deren Konfiguration vollkommen anders und wesentlich umständlicher verläuft als bei Version 3. Auch bei RHEL/CentOS fehlen Netatalk-Pakete, und das erstaunlicherweise auch in der EPEL-Paketquelle.

Tipps, wie Sie Netatalk auf diversen Distributionen manuell installieren, finden Sie hier:

Ich habe meine Tests mit Fedora 23 Beta durchgeführt, wo dnf install netatalk zum Ziel führt. Die weitere Anleitung bezieht sich also auf diese Distribution.

Konfiguration

Die Konfiguration für Netatalk befindet sich in der Datei /etc/netatalk/afp.conf. Die Syntax ist ähnlich wie bei Samba: Die Datei wird durch [name] in Abschnitte unterteilt, Einstellungen erfolgen in der Form parameter = wert. Es gibt zwei reservierte Abschnittsnamen, [Global] für Grundeinstellungen und [Homes] für Heimatverzeichnisse. Alle weiteren Abschnitte bezeichnen »Volumes«, also Netzwerkverzeichnisse. Die folgenden Zeilen veranschaulichen die Syntax:

# Datei /etc/netatalk/afp.conf

[Global]
# nur relevant, wenn der AFP-Server einen anderen
# Namen als den Linux-Hostnamen haben soll
hostname = f23pc

[Homes]
# alle Linux-Heimatverzeichnisse freigeben
# (optional, für Time Machine nicht erforderlich)
basedir regex = /home

[TimeM]
# Verzeichnis für Time Machine
path           = /data/tm
time machine   = yes
valid users    = kofler
vol size limit = 500000
# maximale Volume-Größe in MB, d.h. 500.000 MB = 500 GB

Netatalk berücksichtigt die Zugriffsrechte unter Linux. Beim TimeMachine-Verbindungsaufbau muss gemäß der obigen Konfiguration also als Loginname kofler und das dazugehörende Linux-Passwort angegeben werden. Das Verzeichnis /data/tm auf dem Linux-Server muss für kofler les- und schreibbar sein:

root# mkdir -p /data/tm
root# chown kofler /data/tm

Firewall

Netatalk kommuniziert über den Port 548. Wenn dieser Port durch eine Firewall blockiert ist, was unter CentOS, Fedora, RHEL und SUSE der Fall ist, müssen Sie hierfür eine Ausnahmeregel definieren. Damit OS~X überhaupt weiß, dass es einen neuen AFP-Server im Netz gibt, muss außerdem der Avahi-Dämon via MDNS kommunizeren dürfen.

In den folgenden Kommandos für Fedora/CentOS/RHEL findet das erste firewall-cmd-Kommando heraus, welche Firewall-Zone für die die LAN-Schnittstelle enp0s3 gilt. Für diese Zone werden dann Ausnahmeregeln definiert und aktiviert:

firewall-cmd --get-zone-of-interface=enp0s3
    FedoraWorkstation
firewall-cmd --permanent --zone=FedoraWorkstation --add-service=mdns
firewall-cmd --permanent --zone=FedoraWorkstation --add-port=548/tcp
firewall-cmd --permanent --zone=FedoraWorkstation --add-port=548/udp
firewall-cmd --reload

Start

Der Start von Netatalk erfolgt durch das Init-System der Distribution. Dabei sollten Sie sicherstellen, dass auch der avahi-daemon läuft, was in der Regel der Fall ist.

systemctl status avahi-daemon
  Active: active (running) ...
systemctl start netatalk
systemctl enable netatalk

Im Einstellungsdialog der Time Machine können Sie das Volume nun unmittelbar auswählen.

Backup-Volume in den OS-X-Systemeinstellungen auswählen
Backup-Volume in den OS-X-Systemeinstellungen auswählen

Sparsebundle

Linux-seitig werden beim Backup unzählige 8-MByte-große Dateien erstellt, die zusammen ein »Sparse Bundle« bilden. Aus Linux-Sicht sind diese Dateien leider eine Black Box. Zugriff auf das Backup haben Sie also nur unter OS X.

ls -lR /data/tm/ 
/data/tm/:
insgesamt 8
drwx--S---. 3 kofler kofler 4096 27. Sep 21:41 imac.sparsebundle

/data/tm/imac.sparsebundle:
insgesamt 584
drwx--S---. 2 kofler kofler 536576 27. Sep 07:01 bands
-rw-r--r--. 1 kofler kofler    510 27. Sep 21:40 com.apple.TimeMachine.MachineID.bckup
-rw-r--r--. 1 kofler kofler    510 27. Sep 21:40 com.apple.TimeMachine.MachineID.plist
-rw-r--r--. 1 kofler kofler   1283 27. Sep 21:41 com.apple.TimeMachine.Results.plist
-rw-r--r--. 1 kofler kofler   1080 27. Sep 21:41 com.apple.TimeMachine.SnapshotHistory.plist
-rw-r--r--. 1 kofler kofler    499 26. Sep 22:46 Info.bckup
-rw-r--r--. 1 kofler kofler    499 26. Sep 22:46 Info.plist
-rwx------. 1 kofler kofler      0 26. Sep 22:46 token

/data/tm/imac.sparsebundle/bands:
...

Update 28.9.2015: Laut superuser.com gibt es mit der Kombination aus den beiden FUSE-Dateisystemen sparsebundlefs und tmfs doch eine Möglichkeit, auch unter Linux den Inhalt eines TimeMachine-Backups auszulesen. Ich habe es allerdings nicht probiert.

9 Gedanken zu „Netatalk-3-Konfiguration für Time-Machine-Backups“

  1. Guter Artikel. Ich habe genau dieses Setup seit ca. einem Jahr laufen. Unter Yosemite habe ich ca. einmal in 5 Monaten folgende Meldung bekommen: „Time Machine hat die Überprüfung Ihrer Backups auf „backup“ abgeschlossen. Um die Zuverlässigkeit zu verbessern, muss Time Machine ein neues Backup für Sie erstellen.“
    Das Backup muss dann gelöscht werden und neu erstellt werden, was einige Stunden dauert.

    Mit El Capitan bekomme ich die Meldung jeden Woche. Damit ist Time Machine für mich nicht mehr benutzbar.
    Kennst du das Problem und eine Lösung?

    1. Die Fehlermeldung/Warnung kenne ich, aber dass sie derart häufig auftritt, ist mir neu. Ich gebe aber zu, dass ich meinen Linux-Backup-Server nur ein paar Tage im Testbetrieb hatte — danach habe ich etwas anderes damit gemacht. Wenn ich dazukommen, sehe ich mir das demnächst nochmals an. Meine regulären Time-Machine-Backups führe ich auf einem NAS-Gerät durch, dort läuft noch Netatalk 2.

    2. Ich habe seit einem Monat wieder einen Linux-Backup-Server, der oft, aber nicht immer läuft. Bis jetzt ohne Fehlermeldungen.

  2. Ich habe das gerade mal auf meinem MBP (El Capitan) eingrichtet. Auf den ersten Blick funktioniert es. Danke für die Anleitung. Ich werde ggf. berichten, ob die oben genannte Meldung bei mir auftritt…

    1. Habe alles 1:1 aus der Anleitung übernommen aber mein Nas wird in Time Machine gar nicht erst angezeigt :(
      Woran kann das liegen?

  3. Ich habe die Anleitung mit Netztalk 3.1.8 auf Ubuntu 16.04 befolgt – Klappt soweit, danke !
    Jedoch kommt bei EL Capitan maximal nach 2 Tagen die Meldung, dass das Backup neu erstellt bzw. überprüft werden muss.
    Meine Vermutung: Ich denke, dass hängt mit dem afp timeout zusammen und damit, dass El Capitan auch im Ruhezustand die Verbindung aufrechterhält, da in diesem Modus Backups durchgeführt werden. Habe leider nun nicht parat, wo man dieses timeout Linuxseitig einstellt, denke aber es hat damit zu tun da ich es kürzlich angepasst habe und seitdem die Meldung öfter auftritt als zuvor.

    1. Die entsprechenden Zeilen sind in der afp.conf zu finden. Ich probiere es statt dem default (glaube 24h) nun mal hiermit:
      sleep time = 672
      disconnect time = 672
      (Angabe in Stunden)

Kommentare sind geschlossen.