CrashPlan Headless Client

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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, 4.0-2198 und 4.1-2647) getestet. Auf anderen DiskStations mit x86-kompatiblen Prozessor (z.B. Intel Atom), sollte diese Anleitung genauso funktionieren. Laut Spezifikation 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. Nur mit dieser Anleitung wird es auf keinen Fall funktionieren.

Als Alternative zur dieser Anleitung kann man sich auch das PC Load Letter CrashPlan Package ansehen, das eine einfache Installation über das DSM Package Center erlaubt.

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 geben, kann die Software auch von der CrashPlan Download-Seite heruntergeladen werden.

DiskStation> cd /volume1/@tmp
DiskStation> wget http://download.crashplan.com/installs/linux/install/CrashPlan/CrashPlan_3.5.3_Linux.tgz

2. CrashPlan entpacken.

DiskStation> tar -xvf CrashPlan_3.5.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, bei der die Backups von der Installation getrennt liegen.

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] /volume1/CrashPlan/backupArchives
/volume1/CrashPlan/backupArchives does not exist.  Create /volume1/CrashPlan/backupArchives? (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 4.1 Tool Chains", wenn Du DSM 4.1 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 4.1. Passt das für Dich nicht musst Du die URL und die Pfade anpassen.

DiskStation> cd /volume1/@tmp
DiskStation> wget http://downloads.sourceforge.net/project/dsgpl/DSM%204.1%20Tool%20Chains/Intel%20x86%20Linux%203.2.11%20%28Pineview%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

5a. Bei Modellen mit anderer CPU können die Pfade abweichen. Hier einmal die Beispiele für die QorIQ und die Marvell Tool Chain. Entpacke das Archiv und wechsle in das erzeugte Verzeichnis.

DiskStationQorIQ> tar -xzvf gcc4374_eglibc2874_qoriq-GPL.tgz
DiskStationQorIQ> cd powerpc-none-linux-gnuspe/powerpc-none-linux-gnuspe 

DiskStationMarvell> tar -xzvf gcc421_glibc25_88f6281-GPL.tgz
DiskStationMarvell> cd powerpc-none-linux-gnuspe/powerpc-none-linux-gnuspe

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

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

6a. Bei Modellen mit anderer CPU können die Pfade abweichen. Hier einmal die Beispiele für die QorIQ und die Marvell Tool Chain. Kopiere die fehlenden locale und localedef Programme als auch die Internationalisierungsunterstützung.


DiskStationQorIQ> mkdir /usr/lib/locale
DiskStationQorIQ> cp libc/usr/bin/locale /usr/lib/locale
DiskStationQorIQ> cp libc/usr/bin/localedef /usr/lib/locale
DiskStationQorIQ> cp -r libc/usr/share/i18n /usr/share

DiskStationMarvell> cp libc/usr/bin/locale /opt/bin 
DiskStationMarvell> cp libc/usr/bin/localedef /opt/bin 
DiskStationMarvell> cp -r libc/usr/share/i18n /usr/share

7. Jetzt kann eine en_US.UTF-8 Beschreibungsdatei für Gebietsschemaparameter erzeugt werden. (Bei einigen DSM Versionen nicht notwendig.)

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 (Bei einigen Modellen ist die zweite Datei nicht vorhanden, hier sind keine weiteren Änderungen notwendig.) 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. Wenn vi als Editor nicht deine Stärke ist findest Du hier Alternativen: Übersicht über verfügbare 3rd-Party-Apps aus unserer Community

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. Manchmal genügt auch das Anstoßen eines neuen Scans. 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?

Real-Time Backup

Zur Zeit wird CrashPlan nicht über geänderte Dateien informiert. Daher funktioniert das Real-Time Backup nicht. Als Übergangslösung kann die Zeit nach der die Auswahl komplett überprüft wird herabgesetzt werden.

CrashPlan verwendet inotify, um sich über Änderungen an Dateien informieren zu lassen. Obwohl inotify auf der DiskStation vorhanden ist, funktioniert der Mechanismus nicht. Alles was auf der Troubleshoot Real-Time Backup Seite empfohlen wird scheint nicht zur Lösung beizutragen.

Wahrscheinlich hängt das Problem nicht mit den Problemen von CrashPlan 3.0.3 unter Linux 3.0 zusammen. DSM 3.2-1922 und 4.0-2198 basiert auf Linux 2.6.32.12. Siehe dazu die Unable to back up on demand - arrow greyed out? Diskussion.

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 

CrashPlan stürzt ab und started neu (teilweise wiederholt) oder es hört auf zu funktionieren, nachdem es eine Weile lief

Sind in einem Backup sehr große oder viele Dateien kann es sein, dass der Java VM der Speicher ausgeht und sie abstürzt. Das kann beobachtet werden, wenn das GUI verbunden ist und des sich dann über einen Verbindungsabbruch beschwert. Es ist eventuell auch möglich, dass man die Fehlermeldung "Caused by: java.lang.OutOfMemoryError: Java heap space" in /opt/crashplan/log findet.

Das Problem kann gelöst werden, indem man die maximale Heap-Größe der VM anhebt, so lange die DiskStation dafür genügend RAM hat. Der -Xmx Parameter legt die maximale Größe fest, wohingegen -Xms die anfängliche (minimale) Größe definiert. Mann kann die maximale Größe sogar höher setzen als tatsächlicher Speicher (RAM) vorhanden ist. Das ist manchmal nötig, führt aber unter Umständen zu Swapping. Das tritt aber nur dann auf, wenn es wirklich nötig ist und wird nur abhändig von der Belastung der DiskStation bemerkbar sein.

Empfohlene Werte für DiskStations mit 1 GB RAM und 2 GB Swap, die keine weiteren speicherhungrigen Programme laufen haben:

Ändere die erste Zeile in /opt/crashplan/bin/run.conf

von

SRV_JAVA_OPTS="-Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms20m -Xmx512m ... 

zu

SRV_JAVA_OPTS="-Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms128m -Xmx1536m ...

(Da die Zeilen sehr lang sind, wurde alle hinter den Heap Größe durch ... ersetzt. Dieser Teil bleibt so wie er ist.)

Durch Versuche kann man feststellen welcher -Xmx Wert groß genug ist, damit CrashPlan nicht abstürzt, und kleine genug ist, um die Performance der DiskStation nicht zu beeinträchtigen.

CrashPlan funktioniert seit einem automatischen Update nicht mehr

Eine bestehende Installation von CrashPlan funktioniert seit dem letzen automatischen Update nicht mehr, da die Update-Skripte nicht mit der DiskStation kompatibel sind. Anstatt die Update-Skripte zu reparieren, sollte man einfach CrashPlan neu installieren.

Zur Neuinstallation von CrashPlan verfährt man wie folgt. Zunächst wird das alte Installationsverzeichnis an einen sicheren Ort verschoben.

DiskStation> /etc/init.d/crashplan stop
DiskStation> mv /opt/crashplan /opt/crashplan.old

Dann folgt man der Installationsanleitung oben, startet CrashPlan aber noch nicht. Man sollte ebenfalls den Anweisungen folgen wie man Unterstützung für nicht-US-ASCII Zeichen hinzufügt.

Hatte man die Backups in /opt/crashplan/manifest sollte man sicherstellen diese wieder zurückzuschieben bevor man CrashPlan neu startet. Dazu verschiebt man /opt/crashplan.old/manifest nach /opt/crashplan/manifest oder zu dem jeweiligen neuen Backup-Verzeichnis, beispielsweise /volume1/CrashPlan/backupArchives. Jetzt kann man CrashPlan wieder starten.

Sobald CrashPlan wieder läuft sollte man sich mit dem Headless Client verbinden und sich mit seinem Usernamen und Passwort einloggen. CrashPlan wird dann zunächst die Dateiinformation synchronisieren, was recht schnell geht, um danach die Blockinformationen zu synchronisieren. Das dauert länger.

Man sollte /opt/crashplan.old erst dann löschen, wenn man sichergestellt hat, dass alles wieder so funktioniert wie zuvor.

IPKG Befehle werden nach einem DSM Upgrade nicht mehr gefunden

Nach einem DSM Upgrade ist es häufig der Fall, dass die Kommandos bereits installierter Pakete (ipkg, bash, nano) nicht mehr gefunden werden, wenn man sie an der Kommandozeile starten möchte. Anstatt IPKG neu zu installieren reicht es oft aus die Änderungen an /root/.profile wie in der IPKG Installationsanleitung beschrieben zu wiederholen.

Die Installationschritte für die Unterstützung für nicht-US-ASCII Zeichen müssen meist auch wiederholt werden.

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
PC Load Letter's Synology Packages for CrashPlan

Weitere Webseiten