This is the old XigmaNAS forum in read only mode,
it will taken offline by the end of march 2021!



I like to aks Users and Admins to rewrite/take over important post from here into the new fresh main forum!
Its not possible for us to export from here and import it to the main forum!

rsyc Backup auf entfernen Rechner/NAS(Synology)

German community

Moderators: b0ssman, apollo567, Princo, crowi

Forum rules
Set-Up GuideFAQsForum Rules
Post Reply
android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo,

ich backupe meine Daten intern auf eine separate Platte.

Vorgegangen bin ich nach dieser Anleitung http://blog.hani-ibrahim.de/automatisch ... eenas.html

Das rsync-Script tut alles seit Jahren wunderbar. :D :D :D

Nun bin in meiner Paranoia :roll: auf die Idee gekommen, das Backup doch auf eine entferne NAS(Synology) im eigenen Netz zu machen.

Da ich das Script nicht angepasst bekomme, weil ich davon keine Ahnung habe, würde ich gern einfach eine Freigabe vom Synology NAS ins NAS4Free mounten.

Hat jedmand ne Ahnung, wie man das hinbekommt?


hier mal das Script :

Code: Select all

#!/bin/sh
# Name:		Easy Automated Snapshot-Style Backups with rsync
# Copyright (C) 2007-2008 Dan Merschi <danmero at gmail dot com>. All rights reserved.
# Date: 	2008-02-24
# Based on Mikes Handy  --  Easy Automated Snapshot-Style Backups with Linux and Rsync
#					http://www.mikerubel.org/computers/rsync_snapshots/
# Purpose:	
#	- Fully backup the SOURCE( first argument which must be the path to a mounted filesystem "partition" or just a directory)
#	to a TARGET ( second argument which must be the path to a mounted filesystem "partition" or a  directory) on the same disk 
#	or on a different disk on the same system(computer) using hardlinks on TARGET.
#	- Through the use of hardlinks, each backup directory appears to contain a complete copy of all the files at the given time. 
#	- The use of hardlinks means that only files that have changed actually take up space.
#-----------------------------------------------------------------------------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export PATH;
_msg() { case $@ in
  1) echo "
RUNTIME ERROR !!  Usage: $0 [source path] [destination path]
You must enclose the path within single or double quotes if the path contains special character(s) or whitespace(s)." ; exit 1 ;;
  2) echo 'Source path error. Please check the path and try again.'; exit 1 ;;
  3) echo 'Destination path error. Please check the path and try again.'; exit 1;;
  4) echo 'Sync in progress, please try again later. This script will exit now.'; exit 0 ;;
esac ; exit 1; }
#
  i=9 										# --- > Set how many backups the script will take
