[How To] Time Machine Backups übers Netzwerk mit dem Raspberry Pi

Ich habe mir vor kurzem etwas Speicher gegönnt und mir dementsprechend als Ziel gesetzt meinen Mac endlich mit Time Machine über das Netzwerk Backups erstellen zu lassen, anstatt immer die Externe Festplatte anzuschließen.

Die bequemste Lösung wäre es, sich eine AirPort Box von Apple für nur paar hundert Euronen zu kaufen oder einen zweiten Mac zu besitzen. AirPort Boxen haben eine Time Capsule integrieret mit dem Backups über das Netzwerk erstellt und gesichert werden können. Wer einen zweiten Mac besitzt, kann diesen als Server verwenden um dirt Backups abzulegen.

Wer sich dies jedoch nicht zulegen möchte (so wie ich), der kann mit einem Raspberry Pi auch eine Time Capsule bauen, mit dem man dann über WLAN seine Backups mit Time Machine dann auf die Festplatte im Netzwerk speichern kann. Wie das geht, wird hier im Beitrag erklärt.

Was wird benötigt?

Unser Raspberry Pi wird mit einer Externe Festplatte verbunden und ist eine gute improvisierte Alternative zu Time Capsule oder einem anderen Mac.

  • Es wird ein Raspberry Pi benötigt. In meinem fall benutze ich ein Raspberry Pi 2 Model B, den ich seit geraumer Zeit rumliegen habe und nicht genutzt habe.

  • Eine SD Karte auf dem das Betriebssystem für den Pi läuft. Hier ist eine gute Liste mit getesteten SD Karten für den Pi.

  • Ein Gehäuse für den Pi.
  • Es wird ein Netzteil benötigt.
  • Und natürlich eine externe Festplatte die über USB mit dem Pi verbunden wird.

Ein gutes Komplettpaket gibt es von CanaKit. Natürlich kannst du dir die Sachen auch selber einzeln kaufen. Die Entscheidung obliegt ganz bei dir. :)

Schritt 1: Vorbereitung des externen Festplatte

Zuerst müssen wir unsere Festplatte vorbereiten. Dazu schließen wir diese an unserem Mac an und öffnen Diskutils. Dort wählen wir unsere Festplatte aus und drücken auf den Button "löschen". Im neuen Fenster geben wir einen Namen ein und als Format wählen wir "Mac OS Extended (journaled)" aus.

ild

Alternativ kann der obere Schritt auch über die Konsole gemacht werden. Beispielsweise mit:

diskutil partitionDisk /dev/diskX GPTFormat "HFS+" Time-Machine 100%

Ein ausführliches How-To für diskutil findest du hier.

Nachdem die Festplatte formatiert ist müssen wir die Berechtigung einstellen. Dafür machen wir einen Rechtsklick auf der Festplatte im Finder und klicken auf "Informationen".

ild

Unter "Teilen & Zugriffsrechte" setzen wir "everyone" auf "Lesen & Schreiben", zudem muss der Haken in "Eigentümer auf diesem Volume Ignorieren" gesetzt werden.

ild

Schritt 2: Installiere Raspbian auf dem Pi und verbinde dich über SSH

Als nächstes musst du dein Raspberry Pi einrichten. In diesem Beitrag werde ich allerdings nicht darauf eingehen wie das funktioniert. Im Internet findet man genug Anleitungen dazu und auf raspberrypi.org findet man auch genaue Anleitungen.

Für mein Setup habe ich Raspbian Stretch ohne einer Oberfläche auf dem Pi installiert und SSH eingerichtet. Außerdem sollte eine statische IP für dein Pi eingerichtet werden, dies kannst du in deinem Pi direkt oder in deinem Router machen.

Um eine statische IP-Adresse auf dem Pi einzurichten, kann man die dhcpcd.conf wie folgt editieren.

Dazu öffnet man die dhcpcd.conf wie folgt:

sudo nano /etc/dhcpcd.conf 

Und bearbeitet diese Beispielweise so:

#static IP configuration

interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Und schon hat der Pi eine statische IP-Adresse auf 192.168.0.10.

Generell empfiehlt es sich auf einem frisch aufgesetzem Pi verschiedene Einstellungen vorzunehmen. Beispielweise solltest du eine Meldung bekommen wenn du dich auf dem Pi über SSH verbindest, dass das Passwort vom user Pi noch nicht geänderd sei. Rufe einfach

sudo raspi-config

auf um einige Einstellungen vorzunehmen.

Schritt 3: Mounte die Festplatte

Bevor wir Time Machine einrichten können, müssen wir die Festplatte auf dem Pi mounten. Da HFS+ kein Standard Format unter Linux ist, müssen wir noch Pakete nachinstallierten.

Zuerst sorgen wir, dass unser Pi Up to Date ist:

sudo apt-get update
sudo apt-get upgrade

Als nächstes installieren wir die benötigten Pakete für das Dateisystem der externen Festplatte nach:

sudo apt-get install hfsprogs hfsplus

Nun haben wir alles was wir brauchen um die Festplatte mounten zu können.

Als nächsten findet wir heraus, wie unsere Festplatte bezeichnet ist. Dafür benutzen wir einfach parted:

sudo /sbin/parted

und geben print ein um alle angeschlossenen Laufwerke zu sehen. Meine ausgabe sieht wie folgt aus:

ild

Auf dem Screenshot kann man bei Model erkennen, dass dies meine Festplatte ist die unter dem Pfad von Disk erreichbar ist. In meinem Beispiel ist der Pfad /dev/sda.

Allerdings muss noch herausgefunden werden, auf welcher Nummer die Partition liegt auf der später Time Machine die Backups speichern soll. Dies ist auf dem Bild in Rot umramt und trägt die Nummer 2.

Somit ist der Pfad zu der Partition /dev/sda2.

Mit q beenden wir parted wieder.

Nun legen wir ein Ordner in /media an, worauf das Laufwerk gemounted werden soll. Ich nenne ihn einfach time-machine:

sudo mkdir /media/time-machine

Jetzt müssen wir in der fstab eintragen, dass das Laufwerk dort auch gemounted werden soll. Dazu öffnen wir die fstab:

sudo nano /etc/fstab

Und tragen dort folgendes ein:

/dev/sda2 /media/time-machine hfsplus force,rw,user,auto 0 0

(Bitte passe den Pfad nach deinem Bedürfnissen an)

Nun verlasse den Editor mit Strg + X und mounte das Laufwerk mit:

sudo mount -a

Wenn keine Fehlermeldungen erscheinen ist das Laufwerk erfolgreich gemounted.

Schritt 4: Kompiliere und Installiere Netatalk

Netatalk ist ein nettes Tool, dass das AFP Protokoll simuliert. AFP ist ein Netzwerk Protokoll, dass Apple für Time Machine backups verwendet. Netatalk kann über die repositories installiert werden, was jedoch nicht getan werden sollte, da die Version in den repositories meist älter ist.

Am besten kompiliert man Netatalk selber. Dies ist ganz einfach und funktioniert wie folgt.

Zuerst müssen alle Abhängigkeiten zum kompilieren installiert werden:

sudo aptitude install build-essential libevent-dev libssl-dev libgcrypt11-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev default-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

Nachdem alle Abhängigkeiten installiert wurden laden wir die aktuellste Version von Netatalk runter. Die aktuellste Version kann auf der Webseite von Netatalk nachgesehen werden.

Wenn du die aktuellste Version herausgefunden hast, kannst du die Sources wie folgt downloaden:

wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.11.tar.gz

Ersetze die Versionsnumemr im Link einfach, falls es eine aktuellere Version gibt.

Nun müssen wir die Datei entpacken:

tar -xvf netatalk-3.1.11.tar.gz

Danach wechseln wir in den Ordner:

cd netatalk-3.1.11

Nun müssen wir ./configure mit folgenden Parametern aufrufen:

