CrashPlan Headless Client

Aus
Version vom 31. Oktober 2011, 19:20 Uhr von Toertel (Diskussion | Beiträge) (Aktivierung der locale via /etc/profile wird jetzt immer gemacht. Das führt dazu, dass auch ipkg coreutils ls einwandfrei funktioniert.)

Einleitung

CrashPlan ist eine Backup-Software, die es dem Anwender erlaubt sowohl lokal als auch auf einem entfernten Rechner Backups abzulegen. Zudem können gegen Bezahlung Backups auch online abgelegt werden. Dieser Artikel erklärt, wie man den CrashPlan Headless Client auf einer Synology DiskStation installiert.

Im Vergleich zu anderen Online-Backup-Lösungen wie Backblaze, Carbonite oder Mozy (um nur ein paar zu nennen), hat CrashPlan zwei Features, die diese so nicht haben:

  • Es werden die Betriebssysteme Windows, Mac OS X, Linux und Solaris unterstützt.
  • Backups können nicht nur online gegen Bezahlung, sondern auch auf eigenen oder den Rechnern von Bekannten abgelegt werden.

Durch die Unterstützung von Linux ist es möglich den CrashPlan Headless Client (also das Kommandozeilenprogramm) auf einer Synology DiskStation zu installieren.

Diese Anleitung wurde mit einer Synology DiskStation DS411+II (DSM 3.2-1922) getestet. Auf anderen DiskStations mit x86-kompatiblen Prozessor (z.B. Intel Atom), sollte diese Anleitung genauso funktionieren. Laut Datenblatt setzt CrashPlan mindestens 1 GB Hauptspeicher voraus.

Da CrashPlan in Java programmiert wurde, funktioniert CrashPlan im Prinzip auch auf einer DiskStation mit ARM-kompatiblen Prozessor. Darauf wird in dieser Anleitung jedoch nicht eingegangen.

Voraussetzungen

Voraussetzung zur Installation von CrashPlan ist, dass IPKG bereits installiert wurde.

Installation des CrashPlan Headless Client

Vorbereitungen

1. Per ssh als user root auf die DiskStation einloggen. Im folgenden wird davon ausgegangen, dass die DiskStation diskstation heisst.

user@linux:~$ ssh root@diskstation

2. Das CrashPlan Installations-Script benötigt Befehle aus den IPKG Paketen bash, coreutils und cpio. Daher werden diese per ipkg install installiert.

DiskStation> ipkg update
DiskStation> ipkg install bash
DiskStation> ipkg install coreutils
DiskStation> ipkg install cpio

3. Im folgenden wird der Editor nano verwendet. Auch nano kann per ipkg installiert werden.

DiskStation> ipkg install nano

Installation

1. CrashPlan herunterladen. Sollte es in der Zwischenzeit eine neuere Version als 3.0.3 geben, kann die Software auch von der CrashPlan Download-Seite heruntergeladen werden.

DiskStation> cd /volume1/@tmp
http://www.crashplan.com/consumer/download.html?os=Linux
DiskStation> wget http://download.crashplan.com/installs/linux/install/CrashPlan/CrashPlan_3.0.3_Linux.tgz

2. CrashPlan entpacken.

DiskStation> tar -xvf CrashPlan_3.0.3_Linux.tgz

3. Im Installations-Script muss der Pfad zur Bash angepasst werden. Dazu in der ersten Zeile #!/bin/bash durch #!/opt/bin/bash ersetzen.

DiskStation> cd CrashPlan-install
DiskStation> nano -w install.sh

4. Jetzt kann das Installation-Script ausgeführt werden.

DiskStation> ./install.sh 

5. Während der Installation wird das Installations-Script einige Fragen stellen. Die erste Frage ist, ob die JRE (Java Runtime Environment) heruntergeladen und installiert werden darf, da keine Java VM gefunden wurde. Diese Frage sollte mit y positiv beantwortet werden.

No Java VM could be found in your path
Would you like to download the JRE and dedicate it to CrashPlan? (y/n) [y] y
  jre will be downloaded

6. Als nächstes wird ein EULA Lizenztext angezeigt und danach gefragt, ob man diesem zustimmt. Will man mit der Installation fortfahren, muss diese Frage mit y positiv beantwortet werden.

You must review and agree to the EULA before installation.

Press enter to read the EULA.

Do you accept and agree to be bound by the EULA? (yes/no) yes

7. Danach wird nach einigen Installationspfaden gefragt. Hier sind die empfohlenen Antworten für eine Installation auf einer Synology DiskStation aufgeführt.

What directory do you wish to install CrashPlan to? [/usr/local/crashplan] /opt/crashplan
/opt/crashplan does not exist.  Create /opt/crashplan? (y/n) [y] y