#
  if [ $# -ne 2 ] ; then _msg 1 ; fi						# --- > This script require 2 arguments
#
  SOURCE=`echo $1 | sed 's/\/$//g'`; DESTINATION="$2";				# --- > Remove the trail slash if exist
#
  if [ ! -d "${SOURCE}" ] ; then _msg 2 ; fi 					# --- > Check if the source path exist
#
  if [ ! -d "${DESTINATION}" ]; then _msg 3; fi					# --- > Check if the destination path exist
#
  DIR=`echo $SOURCE | awk -F"/" '{print $NF}'`_back				# --- > Extract the directory name from source path
#
  if [ -d "${2}"/"${DIR}"${i} ]; then rm -fR "$2"/"$DIR"$i ; fi			# --- > Remove the oldest backup directory
#
  i=`expr $i - 1` && while [ $i -ne 0 ] ; do 					# --- > Shift all snapshots(s) up by one
	y=`expr $i + 1` &&  if [ -d "${2}"/"${DIR}"${i} ]; then mv -f "$2"/"$DIR"$i "$2"/"$DIR"$y ; fi && i=`expr $i - 1`
  done
#										 
  if [ ! -f /var/run/rsync_snapshot_${DIR} ] ; then 
	touch /var/run/rsync_snapshot_$DIR					# --- > Make the look file
	rsync -av --safe-links --delete --exclude='.*' --link-dest="$2"/"$DIR"2/ "$SOURCE"/ "$2"//"$DIR"1  	# ---> Run rsync
	rm /var/run/rsync_snapshot_$DIR						# --- > Remove the look file
	touch -t `date +%Y%m%d%H%M.%S` "$2"/"$DIR"1				# --- > Set the target time
  else
	_msg 4									# --- > Script already running, exit now
  fi
  exit 0
#----------------------------------------------------- End Script ------------------------------------------------------------------

User avatar
crowi
Forum Moderator
Forum Moderator
Posts: 1176
Joined: 21 Feb 2013 16:18
Location: Munich, Germany
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by crowi »

kann die Synology NFS?
NAS 1: Milchkuh: Asrock C2550D4I, Intel Avoton C2550 Quad-Core, 16GB DDR3 ECC, 5x3TB WD Red RaidZ1 +60 GB SSD for ZIL/L2ARC, APC-Back UPS 350 CS, NAS4Free 11.0.0.4.3460 embedded
NAS 2: Backup: HP N54L, 8 GB ECC RAM, 4x4 TB WD Red, RaidZ1, NAS4Free 11.0.0.4.3460 embedded
NAS 3: Office: HP N54L, 8 GB ECC RAM, 2x3 TB WD Red, ZFS Mirror, APC-Back UPS 350 CS NAS4Free 11.0.0.4.3460 embedded

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

ja, kann das Ding... aber ich bis jetzt noch nicht... :oops:


Screenshot-Synology DiskStation.png
You do not have the required permissions to view the files attached to this post.

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

Hi android25,

auf dm Screenshot ist was von rsync zu sehen. Warum nimmst du nicht gleich das einfach?

Kreuzberger

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hi kreuzberger,

danke für deine Antwort.

Ja, ich hatte dort schon bissl rumprobiert, es aber leider nicht hinbekommen, weil ich es gerne so hätte, wie es das Script auch für meine interne Sicherung ausgibt. Und das Script umbauen kann ich nicht.

Das Script erstellt mir Backups in Ordnerstrukturen wie diese hier:
wiederherstellung-300x155.png
Damit ist eine Wiederherstellung im Fall der Fälle total easy. Und das soll es sein...


die Idee mit NFS finde ich ganz gut... bin da gerade am Einlesen... hab davon aber leider keinen Dunst.... vielleicht kann mir ja jemand helfen. :oops:
You do not have the required permissions to view the files attached to this post.

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

so...

ich habe die nfs-Freigabe von der Synology im NAS4FREE unter /mnt eingehangen... bis hierhin klappt´s

mount 192.168.1.102:/volume1/NetBackup /mnt/test


dann starte ich das Backup mit dem Script...und er schreibt nur einen einzigen Ordner und eine einzige Datei. Das war´s :shock:

hat jemand ne Ahnung, warum es nicht klappt?

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

Moin android25,

ich fürchte das wird so einfach nicht gehen wie du dir das wünscht. Bisweilen hast du ja eine lokale Ausführung von rsync genutzt. Als brauchte es keine Beachtung von Client- und Server-Rolle. Darüber hinaus hattest du wenig Probleme die Zugriffsrechte in den Griff zu bekommen.

Benutzt man rsync über eine Netzwerkverbindung muss man das eben alles beachten.

Ich persönlich hat es für sinnvoll, zunächst zu klären was in dem Fall Client, und was Server ist. Ich stelle bei rsync immer den ZIEL-Rechner als Client ein. Und dann den QUELL-Rechner als rsync Server. Das bedeutet, dass rsync auf dem Client (ZIEL) ausgeführt wird und auf den Server (QUELLE) zugreift und die Daten abholt. Dafür müssen die Unerreichte / Zugriffsrechte natürlich vorhanden sein. Ich richte dazu gerne den selben USER mit identischem Passwort auf beiden Rechnern ein. Das Synology ist aber auch ein Rechner.

Im Sinology Forum gibt es dazu auch Hilfe, aber ob die genau dazu passt weiss ich auch nicht. Ich habe kein Synology.

https://www.synology.com/de-de/knowledg ... file_rsync
https://www.synology.com/de-de/knowledg ... gy_product

Grundsätzlich sollte das kompatibel sein, also rsync Synology und rsync Nas4Free. Du musst eben auf dem QUELL-Rechner (Nas4free bei dir) eine Rsync-Freigabe erzeugen, auf die der Client (QUELL-Rechner, Synology bei dir) zugreifen kann.

Kreuzberger.

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo Kreuzberger,

vielen Dank für deine Unterstützung und die rsync-Erklärungen. Ich habe auch die Befürchtung, dass es leider nicht so einfach ist....

Ich hatte es die ganze Zeit versucht per NFS einzubinden. Das war für mich der "einfachste" Lösungsansatz, da der entfernte Ordner ja mit NFS direkt ins System eingebunden wird, als wäre er lokal vor Ort. Leider bisher ohne Erflog.

Mal zum Stand der Dinge:

1. ich lasse NAS4FREE ein Script beim Booten ausführen (per PostInit - also nach der Systeminitialisierung (Hochfahren))
damit habe ich den Ordner /nfs im System mit vollen Zugriffsrechten für alle (777)

angelegt unter System > Erweitert > Befehlsskripte

Code: Select all

/mnt/Festplatte1/Scripte/mountnfs.sh

das Script ist ausführbar (755) und im Scritp selbst steht Folgendes:

Code: Select all

#!/bin/sh
mkdir /nfs
chmod 777 /nfs/
Das funktioniert.

2. per Cronjob die NFS-Freigabe von der Synology mounten

angelegt unter System > Erweitert > Cron

Code: Select all

mount -t nfs -o rsize=32768,wsize=32768,intr,noatime 192.168.252.102:/volume1/nfs/ /nfs/
auch das funktioniert.

Hier fällt allerdings bereits auf, dass das Einhängen auf dem NAS4FREE nur als User root möglich ist.
Nach meinem Wissen will NFS auch in Version 4 (oder etwa nicht mehr?), dass UID und GID identisch sind.

In meinem Fall UID=1027 und GID=100. Damit ist es gleich, wie auf der Synology (Das habe ich in meinem NAS4FREE auch so hinbekommen.)
Es ist aber schlicht und einfach nicht möglich das der User root die ID=1027 bekommt. Und das möchte ich auch nicht.

Normale Schreibversuche über Samba von Windows aus oder über WinSCP funktionieren einwandfrei im gemounteten nfs-Ordner.
Wenn ich dort Ordner oder Dateien anlege, so erhalten diese auch die UID des jeweiligen Besitzers, der die Daten anlegt (UID=1027 oder 1028 etc. und GID=100) und landen auch auf so - mit den gleichen Besitzrechten - auf der Synology.
Bis hierhin sieht eigentlich auf den ersten Blick alles gut aus...


By the way: Ich suche nach einer Möglichkeit den Mountpunkt als normaler User einzuhängen, so wie es normalerweise bei einem Linux in der fstab beim booten gemacht wird. Ich fürchte allerdings, dass dies bei der embedded-Version gar nicht möglich ist...

Code: Select all

     Beispiel Mount unter Linux in der /etc/fstab (diskstation mit der IP-Adresse ersetzen)

diskstation:/volume1/myfiles /myfiles nfs auto,user,defaults,rsize=32768,wsize=32768,tcp,intr 0 0 
Screenshot-2017-10-9 NFS-Konfiguration – Synology Wiki.png


3. nun lasse ich das Script rsync_snap_d2d.sh laufen.
(ausführender User ist root, das Script ist ausführbar (755))
(unter anderen Usern läuft es gar nicht)

Der Befehl lautet: sh /mnt/Festplatte1/Scripte/rsync_snap_d2d.sh /mnt/Festplatte1/test1/ /nfs/

Ich habe das, um zu sehen, was rsync ausspuckt auch mal in der Konsole laufen lassen.
Zuerst hier noch mal das Script:

Code: Select all

#!/bin/sh
# Name:		Easy Automated Snapshot-Style Backups with rsync
# Copyright (C) 2007-2008 Dan Merschi <danmero at gmail dot com>. All rights reserved.
# Date: 	2008-02-24
# Based on Mikes Handy  --  Easy Automated Snapshot-Style Backups with Linux and Rsync
#					http://www.mikerubel.org/computers/rsync_snapshots/
# Purpose:	
#	- Fully backup the SOURCE( first argument which must be the path to a mounted filesystem "partition" or just a directory)
#	to a TARGET ( second argument which must be the path to a mounted filesystem "partition" or a  directory) on the same disk 
#	or on a different disk on the same system(computer) using hardlinks on TARGET.
#	- Through the use of hardlinks, each backup directory appears to contain a complete copy of all the files at the given time. 
#	- The use of hardlinks means that only files that have changed actually take up space.
#-----------------------------------------------------------------------------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export PATH;
_msg() { case $@ in
  1) echo "
RUNTIME ERROR !!  Usage: $0 [source path] [destination path]
You must enclose the path within single or double quotes if the path contains special character(s) or whitespace(s)." ; exit 1 ;;
  2) echo 'Source path error. Please check the path and try again.'; exit 1 ;;
  3) echo 'Destination path error. Please check the path and try again.'; exit 1;;
  4) echo 'Sync in progress, please try again later. This script will exit now.'; exit 0 ;;
