Benutzer-Werkzeuge

Webseiten-Werkzeuge


datensicherung_cron

Automatische Datensicherung via rsync / crontab

Warnung: Das Vorgehen erfordert ein gewisses Hintergrundwissen über Linux. Man kann bei Fehlern durchaus die Installation des Hifidelio zerlegen. Auch wird selbstverständlich für die Vollständigkeit des Backups nicht garantiert, da diese von etlichen Faktoren abhängen kann, die bisher noch nicht getestet wurden. Also bitte nur testen wer weiß, was sie tut und auf eigene Gefahr!

Ziel

Ein automatisches wöchentliches Backup aller Musik-Datein auf dem HIfidelio via Netzwerk auf ein „Network Attached Storage“-Gerät (NAS) oder einen Linux-Server. Das ganze wurde getestet mit einem QNAP TS-101, dürfte aber (evtl. mit einigen Modifikationen) für jedes Linux-basierte NAS funktionieren.

Voraussetzungen

Dieser Tipp macht nur Sinn für Hifidelio-Besitzer, welche folgende Voraussetzungen erfüllen. Alle andern lassen das bitte besser sein…

  • wissen wie telnet funktioniert, sich auf der Hifidelio-Shell einigermassen zurechtfinden (cd, cp, mv, mkdir, ln -s …) und am Fidel den Netzwerkdienst „Telnet“ eingeschaltet haben
  • den vi Texteditor bedienen können (zumindest cursor bewegen und speichern ;-)
  • ein Gerät im Netzwerk haben, das rsync Verbindungen annehmen kann, z.B. einen Linux/Unix-Server oder ein Linux-basiertes NAS
    • getestet mit einem QNAP TS-101

Backup

Ein einzelnes manuelles Backup kann mittels rsync direkt gemacht werden. Dazu muss das Paket mit zusätzlichen Linux-Tools V2 aus dem Download-Bereich des Forums installiert werden. Anleitung dazu gibts im gelinkten Thread.

Ein Backup des /audio/music Folders via rsync auf ein Network Attached Storage (NAS) Laufwerk:

/usr/local/bin/rsync -av /audio/music/ <usernameAufDemNAS>@<IP des NAS>::<rsyncRemoteModule>/<Pfad des Backup Verzeichnis>

Bemerkungen dazu:

  • merkwürdigerweise geht das (zumindest bei mir) ohne Passwort, nur mit dem Usernamen des NAS
  • rsync kennt zwei Kommunikationsmodi:
    • via remoteShell rsh (oder auch secureShell ssh)
      • dazu müssen sowohl Fidel wie NAS rsh oder ssh unterstützen, was bei mir nicht der Fall war
    • via rsync-Daemon:
      • Dazu muss auf dem NAS eben dieser rsync-Daemon laufen, das ist beim QNAP TS-101 per default der Fall. Ich habe darum diese Kommunikation benutzt
      • der QNAP TS-101 richtet automtisch für jeden eingerichteten Netzwerk-Share ein „rsync-module“ ein, auf welche man dann via Daemon vom Fidel aus zugreifen kann.
    • Achtung: für jeden Modus sieht das rsync-Kommando etwas anders aus (vor allem die zwei Doppelpunkte :: ) , siehe Doku von rsync

Das von mir konkret verwendete Kommando sah so aus:

/usr/local/bin/rsync -av /audio/music/ administrator@10.1.1.5::backupfidel/audio/music/ >> /tmp/rsync.log

Automatisches, periodisches Starten des Backup

Auf dem Hifidelio läuft out of the box kein crontab. Mit dieser Anleitung hier kann das aber nachträglich eingerichtet werden. Die Lösung erfolgt über Verwendung einer erweiterten busybox, siehe hifidelio-user.de Forum: Busybox 1.3.1:

  1. Entsprechend des Threads hifidelio-user.de Forum: Busybox 1.3.1 eine andere Version der busybox holen und auf den Fidel kopieren.
  2. /bin/crond und /bin/crontab mit ln -s auf die neue busybox linken.
  3. Ein Verzeichnis /var/spool/cron… anlegen.
  4. /bin/crond im Hintergrund starten.
  5. Mittels des Befehls crontab das rsync backup als cron-job eintragen. Dazu wird per default der vi Texteditor verwendet.

Sowohl crond als auch crontab immer mit der option -c <dir> aufrufen, da das sonst die config in einem flüchtigen Verzeichnis (unter /var/spool/) abgelegt ist. Am besten unter /data/ ein passendes Verzeichnis einrichten. Hier wurde /data/devel/crontabs dazu verwendet.

Booten und Beenden

crond beim Booten des Hifidelio starten und beim Shutdown wieder beenden:

Dazu ein entsprechendes Start/Stop Skript:

#!/bin/sh 

case "$1" in 
start) 
    # Startup 
    mkdir /var/spool 
    mkdir /var/spool/cron 
    /bin/crond -b -L /tmp/cron.log -c /data/devel/crontabs/ 
;; 
stop) 
        # Shutdown 
        killall -q crond 
        while pidof crond > /dev/null; do sleep 1; done 
;; 
restart) 
   $0 stop 
   $0 start 
;; 

*) 
        echo "Usage: $0 {start|stop}" 
        echo "  start   ...  Starts the crond." 
        echo "  stop    ...  Stops crond." 
        exit 1 
;; 
esac

im Verzeichniss /etc/init.d erstellen und entsprechend der Anforderungen an die runlevel über /etc/rcX.d („X“ = runlevel) verlinken.

Passendes Runlevel: Hier wurde Runlevel 3 gewählt und im rc3.d eingetragen.

cd /etc/rc3.d
ln -s /init.d/cron s99cron

Als Dokumentation hier noch der Eintrag in der crontab:

root@hifidelio:/# crontab -c /data/devel/crontabs/ -l

0    22    *    *    6    nice -19 /usr/local/bin/rsync -av /audio/music/administrator@10.1.1.5::backupfidel/10.1.1.11/audio/music/ >> /tmp/rsync.log

Auf Deutsch:

Zur Minute 0 zur Stunde 22 an jedem Tag (*, 1-31) in jedem Monat (*,1-12) wenn es Samstag ist (6) dann Kommando ausführen.

Das nice -19 führt dazu, dass das Backup mit niedriger Priorität läuft und den Fidel nicht am Musikspielen hindert.

datensicherung_cron.txt · Zuletzt geändert: 2007/08/20 11:41 (Externe Bearbeitung)