#!/bin/sh
# Durchsuche volumeUSB1
if [ -f /volumeUSB1/usbshare/rsync.sh ]; then
sh /volumeUSB1/usbshare/rsync.sh
fi
# Durchsuche volumeUSB2
if [ -f /volumeUSB2/usbshare/rsync.sh ]; then
sh /volumeUSB2/usbshare/rsync.sh
fi
# Durchsuche volumeUSB3
if [ -f /volumeUSB3/usbshare/rsync.sh ]; then
sh /volumeUSB3/usbshare/rsync.sh
fi
# Durchsuche volumeSATA
if [ -f /volumeSATA/usbshare/rsync.sh ]; then
sh /volumeSATA/usbshare/rsync.sh
fi
#!/bin/sh
#Wichtiger Hinweis
#-------------------------------------------------------------------------
# Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet|
# wurde so kann eine Fehlfunktion und demzufolge ein möglicher |
# Datenverlust nicht ausgeschlossen werden. |
# Daher nutzt ihr dieses Script auf eigene Gefahr. |
# Aus diesem Grunde solltet ihr dieses System erstmal mit unwichtigen |
# Testdaten auf seine Funktion hin testen, bevor ihr das ganze |
# "produktiv" einsetzt. |
#-------------------------------------------------------------------------
#Kurze Funktionsbeschreibung "rsync.sh"
#-------------------------------------------------------------------------
# Das vorliegende Script, welches den Dateinamen "rsync.sh" tragen muss, |
# wird auf dem externen Datenträger in dessen Wurzelverzeichnis abgelegt,|
# auf dem die Datensicherung stattfinden soll. Entsprechend muß dieses |
# Script im Vorfeld den Begebenheiten angepasst, werden indem man |
# E-Mail-Adresse, Backupquellen und das Ziel definiert. |
# |
# Nachdem das Script "search-rsync.sh" dieses Script gefunden und |
# ausgeführt hat, wird der eigentlich Backupvorgang initiert. |
# |
# Im folgenden wird erstmal Anhand einer Abfrage erkannt, an welchen |
# USB- oder SATA Anschluss sich der externe Datenträger befindet um die |
# Pfade im Script entsrechend anpassen zu können. Der so ermittelte |
# Laufwerkspfad wird dem Ziel-Ordner vorangestellt um so das Backup |
# an der richtigen Stelle absetzen zu können. |
# |
# Das Backup selber synchronisiert die Quellen mit dem Ziel. Dabei werden|
# die Ornderpfade relativ, nach Volume angelegt. Gelöschte Dateien |
# in der Quelle werden im Ziel in den Ordner @Recycle verschoben um |
# einen möglichen Datenverlust vorzubeugen. Systemorder wie z.B. /@eaDIR,|
# /#recycle etc. werden von der Synchronisation ausgeschlossen. |
# |
# Des weiteren wird ein Protokoll in den Ordner @Logfiles geschrieben |
# welches man sich bei Bedarf auch per E-Mail zusenden lassen kann. |
# Außerdem erhält die DSM-Administratorengruppe über das |
# Benachrichtigungssystems des DSM eine Meldung über Erfolg oder |
# Misserfolg des Vorganges inkl. Fehler-Code. Der Fehlercode enstammt |
# hierbei den exit-codes von rsync und kann bei Bedarf ergooglet werden. |
# ------------------------------------------------------------------------
# E-Mail Adresse
# ------------------------------------------------------------------------
# Bei Angabe einer E-Mail-Adresse, die identisch mit der bereits im DSM |
# unter Hauptmenue/Systemsteuerung/Benachrichtigung hinterlegten |
# E-Mail-Adresse sein muß, wird einem das Sicherungsprotokoll zugestellt |
# Möchte man dies nicht, kann das Feld mit # auskommentiert werden. Es |
# wird dann nur ein Sicherungsprotokoll unter @Logfiles im Ziel abgelegt.|
# ------------------------------------------------------------------------
EMAIL="you@mail.de"
# Backup - Quellen
# ------------------------------------------------------------------------
# Hier können beliebige sowie unterschiedliche Backupquellen von der DS |
# eingetragen werden. Zu beachten ist, das immer der vollständige Pfad |
# unter Angabe des entsprechenden Volume anzugeben ist. Weiterhin ist auf|
# die Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle.|
# ------------------------------------------------------------------------
SOURCES="/volume1/Musik/Alben
/volume2/Fotos
/volume3/Videos/Serien
/volume1/homes/admin"
# Backup - Ziel
# ------------------------------------------------------------------------
# Als Backupziel bedarf es nur der Angabe des Ordners, worin das Backup |
# abgelegt werden soll. Das Script erkennt automatisch an welchen USB- |
# oder SATA-Port sich der externe Datenträger befindet (volumeUSB1, |
# volumeUSB2, volumeUSB3 oder volumeSATA) und fügt die Ordnerstruktur |
# dementsprechnend dem Backupziel hinzu. |
# ------------------------------------------------------------------------
DESTINATION="/Backup_DS"
# ------------------------------------------------------------------------
# Ab hier bitte nichts mehr ändern |
# ------------------------------------------------------------------------
# Umgebungsvariablen definieren
SSMTP="/usr/bin/ssmtp"
RSYNC="/usr/syno/bin/rsync"
MKDIR="/bin/mkdir"
FIND="/usr/bin/find"
ECHO="/bin/echo"
DATE="/bin/date +%Y-%m-%d_%H%M"
TIMESTAMP="/bin/date +%d.%m.%Y_%H:%M:%S"
SYNODSMNOTIFY="/usr/syno/bin/synodsmnotify"
# Angeschlossenes USB-Laufwerk lokalisieren und Ziel definieren (DSM 5)
if $FIND /volumeUSB1/usbshare/rsync.sh; then
$MKDIR -p /volumeUSB1/usbshare$DESTINATION
TARGET="/volumeUSB1/usbshare$DESTINATION"
fi
if $FIND /volumeUSB2/usbshare/rsync.sh; then
$MKDIR -p /volumeUSB2/usbshare$DESTINATION
TARGET="/volumeUSB2/usbshare$DESTINATION"
fi
if $FIND /volumeUSB3/usbshare/rsync.sh; then
$MKDIR -p /volumeUSB3/usbshare$DESTINATION
TARGET="/volumeUSB3/usbshare$DESTINATION"
fi
if $FIND /volumeSATA/usbshare/rsync.sh; then
$MKDIR -p /volumeSATA/satashare$DESTINATION
TARGET="/volumeSATA/satashare$DESTINATION"
fi
# Ordner und Datei für das Protokoll anlegen und bei Bedarf die E-Mail-Kopfdaten generieren
$MKDIR -p $TARGET/@Logfiles
LOG="$TARGET/@Logfiles/`$DATE`_Sicherungsprotokoll.log"
if [ "$EMAIL" ]; then
$ECHO "To: $EMAIL" > $LOG
$ECHO "From: $EMAIL" >> $LOG
$ECHO "Subject: Sicherungsprotokoll vom `$TIMESTAMP` Uhr" >> $LOG
$ECHO "" >> $LOG
else
$ECHO "Sicherungsprotokoll vom `$TIMESTAMP` Uhr" > $LOG
fi
# rsync - Befehl ausführen sowie protokollieren
for SHARE in $SOURCES; do
$ECHO "" >> $LOG
$ECHO "--> Zusammenfassung: $SHARE nach $TARGET" >> $LOG
$RSYNC -ahR "$SHARE" --stats --log-file-format="%i %o %f" --exclude=/@eaDir/*** --exclude=/#recycle/*** --exclude=/#snapshot/*** --exclude=/.DS_Store/*** --delete --backup --backup-dir=@Recycle/`$DATE` "$TARGET" >> $LOG 2>&1
done
# rsync - Ausführung auswerten und Ergebnis anhand der "exit codes" ausgeben
if [ $? -eq 0 ]; then
$ECHO "" >> $LOG
$ECHO "rsync-Datensicherung erfolgreich abgeschlossen $TARGET" >> $LOG
DSMNOTIFY="rsync-Datensicherung erfolgreich abgeschlossen $TARGET"
elif [ $? -ne 0 ]; then
$ECHO "" >> $LOG
$ECHO "rsync-Datensicherung fehlgeschlagen - Fehler $? $TARGET" >> $LOG
DSMNOTIFY="rsync-Datensicherung fehlgeschlagen - Fehler $? $TARGET"
fi
# Benachrichtigung an die DSM-Administratorengruppe senden
$SYNODSMNOTIFY @administrators "rsync-Script" "$DSMNOTIFY"
# Sicherungsprotokoll als E-Mail versenden (oder als Datei im Backupziel einsehen)
if [ "$EMAIL" ]; then
$SSMTP $EMAIL < $LOG
fi
#!/bin/sh
# Wichtiger Hinweis
# -------------------------------------------------------------------------
# Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet|
# wurde so kann eine Fehlfunktion und demzufolge ein möglicher |
# Datenverlust nicht ausgeschlossen werden. |
# Daher nutzt ihr dieses Script auf eigene Gefahr. |
# Aus diesem Grunde solltet ihr dieses System erstmal mit unwichtigen |
# Testdaten auf seine Funktion hin testen, bevor ihr das ganze |
# "produktiv" einsetzt. |
# -------------------------------------------------------------------------
# Kurze Funktionsbeschreibung "rsync.sh"
# -------------------------------------------------------------------------
# Das vorliegende Script, welches den Dateinamen "rsync.sh" tragen muss, |
# wird auf dem externen Datenträger in dessen Wurzelverzeichnis abgelegt,|
# auf dem die Datensicherung stattfinden soll. Entsprechend muß dieses |
# Script im Vorfeld den Begebenheiten angepasst, werden indem man |
# E-Mail-Adresse, Backupquellen und das Ziel definiert. |
# |
# Nachdem das Script "search-rsync.sh" dieses Script gefunden und |
# ausgeführt hat, wird der eigentlich Backupvorgang initiert. |
# |
# Im folgenden wird erstmal Anhand einer Abfrage erkannt, an welchen |
# USB- oder SATA Anschluss sich der externe Datenträger befindet um die |
# Pfade im Script entsrechend anpassen zu können. Der so ermittelte |
# Laufwerkspfad wird dem Ziel-Ordner vorangestellt um so das Backup |
# an der richtigen Stelle absetzen zu können. |
# |
# Das Backup selber synchronisiert die Quellen mit dem Ziel. Dabei werden|
# die Ornderpfade relativ, nach Volume angelegt. Gelöschte Dateien |
# in der Quelle werden im Ziel in den Ordner @Recycle verschoben um |
# einen möglichen Datenverlust vorzubeugen. Systemorder wie z.B. /@eaDIR,|
# /#recycle etc. werden von der Synchronisation ausgeschlossen. |
# |
# Des weiteren wird ein Protokoll in den Ordner @Logfiles geschrieben |
# welches man sich bei Bedarf auch per E-Mail zusenden lassen kann. |
# Außerdem erhält die DSM-Administratorengruppe über das |
# Benachrichtigungssystems des DSM eine Meldung über Erfolg oder |
# Misserfolg des Vorganges inkl. Fehler-Code. Der Fehlercode enstammt |
# hierbei den exit-codes von rsync und kann bei Bedarf ergooglet werden. |
# ------------------------------------------------------------------------
# E-Mail Adresse
# ------------------------------------------------------------------------
# Bei Angabe einer E-Mail-Adresse, die identisch mit der bereits im DSM |
# unter Hauptmenue/Systemsteuerung/Benachrichtigung hinterlegten |
# E-Mail-Adresse sein muß, wird einem das Sicherungsprotokoll zugestellt |
# Möchte man dies nicht, kann das Feld mit # auskommentiert werden. Es |
# wird dann nur ein Sicherungsprotokoll unter @Logfiles im Ziel abgelegt.|
# ------------------------------------------------------------------------
EMAIL="you@mail.de"
# Backup - Quellen
# ------------------------------------------------------------------------
# Hier können beliebige sowie unterschiedliche Backupquellen von der DS |
# eingetragen werden. Zu beachten ist, das immer der vollständige Pfad |
# unter Angabe des entsprechenden Volume anzugeben ist. Weiterhin ist auf|
# die Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle.|
# ------------------------------------------------------------------------
SOURCES="/volume1/Musik/Alben
/volume2/Fotos
/volume3/Videos/Serien
/volume1/homes/admin"
# Backup - Ziel
# ------------------------------------------------------------------------
# Als Backupziel bedarf es nur der Angabe des Ordners, worin das Backup |
# abgelegt werden soll. Das Script erkennt automatisch an welchen USB- |
# oder SATA-Port sich der externe Datenträger befindet (volumeUSB1, |
# volumeUSB2, volumeUSB3 oder volumeSATA) und fügt die Ordnerstruktur |
# dementsprechnend dem Backupziel hinzu. |
# ------------------------------------------------------------------------
DESTINATION="/Backup_DS"
# ------------------------------------------------------------------------
# Ab hier bitte nichts mehr ändern |
# ------------------------------------------------------------------------
# Umgebungsvariablen definieren
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin
DATEOPT="+%Y-%m-%d_%H%M"
TIMESTAMPOPT="+%d.%m.%Y_%H:%M:%S"
# Angeschlossenes USB-Laufwerk lokalisieren und Ziel definieren
if find /volumeUSB1/usbshare/rsync.sh; then
mkdir -p /volumeUSB1/usbshare$DESTINATION
TARGET="/volumeUSB1/usbshare$DESTINATION"
fi
if find /volumeUSB2/usbshare/rsync.sh; then
mkdir -p /volumeUSB2/usbshare$DESTINATION
TARGET="/volumeUSB2/usbshare$DESTINATION"
fi
if find /volumeUSB3/usbshare/rsync.sh; then
mkdir -p /volumeUSB3/usbshare$DESTINATION
TARGET="/volumeUSB3/usbshare$DESTINATION"
fi
if find /volumeSATA/usbshare/rsync.sh; then
mkdir -p /volumeSATA/satashare$DESTINATION
TARGET="/volumeSATA/satashare$DESTINATION"
fi
# Ordner und Datei für das Protokoll anlegen und bei Bedarf die E-Mail-Kopfdaten generieren
mkdir -p $TARGET/@Logfiles
LOG="$TARGET/@Logfiles/`date $DATEOPT`_Sicherungsprotokoll.log"
if [ "$EMAIL" ]; then
echo "To: $EMAIL" > $LOG
echo "From: $EMAIL" >> $LOG
echo "Subject: Sicherungsprotokoll vom `date $TIMESTAMPOPT` Uhr" >> $LOG
echo "" >> $LOG
else
echo "Sicherungsprotokoll vom `date $TIMESTAMPOPT` Uhr" > $LOG
fi
# rsync - Befehl ausführen sowie protokollieren
for SHARE in $SOURCES; do
echo "" >> $LOG
echo "--> Zusammenfassung: $SHARE nach $TARGET" >> $LOG
rsync -ahR "$SHARE" --stats --log-file-format="%i %o %f" --exclude=/@eaDir/*** --exclude=/#recycle/*** --exclude=/#snapshot/*** --exclude=/.DS_Store/*** --delete --backup --backup-dir=@Recycle/`date $DATEOPT` "$TARGET" >> $LOG 2>&1
done
# rsync - Ausführung auswerten und Ergebnis anhand der "exit codes" ausgeben
if [ $? -eq 0 ]; then
echo "" >> $LOG
echo "rsync-Datensicherung erfolgreich abgeschlossen $TARGET" >> $LOG
DSMNOTIFY="rsync-Datensicherung erfolgreich abgeschlossen $TARGET"
elif [ $? -ne 0 ]; then
echo "" >> $LOG
echo "rsync-Datensicherung fehlgeschlagen - Fehler $? $TARGET" >> $LOG
DSMNOTIFY="rsync-Datensicherung fehlgeschlagen - Fehler $? $TARGET"
fi
# Benachrichtigung an die DSM-Administratorengruppe senden
synodsmnotify @administrators "rsync-Script" "$DSMNOTIFY"
# Sicherungsprotokoll als E-Mail versenden (oder als Datei im Backupziel einsehen)
if [ "$EMAIL" ]; then
ssmtp $EMAIL < $LOG
fi
Das Umstellen des Scriptes nach der von dir vorgeschlagenen Methode hätte aber zur Folge, das dieses nur noch ab DSM 6 läuft. Ich hab aus Kompatibilitätsgründen wieder auf das ursprüngliche Vorgehen zurückgeswitcht. Nicht desto trotz wäre es klasse, wenn du das heute Abend mal testen könntest.
Tommes
Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.
Als Dankeschön schalten wir deinen Account werbefrei.