esac ; exit 1; }
#
  i=9 										# --- > Set how many backups the script will take
#
  if [ $# -ne 2 ] ; then _msg 1 ; fi						# --- > This script require 2 arguments
#
  SOURCE=`echo $1 | sed 's/\/$//g'`; DESTINATION="$2";				# --- > Remove the trail slash if exist
#
  if [ ! -d "${SOURCE}" ] ; then _msg 2 ; fi 					# --- > Check if the source path exist
#
  if [ ! -d "${DESTINATION}" ]; then _msg 3; fi					# --- > Check if the destination path exist
#
  DIR=`echo $SOURCE | awk -F"/" '{print $NF}'`_back				# --- > Extract the directory name from source path
#
  if [ -d "${2}"/"${DIR}"${i} ]; then rm -fR "$2"/"$DIR"$i ; fi			# --- > Remove the oldest backup directory
#
  i=`expr $i - 1` && while [ $i -ne 0 ] ; do 					# --- > Shift all snapshots(s) up by one
	y=`expr $i + 1` &&  if [ -d "${2}"/"${DIR}"${i} ]; then mv -f "$2"/"$DIR"$i "$2"/"$DIR"$y ; fi && i=`expr $i - 1`
  done
#										 
  if [ ! -f /var/run/rsync_snapshot_${DIR} ] ; then 
	touch /var/run/rsync_snapshot_$DIR					# --- > Make the look file
	rsync -av --safe-links --delete --exclude='.*' --link-dest="$2"/"$DIR"2/ "$SOURCE"/ "$2"//"$DIR"1  	# ---> Run rsync
	rm /var/run/rsync_snapshot_$DIR						# --- > Remove the look file
	touch -t `date +%Y%m%d%H%M.%S` "$2"/"$DIR"1				# --- > Set the target time
  else
	_msg 4									# --- > Script already running, exit now
  fi
  exit 0
#----------------------------------------------------- End Script ------------------------------------------------------------------ 
Er erstellt alle Ordner aus dem Ordner /mnt/Festplatte1/test1/ im Ordner /nfs/ und damit auch auf der Synology.
Auch die Besitzerrechte stimmen.

Dann tut das Script etwas, das ich allerdings nicht verstehe, da ich bei dem Script leider nicht durchblicke :oops:
Die Ausgabe auf der Konsole zeigt etwas von chmod, da das Script ja Hardlinks erstellt...und dann Permission denied und es friert ein...


Ich bin hier allerdings ehrlich dabei, das aufzugeben und gern einen komplett neuen rsync Befehl mit Server und Client zu erarbeiten... Dazu benötige ich allerdings Hilfe. Ich check´ die ganzen Optionen bei rsync nicht.

Also mein Ziel ist:

- einen Ordner vom NAS4FREE (das wäre dann der rsyn-Server) auf den enfernten Client (Synology) zu backupen
- der Ordner soll einmal komplett als Kopie erstellt werden und dann sollen nur noch die jeweiligen Änderungen übertragen werden (Differentielle Sicherung)
- die Ordnerstruktur soll erhalten bleiben - alle alten nicht veränderten Daten werden nicht kopiert, sondern im Ziel hart verlinkt

(Zitat von: http://blog.hani-ibrahim.de/automatisch ... eenas.html
RSYNC zur Datensicherung. Damit können mehrere Generationen eines Dateipools gesichert werden, ohne das sich der Speicherbedarf multipliziert! Es werden lediglich die geänderten Dateien gesichert. Im Dateisystem der Sicherung sieht es aber aufgrund von Links so aus, als wäre bei jeder Generation der komplette Dateipool gesichert worden (Schnappschuss-Sicherung). Das macht die Wiederherstellung auch für Laien einfach, da der Verzeichnisbaum der Sicherung genauso aussieht, wie der des Originals. Man kann Dateien oder Verzeichnisbäume einfach über den Dateimanager wieder herstellen bzw. kopieren.)
NAS4Free Backupstruktur.png
- ich habe in diesem gleichen Zusammenhang auch mal was von dirvish gelesen... aber ohne Hilfe, bin ich da leider nicht fit genug.... :oops: ...

- und hier werde ich auch mal gucken ... https://emanuelduss.ch/2010/11/ein-back ... und-rsync/

Leider etwas lang geworden.. Sorry...
You do not have the required permissions to view the files attached to this post.

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

hi android25,

das mit deinem Script hinkt an de stelle, als es vom Client (in deinem Fall das Synology) ausgeführt werden muss. Wie das gehen kann ist mir unklar. Ich kenne mich da nicht aus mit dem Synology.

Um das script also überhaupt ausführen zu können müsste es dann also angepasst werden und für dich Server und Client vertauscht werden, so dass das Nas4Free Client wird und die Daten eben auf das Synology (Server) drauf schiebt. Hier müssten im Script also beim rsync Befehlsaufruf Quelle und Ziel getauscht werden. Das bedeutet, dass der User root von Nas4free schreibrechte bekommt auf das Synology. Das hast du ja zum Teil schon erreicht für deine NFS Freigabe.

Ein Ansatz wäre doch aber erst einmal, ob rsync (Nas4free) zu rsync (Synology) direkt per rsync-Protokoll Daten austauscht, oder? Also ohne das script, direkt per rsync-Protokoll. Das wiederum würde ich mit einem Testsystem Nas4Free machen und Nicht mit deinen Originaldaten, damit da nichts kaputt gehen kann.
Damit würde man erst einmal feststellen, ob die Datenübertragung direkt per rsync-Protokoll funktioniert.

Eine NFS-Freigabe auf dem Synology anzulegen und für das Nas4free bereit zu stellen ist ein anderer weg als üblicherweise für rsync gedacht. Das erfordert wie gesagt komplette Rechte für diese Freigabe am besten erst mal für alle zum Testen (777). Einschränken der Rechte kann man anschliessend ausprobieren.

Kreuzberber

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hi, Kreuzberger,

das Script wird doch auf dem NAS4Free ausgeführt und liegt auch dort. Es ist nichts auf der Synology außer der NFS-Freigabe.

Nochmal kurz zusammengefasst:

Das Script liegt bei mir auf dem NAS4Free auf der Festplatte1.

Ich kann mit dem Script perfekt von der einen internen Samba Freigabe (z.Bsp. ein Ordner auf Festplatte1) auf eine andere interne Samba Freigabe (z.Bsp. irgendein Ordner auf Festplatte 5 oder 3 oder sonstwo intern....) innerhalb des NAS4Free sichern.

Ausgeführt wird das Script per Cron-Job als User root. (oder manuell per Terminal als root geht auch)

Deshalb hatte ich ja die Überlegung mit NFS... Indem ich dem Script einfach vorgaukel, es sichert auf eine interne Freigabe. Und dort liegt dann aber die NFS-Freigabe. Oder denke ich hier falsch?

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

hi android25,

mir ist das schon klar.

Der Denkfehler ist, dass eine "intern" angehängte Freigabe unter der Kontrolle des nas4free sei. Dem ist NICHT so! Die Rechteverwaltung und -vergabe liegt dann trotz allem auf dem Synologie für die nfs Freigabe. Somit kann ohne die passenden Rechte das Script keine Daten auf der nfs Freigabe ablegen.

(Aus dem Grund hat mal Novell das Active Directory erfunden.)

Man müsste also auf der nfs Tragabe über die Rechtsverwaltung des Sinologie alle Rechte freigeben (777). Das macht es aber erst einmal unsicher. Aber man kann mal probieren ob es so geht. Dan weiss man eben: es liegt an den Rechten.

Kreuzberger

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hi Kreuzberger,

ja, das war mir soweit auch klar. Das NAS4Free schreibt ja in dem Moment auf der Synology. Und dazu muss ihm dort entsprechend das Recht eingeräumt werden. Ich hatte deshalb dort die Rechte schon Everyone gegeben.

Leider ohne Erfolg...

Deshalb werde ich jezt wohl den Weg gehen, den du vorgeschlagen hast:

NAS4Free als Quelle wird rsync-Server und das Synology-Ding wird rsync-Client.

Ich brauch jetzt nur noch einen rsync-Befehl mit dem es dann auch klappt...

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

hi android25,

ich hab mal mit jemanden gesprochen, der sich damit auskennt.

kurz und gut: lass es!

wenn du backups per rsync auf den synology machen willst benutzte rsync Freigabe und das rsync Protokoll Richtung SYNOLOGIE. Theoretisch kann man auf dem Sinologie auch ein script laufen lassen. Aber man wird an allen ecken und stellen Probleme mit den rechten bekommen.

Kreuzbeger

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo Kreuzberger,

vielen Dank für deinen Support.

Ich lasse das jetzt auch mit dem Script. Auch wenn ich es offen gesagt nicht verstehe.

Nochmals Danke.

Werde sicherlich noch Fragen haben, wenn ich mir das jetzt selbst bastel ;)