What directory do you wish to link the CrashPlan executable to? [/usr/local/bin] /opt/bin

What directory do you wish to store backups in? [/opt/crashplan/manifest]
/opt/crashplan/manifest does not exist.  Create /opt/crashplan/manifest? (y/n) [y] y

What directory contains your SYSV init scripts? [/etc/init.d] 

What directory contains your runlevel init links? [/etc/rc.d] /usr/syno/etc/rc.d

8. Zum Schluss zeigt das Installations-Script noch einmal die gewählten Installationspfade an und bittet um Bestätigung. Stimmen die Pfade, beantwortet man die Frage mit y positiv.

9. Nun beginnt das Installations-Script mit dem Laden und Installieren von Java sowie dem Kopieren der CashPlan Dateien. Die Fehlermeldung

./install.sh: /opt/crashplan/bin/CrashPlanEngine: /bin/bash: bad interpreter: No such file or directory

ist erwartet, da das Script CrashPlanEngine erst noch auf die ipkg Umgebung angepasst werden muss.

10. Mit der Zeile

Installation is complete. Thank you for installing CrashPlan for Linux.

ist das Installations-Script beendet.

11. Nun muss das Script /opt/crashplan/bin/CrashPlanEngine angepasst werden, damit es in der ipkg Umgebung läuft.

a) In der ersten Zeile #!/bin/bash durch #!/opt/bin/bash ersetzen.
DiskStation> nano -w /opt/crashplan/bin/CrashPlanEngine
b) nice muss mit komplettem Pfad, also /opt/bin/nice aufgerufen werden.
DiskStation> sed -i "s/nice -n/\/opt\/bin\/nice -n/" /opt/crashplan/bin/CrashPlanEngine
c) Die Parameter von ps müssen ersetzt werden.
DiskStation> sed -i "s/ps -eo 'pid,cmd'/ps w/" /opt/crashplan/bin/CrashPlanEngine

12. Damit CrashPlan beim Start der DiskStation ebenfalls gestartet wird, muss das Startup-Script umbenannt werden.

DiskStation> mv /usr/syno/etc/rc.d/S99crashplan /usr/syno/etc/rc.d/S99crashplan.sh

Funktionstest

1. Der CrashPlan Headless Client kann nun von Hand gestartet werden.

DiskStation> /etc/init.d/crashplan start

2. Übergibt man dem Script den Parameter status, kann überprüft werden, ob der CrashPlan gestartet wurde.

DiskStation> /etc/init.d/crashplan status

3. Ob der CrashPlan Verbindung mit den vorgesehenen TCP Ports aufgenommen hat, kann mittels netstat geprüft werden.

DiskStation> netstat -an | grep ':424.'
tcp        0      0 0.0.0.0:4242            0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:4243          0.0.0.0:*               LISTEN

4. Nun kann die DiskStation neu gestartet werden. Nach dem Neustart sollte CrashPlan automatisch mitstarten. Dies kann nochmals mittels der oben aufgeführten Schritte 2 und 3 geprüft werden.

DiskStation> reboot

Konfiguration

Da eine DiskStation üblicher Weise nicht an einen Monitor angeschlossen ist, erfolgt die Konfiguration von einem Rechner, auf dem bereits CrashPlan installiert wurde. Details dazu finden sich im Support-Bereich von CrashPlan auf der Seite Connect to a Headless CrashPlan Desktop.

Wie man die den CrashPlan Headless Client bequem per Script fernkonfiguriert, wird in einem LinuxHints Blog Post beschrieben.

Unterstützung für nicht-US-ASCII Zeichen hinzufügen

Obwohl Synology die UTF-8 Zeichenkodierung beim Dateisystem unterstützt, ist keine Internationalisierungsunterstüzung in ihrem Linux enthalten. Deshalb kann die JavaVM, die CrashPlan ausführt, nur mit US-ASCII Zeichen umgehen. Dies führt dazu, dass CrashPlan keine Dateien und Verzeichnisse sichert, die nicht-US-ASCII Zeichen im Namen haben.

Die Lösung dieser Katastrophe ist die fehlende Internationalisierungsunterstüzung im Linux der DiskStation nachzurüsten. Glücklicher Weise stellt Synology alle dazu benötigten Dateien im Synology NAS GPL Source Paket zur Verfügung.

Im Folgenden werden die Schritte beschrieben, die notwendig sind, um UTF-8 Unterstützung in der DiskStation nachzurüsten. Diese Schritte müssen nach jedem DSM Update wiederholt werden.

