In meinen Bestrebungen alles auf eigenen Servern zu haben, habe ich nun auch das Backup meines Nexus 5 Smartphones erfolgreich dorthin ausgelagert. Dafuer habe ich auf dem Smartphone die folgenden drei Dinge gemacht:
- Rooten des Smartphones. Ich verweise an dieser Stelle einfach auf die Auto-Root Geschichten von chainfire. Die sind einfach und funktionieren. Man sollte ruhig die paar Euros in die Vollversion von SuperSU investieren, damit man die Rootrechte auch nach einem OTA Update behaelt.
- Titanium Backup gekauft und installiert. Ich habe einfach die Standard Zeitplaene uebernommen.
- FolderSync gekauft und installiert.
Anschliessend habe ich in FolderSync einen neuen SFTP-Account hinzugefuegt. Dabei habe ich Server-Adresse und Port sowie Benutzernamen und Passwort entsprechend eingegeben. Danach habe ich ein neues Ordnerpaar hinzugefuegt. Dafuer habe ich als Account den SFTP-Account ausgewaehlt und als lokalen Ordner /storage/sdcard0/TitaniumBackup. Die Synchronisations-Art ist „Zu Remote-Ordner“, und es ist eine taegliche, planmaessige Synchronisation.
Der SFTP-Account hat auf Serverseite als Shell /usr/lib/sftp-server und ist Mitglied der Gruppe sftp-allow:
chsh -s /usr/lib/sftp-server androidbackup addgroup sftp-allow adduser androidbackup sftp-allow |
Die Gruppe sftp-allow ist in der /etc/ssh/sshd_config unter AllowGroups aufgefuehrt:
AllowGroups ssh-allow sftp-allow |
Fuer Mitglieder der Gruppe sftp-allow ist in der /etc/ssh/sshd_config weiter folgendes konfiguriert:
Subsystem sftp internal-sftp Match group sftp-allow ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp PasswordAuthentication yes |
Auf dem Server habe ich noch das unten stehende Skript laufen, dass alte Backups loescht. Dieses habe ich bewusst so gewaehlt, so habe ich auf dem Smartphone immer das letzte komplette Backup, und auf dem Server kann ich aber den kompletten letzten Monat aufbewahren. Das Skript sieht wie folgt aus:
- /etc/cron.daily/cleanupOldAndroidBackups
#!/bin/bash KEEP_DAYS=30 BACKUPDIR=/home/android/Backups/ if [ "$(find ${BACKUPDIR} -type f -mtime +${KEEP_DAYS})" != "" ]; then echo "Cleaning up the following Android Backup files:" find ${BACKUPDIR} -type f -mtime +${KEEP_DAYS} fi find ${BACKUPDIR} -type f -mtime +${KEEP_DAYS} -delete |
Das ganze hat seinen ersten Praxistest vor ein paar Tagen auch bestanden als ich ausversehen mein Smartphone zurueckgesetzt habe. Ich habe dann Foldersync und Titanium Backup installiert, Synchronisations-Art in Foldersync andersherum eingerichtet (Zu lokalem Ordner) und mit Titanium Backup alles wieder eingespielt. Hat zu meinem eigenen Erstaunen funktioniert!