VG

User avatar
Princo
Forum Moderator
Forum Moderator
Posts: 1080
Joined: 15 Jul 2012 01:21
Location: Berlin, Germany
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by Princo »

Hallo zusammen,

Ich habe mir vor einigen Jahren auch mal so ein Script (wie oben) erstellt, um meine Linux-Rechner auf eine externe Festplatte per rsync zu sichern.

Die Besonderheit dabei war, daß ich meine Sicherungsplatte maximal ausnutzen wollte. Mein Skript hat daher nicht eine feste Zahl von Sicherungsständen (im obigen Skript i=9) verwaltet, sondern es hat die zu sichernde Datenmenge ermittelt, und dann solange ältere Sync-Stände gelöscht, bis genug freier Platz vorhanden war. Dabei gab es noch eine Sperre, daß es mir auf keinen Fall die letzten drei Stände löschen durfte. Aber das nur nebenbei.

Ansonsten habe ich dabei auch mit Hardlinks gearbeitet. Da die externe Platte lokal an den zu sichernden Rechner angeschlossen war, gab es auch keine Probleme mit den Rechten.

Wie bereits richtig erkannt wurde, ist das vorliegende Skript nur für den lokalen Betrieb geeignet. Das verleitet natürlich dazu, NFS einzusetzen, damit man das Skript unverändert übernehmen kann. Allerdings fängt man sich dabei sofort weitere Probleme ein, da man ein zusätzliches Protokoll (hier NFS) verwendet. Das fängt schon damit an, ob man auf der Synology den Haken bei "NFSv4-Unterstützung aktivieren" gesetzt hat, oder nicht.