1. Öffne http://sourceforge.net/projects/dsgpl/files/ und wähle die Tool Chain, die zu Deiner DSM Version passt. Beispielsweise nimm "DSM 3.2 Tool Chains", wenn Du DSM 3.2 installiert hast.

2. Als nächstes musst Du den Prozessor Deiner DiskStation kennen. Mit dem folgenden Kommando findest Du ihn heraus.

DiskStation> cat /proc/cpuinfo | grep model
Intel(R) Atom(TM) CPU K525 Intelx86 Pineview

3. Nach der Auswahl des passenden Prozessors musst Du wissen ob das Linux 64 Bit oder 32 Bit hat.

DiskStation> uname -m

Liefert der Behl oben x86_64 zurück ist es ein 64 Bit Linux. Andernfalls ist es ein 32 Bit Linux.

4. Lade jetzt das passende Archiv in das /volume1/@tmp Verzeichnis. Im folgenden wird angenommen es handle sich um eine DS411+II mit DSM 3.2. Passt das für Dich nicht musst Du die URL und die Pfade anpassen.

DiskStation> cd /volume1/@tmp
DiskStation> wget http://sourceforge.net/projects/dsgpl/files/DSM%203.2%20Tool%20Chains/Intel%20x86%20Linux%202.6.32%20%28
Pineview%29/gcc420_glibc236_x64-GPL.tgz

5. Entpacke das Archiv und wechsle in das erzeugte Verzeichnis.

DiskStation> tar -xzvf gcc420_glibc236_x64-GPL.tgz
DiskStation> cd x86_64-linux-gnu/x86_64-linux-gnu

6. Kopiere die fehlenden locale und localedef Programme als auch die Internationalisierungsunterstüzung.

DiskStation> cp sys-root/usr/bin/locale /opt/bin 
DiskStation> cp sys-root/usr/bin/localedef /opt/bin 
DiskStation> cp -r sys-root/usr/share/i18n /usr/share

7. Jetzt kann eine en_US.UTF-8 Beschreibungsdatei für Gebietsschemaparameter erzeugt werden.

DiskStation> mkdir /usr/lib/locale
DiskStation> localedef -f UTF-8 -i en_US en_US.UTF-8

8. Überprüfe ob alles so geklappt hat wie gedacht. Der folgende Befehl sollte eine Liste der vorhandenen Gebietsschemaparameter zurückgeben, die en_US.utf8 enthält.

DiskStation> locale -a
C
POSIX
en_US.utf8

9. Füge die folgenden Zeilen den Dateien /etc/profile and /opt/etc/profile hinzu, um allen Programmen, die dies unterstützen, UTF-8 und das Gebietsschema en_US vorzugeben. Dies schließt die JavaVM und damit CrashPlan mit ein.

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
export LANG LC_ALL

10. Starte die DiskStation neu, damit die Änderungen übernommen werden.

DiskStation> reboot

11. Prüfe nach dem Neustart, ob die Einstellungen übernommen wurden.

DiskStation> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

12. Als letztes müssen in CrashPlan alle Verzeichnisse mit Sonderzeichen abgewählt, die Einstellungen gespeichert und die Verzeichnisse wieder hinzugefügt werden. Jetzt sollte die Sicherung korrekt arbeiten.

Bekannte Probleme (HILF HIER)

Dieser Abschnitt beschreibt Probleme, für die es noch keine Lösung gibt. Kannst Du hier helfen?

Es gibt zur Zeit keine ungelösten Probleme.

Gelöste Probleme

Alle in diesem Abschnitt beschriebenen Probleme sind mit der Hilfe der Community gelöst worden.

CrashPlan sichert nur US-ASCII Dateien und Verzeichnisse

Dieses Problem wurde gelöst, indem die fehlende Internationalisierungsunterstützung hinzugefügt wurde. Dies muss nach jedem DSM Update wieder gemacht werden.

CrashPlan startet nach einem DSM Update nicht mehr automatisch

Es wurde berichtet, dass CrashPlan nach einem DSM Update nicht mehr automatisch startete. Dies kann gelöst werden, indem der verloren gegangene symbolische Link wieder gesetzt wird.

ln -s /etc/init.d/crashplan /usr/syno/etc/rc.d/S99crashplan.sh 

Quellen

CrashPlan Headless Client (Englisch)
Kenneth Larsens blog: HOW-TO: Using crashplan with Synology NAS
IWarez on Subsonic Forum about installing internationalization support on a DS710
Synology Online Community Forum: Crashplan backup sw allows backing up to a friend's computer
CrashPlan Support: Connect to a Headless CrashPlan Desktop
LinuxHints Blog: Crashplan headless
Forrst: Remote Access for CrashPlan (headless server) with Desktop UI