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
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....

...
- 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.