Ein etwas besserer Weg wäre es, NFS nicht zu nutzen, das Skript aufzuteilen und anzupassen, und die Übertragung mit dem rsync-Client/Server-Betrieb vorzunehmen.

Das Skript muß angepaßt werden, weil die Quell-/Zielbezeichnungen nicht auf die lokale Platte, sondern auf das Server-System zeigen müssen.

Das Skript muß aufgeteilt werden, weil die Pseudo-Snapshots und deren Rotation nur auf dem Ziel-System existieren, und die nötigen Schritte dort ablaufen müssen.

Stichwort Rechte: Beim Einsatz von rsync im Client/Server-Modus wird in den Standard-Einstellungen ein Mapping der User- und Group-IDs vorgenommen, d.h. wenn der Nutzer Fritz auf den NAS4Free die UID=1003 hat, und der User Fritz auf der Synology die UID=1006 hat, werden die Besitzeigenschaften der übertragenen Dateien auf dem Zielsystem angepaßt.

Das setzt natürlich voraus, daß man auf dem Zielsystem immer die gleichen User und Gruppen eingerichtet hat. Sie können andere ID-Nummern haben, aber sie müssen vor der Übertragung vorhanden sein.

Das gilt natürlich nur dann, wenn man auf der Synology mit den Daten weiterarbeiten möchte.

