Synchronisation Thecus NAS

Mein Thecus NAS N5200 Pro bietet von Haus aus eine Synchronisations-Möglichkeit (NSYNC). Diese Funktioniert aber nur sehr eingeschränkt. *comment on* NSYNC steht offenbar für NotSYNC… *comment off*

RSYNC muss her…

Dieses Howto basiert unter anderem auf der Beschreibung von Peter Futterknecht:

Meine Umgebung:

  • Thecus NAS 5200 Pro; Dies ist mein produktives NAS
  • QNAP TS-109; Dies ist das Backup-Medium

Installation Module auf Thecus N5200Pro

Auf dem Thecus N5200Pro werden folgende Module installiert:

  • SSHD
    N5200_SSHD_2.00.00
  • SYSUSER für ssh Zugriff
    SYSUSER-2.00.02.04
    Nach der Installattion das Passwort von “sys” über die Modul-Property Seite des Moduls SYSUSER ändern. Per Default ist das Passwort “sys”.
  • RSYNC für rsync (RSYNC installieren, aber noch nicht aktvieren!)
    N5200_RSYNC_2.00.02

RSYNC auf Thecus konfigurieren (Source-Daten)

Als erstes loggen wir uns über ssh auf das Thecus ein

ssh sys@thecusIP

Nach der Installation des Moduls RSYNC läuft rsync als deamon. Die Konfiguration erfolgt über das File

/raid/data/module/RSYNC/system/etc/rsyncd.conf

und enthält bereits alle Default-Shares des Thecus als vorkonfigurierte Ordner. Anbei eine Beispiel-Konfiguration. Es erlaubt den rsync-Zugriff von Host 192.168.1.xx (meine IP-Adresse des Qnap TS-109). Konfiguriert ist ein Zugriff “test”, welcher auf den lokalen Ordner “/raid/data/test123” verweist. Der rsync-Zugriff erfolgt in diesem Falle über den user “sys”. Hier kann ein beliebiger User konfiguriert werden. Es ist aber wichtig, dass dieser User auch entsprechende Rechte auf dem lokalen Ordner (/raid/data/test123) besitzt. Es können beliebig viele solcher “rsync-shares” erstellt werden. Es ist damit auch möglich nur einzelne Unterverzeichnisse eines Thecus-Shares zu synchen:

gid = Users            
read only = true  
transfer logging = false
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
#hosts allow = 192.168.2.254:255.255.255.0   
hosts allow = 192.168.1.xx

[test] 
comment = test Files 
path = /raid/data/test123 
read only = no 
list = yes 
uid = sys 
gid = nogroup
...
  • Logout SSH
  • Nun aktivieren wir das Modul RSYNC auf dem Thecus über das Web-Interface.

RSYNC auf Qnap TS-109 konfigurieren (Target-Data)

  • Login über das Qnap TS-109 Webinterface
  • Erstellen eines Zielverzeichnises. z.B. “Thecus_Backup/test123”
  • Das Qnap TS-109 liefert bereits ein SSH-Login Plugin mit. Dieses aktivieren.
  • Login über SSH
  • Das Qnap TS-109 liefert ebenfalls bereits rsync out of the box mit.
  • Nun können auf dem Qnap TS-109 rsync Befehle gegen das Thecus N5200pro ausgeführt werden.
    Folgender Befehl kopiert alle daten aus dem Thecus Source-Verzeichnis /raid/data/test123 in das Qnap TS-109 Zielverzeichnis /share/HDA_DATA/Thecus_Backup/test123/.
    Parameter delete = gelöschte Dateien werden auch in der Sicherung gelöscht
    Parameter stats = zeigt einen ausführlicheren Report am Ende einer Übertragung an.
rsync -a --delete --stats thecusIP::test /share/HDA_DATA/Thecus_Backup/test123/

Backup automatisieren

Nun, da rsync funktioniert ist es Zeit das ganze automatisiert, in regelmässigen Zeitabständen auszuführen.

  • copy_all.sh File unter /mnt/HDA_ROOT erstellen
cd /mnt/HDA_ROOT
vi copy_all.sh

Script:

#!/bin/sh
#
# called by cron to backup the N5200 to the Qnap TS-109 via rsync
echo "start backup via rsync : `date`"
echo "syncing folder : test"
rsync -a --delete --stats 192.168.1.xxx::test /share/HDA_DATA/Thecus_Backup/test123/
echo "end backup via rsync : `date`"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++"

File ausführbar machen

chmod +x copy_all.sh

Nun die crontab des Qnap TS-109 anpassen (“crontab -l” listet die aktuellen Einträge auf)

vi /etc/config/crontab

folgenden Eintrag hinzfügen. Das Script wird nun jeden Montag um 13:00 Uhr ausgeführt. Die Logdatei wird in das Root-Verzeichnis des Backups geschrieben.

0 13 * * 1 /mnt/HDA_ROOT/copy_all.sh >> /share/HDA_DATA/Thecus_Backup/rsync.log 2>&1

crontab neu laden

crontab /etc/config/crontab

cron restarten

/etc/init.d/crond.sh restart