./configure \
        --with-init-style=debian-systemd \
        --without-libevent \
        --without-tdb \
        --with-cracklib \
        --enable-krbV-uam \
        --with-pam-confdir=/etc/pam.d \
        --with-dbus-daemon=/usr/bin/dbus-daemon \
        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
        --with-tracker-pkgconfig-version=1.0

Dies kann eine weile dauern. Wenn es fertig ist muss das ganze noch kompiliert werden mit:

make

Dies nimmt wieder eine weile Zeit in Anspruch.

Wenn die kompilierung funktioniert hat, muss das ganze intsalliert wrden mit:

sudo make install

Na, hats spaß gemacht? Wir haben Netatalk nun selber kompiliert und installiert. Um zu testen ob netatalk läuft, gebe einfach folgenden befehl ein:

netatalk -V

ild

Wenn das ganze so ähnlich aussieht wie bei mir, dann hat alles geklappt. Herzlichen Glückwunsch!

Schritt 5: Konfiguriere Netatalk

Jetzt da Netatalk ist, müssen wir ihm sagen, dass er unser Laufwerk auch im Netzwerk teilen soll.

Als erstes müssen wir dafür die nsswitch.conf editieren.

sudo nano /etc/nsswitch.conf

Hier müssen wir nur mdns4 und mdns am ende der Zeile "hosts:" hinzufügen.

Die Zeile sollte dann so aussehen:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

ild

Diese Anpassung sorgt dafür, dass dein Time Machine Laufwerk in der Sidebar im Finder angezeigt wird, sobald dein Pi im Netzwerk angeschlossen wird.

Als nächstes müssen wir die afpd.service editieren, bzw. falls dieser noch nicht vorhanden ist, erzeugen wir diesen:

sudo nano /etc/avahi/services/afpd.service

Füge dort einfach folgenden Block rein:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%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>

Diese Informationen sorgen dafür, dass dein Raspberry Pi als Apple Time Capsule mit entsprechenden Icon dargestellt wird.

Nun wird es Zeit, dein Laufwerk im Netzwerk zu teilen. Dazu editieren wir die afp.conf mit:

sudo nano /usr/local/etc/afp.conf

Dort fügen wir folgenden Inhalt ein:

[Global]
  mimic model = TimeCapsule6,106

[Time Machine]
  path = /media/tm
  time machine = yes

Du kannst natürlich einen anderen namen anstatt "Time Machine" in den eckigen Klammern verwenden.

Schlussendlich starten wir nun die Netzwerk Services mit golgenden zwei Befehlen:

sudo service avahi-daemon start
sudo service netatalk start

Nun sollte dein Laufwerk im Netzwerk angezeigt werden. Um sicher zu stellen, dass nach einem Neustart die Dienste automatisch starten, sollten wir diese in systemctl eintragen. Dies geschieht mit folgenden zwei Befehlen:

sudo systemctl enable avahi-daemon
sudo systemctl enable netatalk

Wir haben es nun fast geschafft!

Schritt 6: Verbinde Time Machine

Nun können wir endlich Time Machine mit diesem Laufwerk verbinden. In der Seitenleiste im Finder finden wir nun unser Laufwerk.

ild

Wir können uns nun einfach verbinden, indem wir auf "Verbinden als" drücken oder mit Cmd + K die Adresse per Hand eintragen.

ild

Als Logindaten gibts du deine SSH-Login daten ein, also die vom User auf dem Raspberry Pi. Beispielsweise die Logindaten vom User "pi" oder einen beliebig anderen.

Nachdem du dich erfolgreich verbunden hast, kannst du in Systemeinstellungen -> Time Machine, dein Laufwerk auswählen.

ild

Nun sollte dein erstes Backup mit dem Laufwerk gestartet werden.

Herzlichen Glückwunsch, du hast nun ein Time Machine Laufwerk übers Netzwerk erstellt. Viel Spaß!

Folgende Artikel habe ich für diesen Beitrag verwendet:

Diese Webseite verwendet Cookies, beim Absenden von Kommentaren. Hier finden Sie weitere Informationen zum Datenschutz Akzeptieren