Richtig blöd wird es, wenn man die Nutzer und Gruppen auf dem Zielsystem erst einrichtet, wenn man schon Daten darauf übertragen hat.

Man kann das User/Group-Mapping beim Transfer übrigens auch abschalten.

Diese Erläuterung soll bis hierher nur auf ein paar Fallstricke beim Backup zwischen zwei verschiedenen Systemen hinweisen.

#----------------------------

Ich würde ein grundsätzlich anderes Vorgehen empfehlen.

1. NAS4Free kann ZFS-Dateisysteme verwalten.
2. ZFS hat echte Snapshot-Fähigkeiten (nicht nur Pseudo-Snapshots).
3. ZFS hat eine eigene Funktion für den Abgleich von Datenbeständen.

Ja, ich weiß, daß die Synology kein ZFS kann.
Ja, ich weiß, daß der android25 kein ZFS einsetzt.

Dennoch läßt sich die geforderte Aufgabenstellung sehr viel einfacher, schneller und zuverlässiger zwischen zwei ZFS-Systemen, oder mit einer extern angeschlossenen Drive-Bay erledigen. ZFS-fähige Systeme bekommt man für ~200€ (ohne Festplatten).

Übrigens ZFS bedeutet nicht, daß man zwangsläufig RaidZ machen muß. Es ist sehr empfehlenswert, aber kein Muß.

Grüße
Princo
Meine Antworten beziehen sich immer auf die englischsprachige GUI. ECC-RAM ist Pflicht beim Einsatz von ZFS.

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo Princo,

vielen Dank für deine ausführliche Antwort.

Wie gesagt, es leuchtet mir absolut nicht ein, warum eine NFS-Freigabe (egal, ob V3 oder V4) trotz angepasster UID und GID (UID=1027 und GID=100 = beide gleich, wie auf der Synology) eingebunden nicht funktioniert. In meinem Verständnis "gaukelt" der per NFS eingebundene Ordner dem rsync-Prozess bzw. dem rsync-Script ja eine lokale Stelle als Sicherungsziel vor. Einfache Schreibversuche vom Server auf die Freigabe mit Ordner/Dateien erstellen, löschen usw. mit dem NAS4Free eigenen QuiXplorer unter Werkzeuge > Dateiverwaltung funktionieren ja auch.

Aber nun egal. Ich werde es jetzt so angehen, wie auch schon Kreuzberger und jezt auch du vorgeschlagen haben - das Script anpassen bzw. in mehrere Teile aufspalten.

Mein Problem: Ich habe immer noch keine Ahnung mit dem rsync-scripten....weiß aber inzwischen, dass rsync auch per SSH mit dem Befehl rsync -e ssh auf entfernte Clients über das unsichere Netz Internet sichern kann. Das zeigt mir auf jeden Fall, dass rsync meine paranoide Sicherungsstrategie, eine Sicherung privat auszulagern, eigentlich perfekt umsetzen könnte... wenn man Scripte bauen könnte.... aber daran lerne ich ja gerade...

In diesem Sinne, noch einmal vielen Dank für deine Antwort.

VG

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

hi android25,

ich habe den Eindruck, dass du noch nicht verinnerlicht hast, dass rsync nicht nur ein Kopierprogramm ist. rsync ist was Netzwerk angeht dann darüber hinaus auch als Server und Client einsetzbar und bedient sich da bei der Kommunikation zwischen rsync-Server und rsync Client mit dem eigenen rsync Protokoll. Es spricht also in Netzwerk nicht SMB, AFP oder sonst was. Es muss dann aber eben auf BEIDEN Seiten gestartet sein.

Nur wenn man rsync wie du bisher nur lokal betreibt ist es ein "Kopierprogramm".

Was den Netzwerkbetrieb angeht muss der ausführende Nutzer auf beiden Seiten (Client und Server) entsprechende Rechte haben. Und genau da liegt der Haken beim Synology, wenn man rsync als script ausführen will. Denn du möchtest rsync auf dem Nas4Free als script ausführen, über das Netzwerk Daten kopieren und dort auf ein Volume schreiben.
Leider vergisst du dabei, dass man bei der Methode (Netzwerk-Volume einhängen) eben die rechte im Ziel braucht. Das bekommt man aber offensichtlich mit einem Synology (Synology Sonderfall) wie man mir extern erkläre nie sauber hin. Synology nimmt zwar so etwas wie Linux, frickelt es aber an vielen stellen Synology-eigen um.

