Ich bin ja seit Urzeiten ein großen Fan von rsync. Für mich das beste Backup-Tool, unglaublich flexibel und gehört eigentlich zum Inventar einer jeden Linux-Distribution. Im Android-Market hab ich mein geliebtes rsync gefunden. Die Applikation verwendet Binärdateien, die im Download nicht enthalten sind. Allerdings macht es die App dem Anwender leicht. Beim Erststart wird man gefragt, ob die Binärdateien nachgeladen werden sollen. Zusätzlich gibt es dafür eine Schaltfläche im Menü. Die Applikation braucht keinen root-Zugriff, kann von daher auch nur Daten sichern, die auch ohne root lesbar sind. In meinem Fall bin ich am Ordner /sdcard/ interessiert und diesen möchte ich sichern.
Warum rsync? Dieses Tool kopiert nicht einfach stupide Daten auf den Server, sondern macht eine exhte Synchronisation. Dabei wird es in der Regel so genutzt, dass nur veränderte Dateien abgeglichen werden. Bei kleinen Datenmengen ist ein Backup oftmals nur eine Sache von wenigen Sekunden. rsync kann aber weit mehr. Wer sich mit rsync beschäftigen möchte und etwas Zeit hat, sollte sich die Manpage der Software zu Gemüte führen. Du wirst erstaunt sein, zu was rsync in der Lage sein kann.
OI Dateimanager
Wer nicht tippen möchte, sondern die Ordner lieber per Dateimanager aussucht, braucht außerdem noch OI Dateimanager auf dem System. Ist nicht unbedingt notwendig, erleichtert aber das Aussuchen - vor allen Dingen, wenn man nicht die ganze Karte sichern möchte. Ich stelle hier eine Schritt-für-Schritt-Anleitung zur Verfügung, wie man mit dem Schweizer Taschenmesser des Backups (rsync) sein Android-Gerät auf einen Linux-Server sichern kann. Diese Methode kostet Dich übrigens keinen Cent und Du musst für keine App bezahlen.
Linux-Server / -Rechner vorbereiten
.ssh und authorized_keys
Um die Daten auf einen Linux-Rechner via rsync for Android zu sichern, brauche ich dort idealerweise den OpenSSH-Server. Der sollte in eigentlich jedem Repository der bekannten Distributionen vorhanden sein. Unter Ubuntu oder Linux Mint heisst das Paket zum Beispiel openssh-server.
Du kannst die Software entweder über das Software Center, Synaptic oder einfach manuell und via Konsole einspielen. Letzteres ist wohl die schnellste Option: sudo apt-get install openssh-server
Danach musst Du im Home-Verzeichnis des Anwenders nachsehen, ob ein Verzeichnis .ssh vorhanden ist. Falls nicht - erstellen: mkdir .ssh. In diesem legen wir nun eine Datei authorized_keys an, die wir später wieder brauchen, damit wir das Backup ohne Passwort-Eingabe durchführen können: touch authorized_keys
Ebenfalls solltest Du Dich vergewissern, dass rsync auf dem Rechner vorhanden ist. Sollte das nicht der Fall sein, musst Du es nachinstallieren. Für Ubuntu wäre das zum Beispiel apt-get install rsync. Nun lassen wir den Linux-Rechner erst einmal beiseite und widmen uns dem mobilen Gerät.
Android-Gerät vorbereiten und Authentifizierung einrichten
Wie bereits erwähnt brauchen wir Die App rsync backup for Android. Die Software kannst Du übrigens auch auf Deutsche Sprache umstellen. Ich hab es in der Beschreibung hier auf Englisch gelassen, weil die App per Standard so ausgeliefert wird.
Binärdateien herunterladen
Schlüsselpaar generieren
Nach dem ersten Start laden wir die Binärdateien nach, schließlich wollen wir die App auch benutzen. Die Binärdateien sind übrigens nicht enthalten, um die GPL nicht zu verletzen. Bevor Du nun ein Profil erstellst, lass Dir gleich das Schlüsselpaar generieren. Du findest die Schaltfläche im Menü rechts oben unter Generate keys. Ist das geschehen, könntest Du Dir den öffentlichen Schlüssel auch zusenden lassen. Ansonsten liegen privater und öffentlicher Schlüssel unter /sdcard/dss_key und /sdcard/dss_key.pub.
Den Inhalte von dss_key.pub musst Du nun in die Datei authorized_keys auf dem Linux-Rechner einsetzen. Achte darauf, dass es eine einzige Zeile ist, sonst wird die Authentifizierung schief gehen. Ist die Datei authorized_keys leer, könntest Du auch die Datei dss_key.pub in den Ordner ~/.ssh auf den Linux-Rechner kopieren und sie dann einfach in authorized_keys umbenennen.
rsync backup for Android benutzen und Profile erstellen
Profil anlegen
Nun ist es an der Zeit, die App selbst zu benutzen und ein Backup-Profil zu erstellen. Angenehm an rsync backup for Android ist, dass Du mehr als ein Profil erstellen kannst. Somit ist es möglich, gezielte Datensicherungen vorzunehmen. Ich habe genug Platz auf meinem Server und will einfach die ganze SD-Karte sichern. Von daher reicht mir ein einziges Profil.
Die entsprechenden Felder füllst Du folgendermaßen aus:
- Profile Name - Name des individuellen Profils
- Local file or directory (on this device) - Verzeichnis auf dem Android-Gerät, das gesichert werden soll
- Username (login) - (SSH)-Anmeldename für den Linux-Server / -Rechner
- Server (IP or hostname) - IP-Adresse des Servers oder der entsprechende Name
- Port - in der Regel horcht SSH auf Port 22
- Dropbear SSH private key (generated by dropbearkey tool) - das ist die bereits angesprochene Datei dss_key, die per Standard unter /sdcard/ liegt
- Additional rsync options - Hier könntest Du noch weitere rsync-Optionen angeben. Wenn Du zum Beispiel Dateien und Ordner nicht sichern möchtest mit dem --exclude-Parameter (Beispiel hierfür am Ende des Beitrags)
Von den vier Schaltflächen am unteren Ende möchte ich auf die beiden wichtigen eingehen.
- Delete remote files that are no longer in source directory (rsync’s --delete-after option) - Du könntest --delete-after auch einfach in die rsync-Kommandozeile schreiben, um den selben Effekt zu erzeugen. Es bedeutet, dass auf dem Server alles gelöscht wird, was auf dem zu sichernden Verzeichnis nicht mehr vorhanden ist. Dies geschieht nach dem Synchronisations-Vorgang. Möchtest Du es vor einer Datensicherung ausführen, reicht ein --delete.
- rsync in reverse direction (from server to this device) - Dies aktiviert dreht die Richtung der Datensicherung um. Es würden also Daten vom Server mit denen auf dem Android-Gerät abgeglichen.
Nun kann ich meine Daten einfach per Knopfdruck sichern und diese landen sicher auf meinem Server. Auch wenn Backup etwas für Feiglinge ist - ich schlafe besser, eines zu haben!
Tipps und Hinweise
Ich hab mich gut 30 Minuten herumgeplagt und wollte herausfinden, warum das Backup nicht funktioniert. Ich bekam immer die Fehlermeldung, dass /sdcard/<komisches Zeichen> nicht existiert. Ich hab <komisches Zeichen> aber nicht eingegeben und konnte es auch nicht finden. Auch ein Löschen der Zeile und nochmaliges Tippen brachte keinen Erfolg. Das scheint wohl ein Bug zu sein. Abhilfe brachte, das zickige Profil einfach zu löschen und die ganze Sache dann noch mal einzugeben. Also neues Profil angelegt, genau die selben Parameter verwendet und dann hat es plötzlich getan. Falls einer in das selbe Problem läuft … neues Profil könnte die Lösung sein.
Sollte ein Fehler bei der Verbindung mit dem Server auftreten, könnte die Firewall einen Strich durch die Rechnung machen. Stelle also sicher, dass bei der hier beschriebenen Methode Verbindungen über Port 22 (SSH) zulässig sind. Das könnte unter Ubuntu mit der uwf zum Beispiel so aussehen: sudo ufw allow 22
--exclude-Funktion einsetzen
Ein Einsatz von --exclude hat im Prinzip zwei Gesichter. Mit --exclude=<Pattern> kann ich einzelne Dateien oder Ordner von der Sicherung ausschließen. Möchte ich mehr als einen Ordner, Dateityp oder was auch immer ausschließen, dann ist diese Methode etwas umständlich. Einfacher ist dann die Benutzung von --exclude-from=<Dateiname>. <Dateiname> könnte zum Beispiel kein_backup.txt heißen und dort hinterlegst Du die Verzeichnisse und Dateien, die Du ausschließen möchtes. Achte darauf, dass in jeder Zeile nur ein Muster steht.
Sagen wir zum Beispiel, dass ich die Verzeichnisse /sdcard/Android/data und /sdcard/opera/cache nicht sichern möchte, würde das in meiner Datei so aussehen:
Android/data
opera/cache
Voraussetzung hierfür ist aber, dass wird /sdcard/ sichern. rsync ist hier etwas eigen bei der Behandlung von Pfaden. Diese werden unter anderem bei der Verwendung der exclude-Funktion nicht absolut, sondern relativ zum Ausgangspfad angegeben. Das Phänomen ist in der Manpage unter dem Kapitel INCLUDE/EXCLUDE PATTERN RULES beschrieben - Stichwort: root of the transfer
Schlusswort / Fazit
Daten von Android auf einen Linux-Rechner zu sichern, ist wirklich nciht schwer und kostet nichts. Mit nur einem Druck auf das entsprechende Profil kann ich nun ein Backup meiner gewünschten Daten realisieren. Man kann das Szenario natürlich weiterspinnen. Solltest Du von außen SSH-Zugriff auf Deinen Linux-Server haben, kannst Du mit entsprechender Internet-Verbindung die Datensicherung anwerfen, wann immer Du möchtest.
Jürgen (jdo) für bitblokes.de, 2012. |
Permalink |
Twitter