Time Capsule mit Ubuntu 12.04 simulieren
Die in Apples OS X integrierte Backupsoftware TimeMachine erlaubt standardmäßig nur Backups auf externe Festplatten oder teuer zugekaufte Time Capsules, sowie OS X Serverumgebungen. Gerade wer allerdings schon einen Heimserver betreibt, ist oft auf der Suche nach einer Alternative. Mit OS X Mountain Lion hat Apple das Workaround über Samba Shares unterbunden und verlangt nun nach einer AFP-Freigabe. Mit Hilfe von Ubuntu 12.04 und Netatalk 2.2 lässt sich eine Time Capsule simulieren und sogar für den Mehrbenutzerbetrieb optimieren. So ist es möglich, für jeden vorhanden Mac, eine eigene virtuelle Freigabe zu erstellen und pro Freigabe den zu Verfügung gestellten Speicherplatz zu begrenzen. Somit kann das Volllaufen des Backupvolumes unterbunden werden bzw. allen Macs gleich viel Speicherplatz zu Verfügung gestellt werden.
Netatalk
Zunächst installieren Sie die aktuelle Version von netatalk.
apt-get install netatalk
Danach passen Sie die allgemeine Konfiguration unter /usr/local/etc/netatalk/afpd.conf an. Kommentieren Sie eine eventuell am Ende der Datei enthaltene Zeile aus und fügen Sie die folgende ein.
- -tcp -noddp -uamlist uams_randnum.so,uams_dhx.so,uams_dhx2.so -nosavepassword
Nun definieren Sie die Freigaben. In meinem Beispiel erstelle ich je eine Freigabe für ein MacBookAir und einen MacMini mit jeweils 80GB freigegebenen Speicher. Achten Sie bei der Wahl der Speicherbegrenzung auf die größe Ihrer Client-Festplatte und dem am Server verfügbaren Speicherplatz. Fügen Sie die Konfiguration in die Datei usr/local/etc/netatalk/AppleVolumes.default ein und passen sie Pfad, Freigabenamen (hier: MacBookAir und MacMini), Benutzer (hier: christian und multimedia) und Speicherplatzgrenze entsprechend Ihrer Umgebung an. Achten Sie darauf die Verzeichnisse mit den entsprechenden Zugriffsrechten für die Benutzer auszustatten. Die Benutzer sind Linux-Benutzer, am Besten ohne Zugriff auf die Shell.
/mnt/backup/macbookair MacBookAir allow:christian cnidscheme:dbd options:usedots,upriv,tm volsizelimit:80000
/mnt/backup/macmini MacMini allow:multimedia cnidscheme:dbd options:usedots,upriv,tm volsizelimit:80000
Avahi
Um die Freigaben nun mittels Bonjour im Netzwerk bekannt zu machen und die für TimeMachine notwendige TimeCapsule zu simulieren benötigen wir die Software avahi.
apt-get install avahi-daemon
Zunächst müssen wir die Freigaben als Xserver publizieren um auch über AFP mittels Finder auf die Backups zugreifen zu können. Legen Sie dazu die Datei /etc/avahi/services/afpd.service mit dem folgendem Inhalt an. Achten Sie bei der Namensgebung (hier: TimeCapsule-Server) darauf, dass in Bonjour jeder Name nur einmal vorkommen darf und somit unser unten konfiguriertes TimeCapsule auch nicht den selben Namen erhalten kann.
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">TimeCapsule-Server</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
Nun simulieren wir unser Time Capsule mit den beiden Freigaben für die zwei Macs. Legen Sie dazu die Datei /etc/avahi/services/timecapsule.service mit dem folgendem Inhalt an und passen Sie zunächst bei Bedarf den Netzwerk-Namen an. Ersetzen Sie die angegebene Mac-Adresse durch die Ihres Servers und passen Sie die Freigabenamen entsprechend der zuvor in der Netatalk-Konfiguration erzeugten Freigaben an.
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">TimeCapsule</name>
<service>
<type>_adisk._tcp</type>
<port>9</port>
<txt-record>sys=waMA=00:0c:29:1c:ec:fb</txt-record>
<txt-record>dk0=adVF=0x83,adVN=MacBookAir,adVU=956cf67c-f448-453f-9dec-dd17855ee076</txt-record>
<txt-record>dk1=adVF=0x83,adVN=MacMini,adVU=956cf67c-f448-453f-9dec-dd17855ee076</txt-record>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>