Darum hatte ich dir geraten auf das script zu verzichten und den Synology so einzurichten, als dass er eine rsync-Freigabe hat, die per rsync vom Nas4Free aus angesprochen wird. Dann benutzt du eben auch das rsync-Protokoll. SSH ist da erst mal gar nicht notwendig. (Kompression im lokalen Netz auch nicht).

Vielleicht lässt sich das so verdeutlichen:

rsync auf einem lokalen Rechner ist kopieren von einem Ordner/Volume zum anderen. Die Rechte sind dabei wenn man Admin (root) ist egal. Denn der hat lokal die gleichen Rechte auf dem gesamten Rechner.
Will man aber rsync zwischen zwei Rechnern einsetzen startet man auf dem einen Rechner Windows als Server, und auf dem anderen Rechner Windows als Client (Tausche eben Windows <-> rsync als Begriff aus). Windows unterhält sich miteinander übers Netz per SMB. Ich sag mal das ist das Windows-Protokoll. rsync unterhält sich übers netz per rsync-Protokoll.
Man braucht also auch gar keine SMB Freigaben oder Samba-Server um per rsync Daten von einem Rechner zum anderen zu übertragen.

Der rsync Server ist dann in deinem Fall auf dem Synology wie ein Dienst, der im Hintergrund ständig mitläuft.

Richte also auf dem Synology einen leeren Ordner ein. Auf diesem Ordner machst du eine Rsync Freigabe. Die nennst du "WILLY". In der rsync Freigabe sagst du, wer da Rechte drauf haben soll und trägst den ausführenden User des Nas4Free Client ein. (Vermutlich root)
Auf dem Nas4free Richtest du einen Rsync Client ein, der die Daten nach "Willy" schreiben soll. Der ausführende User muss hier also der sein, den du für "Willy" angegeben hattest.
Jetzt mal mit ein Paar wenigen Dateien ausprobieren.


Kreuzberger

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo Kreuzberger,

danke mal wieder für deine ausführlichen Erklärungen.

Wie gesagt, ich kann kein Script schreiben. Daran hängt es bei mir. :oops:

Ich habe noch ein anderes gefunden, aber da kommt ein syntax-fehler in Zeile 17...

17: Syntax error: "(" unexpected


https://ctaas.de/rsync.htm

Code: Select all

#!/bin/bash
# Den Pfad zum Quell- und Backupverzeichnis ohne abschließenden '/' angeben.
quelle=/pfad/quelle      # Welches Verzeichnis soll gesichert werden?
backup=/pfad/backup      # Wo sollen die Sicherungen gespeichert werden?
nosave=/pfad/exclude.txt # Ausschlüsse werden in dieser Datei zeilenweise eingetragen.
# Ab hier muss man eigentlich nichts mehr ändern.

# Ausschlussdatei neu anlegen, nur falls noch keine existiert:
touch $nosave

# Datum ermitteln:
wochentag=$(date +"%a") # %a = Wochentag als Text.
tag=$(date +"%d")       # %d = Tagdatum als zweistellige Zahl.
monat=$(date +"%m")     # %m = Monatsdatum als zweistellige Zahl.

# Backup Funktion definieren:
function backup ()
{
 rsync -rtpgov --delete --checksum -hh --stats --exclude-from="$nosave" --link-dest="$quelle/" "$quelle/" "$backup/$1/" >"$backup/_letzte_Sicherung.txt" 2>&1
 # alle protokollierende Standardausgaben und ggf. auftretende Fehlerausgaben (2>&1) werden in der Datei "_letzte_Sicherung.txt" gespeichert.
 echo -e '\n'-- '\n'letzte Sicherung: $(date "+%Y-%m-%d %H:%M:%S") >> "$backup/_letzte_Sicherung.txt"
 # Das Logfile kann während der Sicherung nicht direkt im Sicherungsordner liegen, so das dieses im Anschluss dorthin verschoben wird.
 mv $backup/_letzte_Sicherung.txt $backup/$1/_letzte_Sicherung_$(date "+%Y-%m-%d").txt
 # Optional: Sicherungsprotokoll per E-Mail versenden (ein eingerichteter MTA (mail transfer agent siehe Punkte A-I) ist Voraussetzung):
 # mail -s "Protokoll" backup@ctaas.com <$backup/$1/_letzte_Sicherung*.txt
}

## tägliche Sicherung (Montag - Sonntag):
# Nur wenn der Tag nicht der 01, 09, 16 oder 24 ist wird hier gesichert - sonst wird eine Wochen- oder Monatssicherung durchgeführt:
if [[ $tag != 01 && $tag != 09 && $tag != 16 && $tag != 24 ]]; then
 # und wenn Wochentag = ... dann Sicherung im Unterordner vom Wochentag:
 case "$wochentag" in Mo|Di|Mi|Do|Fr|Sa|So) backup $wochentag ;; esac
fi

## Wochensicherungen:
# Hinweis:
# 1. Woche ist die Monatssicherung.

# 2. Woche (9. Tag):
case "$tag" in 09) backup 09 ;; esac

# 3. Woche (16. Tag):
case "$tag" in 16) backup 16 ;; esac

# 4. Woche (24. Tag):
case "$tag" in 24) backup 24 ;; esac

## Monatssicherungen:
# wenn gerader Monat (Mg):
case "$monat" in 02|04|06|08|10|12)
 # und wenn 1.ter im Monat:
 case "$tag" in 01)
 backup Mg
 ;; esac
;; esac

# wenn ungerader Monat (Mu):
case "$monat" in 01|03|05|07|09|11)
 # und wenn 1.ter im Monat:
 case "$tag" in 01)
 backup Mu
 ;; esac
;; esac

# Alternativ: Jeden Monat ein Backup am 1. des Monats:
# case "$tag" in 01) backup Monat_$monat ;; esac

# Alternativ: Jahressicherung am 1.1. des Jahres:
# case "$tag" in 01) case "$monat" in 01) backup Jahr_$(date +"%Y") ;; esac ;; esac

# rsync script: 2017 © Computertechnik Schröder, Arno Schröder, Kahla

Ich glaub ich gebe das auf... Schade....

Danke dir trotzdem nochmal für deine Hilfe.

VG

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

Hi android25,

ich dachte ja dann, dass du ERST einmal ausprobierst, ob Nas4Free und SYNOLOGY per rsync Protokoll ohne Script kommunizieren.

Wenn das geht kann man an das Scripten gehen.......

Kreuzberger

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Hallo Kreuzberger,

ja, hast wohl Recht... Ich will immer gleich, dass alles auf Anhieb komplett passt...

Ich habe jetzt auf der Synology den rsync eingeschaltet und die Synology ist damit in meinem Verständnis der Server.

Mein NAS4Free soll die Daten jetzt auf die Synology schieben. NAS4Free ist damit sozusagen der Client.

Ich habe das jetzt mal auf der Shell getestet. Bisher ohne Erfolg.... Ich melde mich, wenn irgendwie endlich mal was an Daten auf der Synology landet.

Viele Grüße

android25
Starter
Starter
Posts: 15
Joined: 03 Sep 2017 17:07
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by android25 »

Also... Es tut nicht richtig... :oops: ... bzw. gar nicht...

ich habe mal ein Testszenario gebaut und feuer das von der Shell des NAS4Free als Nutzer "rsync" zur Synology:
(auf der Synology gibt es auch einen User "rsync", der dort auch die Rechte für das Nutzen von rsync hat)

  • rsync -av /mnt/1Festplatte/Testdaten/ rsync@192.168.252.102::NetBackup/backuptest/ --password-file /mnt/1Festplatte/password.pwd
Ergebnis:
  • sending incremental file list
    rsync: read error: Operation timed out (60)
    rsync error: error in socket IO (code 10) at io.c(785) [sender=3.1.2]
Es landen nur die Ordner aus den Testdaten auf der Synology. Und diese gehören auf einmal dem User "root"... Der User "root" führt den rsync-Befehl allerdings gar nicht aus... Das er dann keine Dateien da rein schreiben kann leutet mir eigentlich ein.... :idea:

Es ist meiner Meinung nach immer noch ein Rechteproblem, diese Fehlermeldung.

Kann jemand helfen?

VG android25

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

Mahlzeit android25,

also soweit ich das richtig verstanden habe muss man wenn man von Nas4FreeQuelle zu einem anderen Nas4freeZiel per rsync übertragen will auf dem Ziel (Server) ein sogenanntes Modul, also eine sync-Freigabe einrichten. Auf dieser Freigabe muss man dem USER Rechte geben, der von der Quelle aus darauf zugreifen soll. Das trägt man sofern es sich beim Ziel um ein Nas4Free handelt in dem Modul ein. Wie das nun auf einem Synology geht weiss ich nicht, da ich keines habe und die Bedienungsanleitung von Synology nicht viel dazu beiträgt.


Also müsstest du auf dem Synology sowas wie ein Modul einrichten. Vielleicht versuchst du das ganze mal nur mit den root-Rechten zu machen, und nicht mit anderen usern.

Kreuzberger

kreuzberger
Advanced User
Advanced User
Posts: 395
Joined: 07 May 2015 18:52
Location: Berlin
Contact:
Status: Offline

Re: rsyc Backup auf entfernen Rechner/NAS(Synology)

Post by kreuzberger »

Mahlzeit android25,

in einem anderen Zusammenhang war ich hier auf das gestossen:

https://www.synology.com/de-de/knowledg ... nology_NAS

https://www.synology.com/de-de/knowledg ... etwork_NFS

Vielleicht hilft das ja.

Kreuzberger

Post Reply

Return to “Deutsch”