- Mitglied seit
- 26. Okt 2009
- Beiträge
- 9.088
- Punkte für Reaktionen
- 1.072
- Punkte
- 314
Hallo zusammen!
Da Synology im Zuge von DSM 6.0 [Beta 1 & 2] die dateibasierte Datensicherung bis auf weiteres aus dem System entfernt hat, möchte ich mal ein kleines Brainstorming ins Leben rufen um diesen Missstand mit einem "kleinen" rsync-Script zu begegnen.
Mir ist bewusst, das ich hier nicht das Rad neu erfunden werde, einige von euch werden sich vielleicht sogar Stirnrunzelnd abwenden oder das ganze müde belächeln. Andere werden aber vielleicht sagen: Toll, der Ansatz gefällt mir aber ich habe da noch die ein oder andere Idee wie man es besser/anders/einfacher/komfortabler machen kann und genau diese Leute suche ich hier.
Denn ich bin absolut kein Script-Profi und daher auf eure Hilfe angewiesen. Wenn ihr also Lust habt mein nachfolgendes Script mal zu testen und zu bewerten, es zu verbessern und zu verfeinern, dann würde ich mich wirklich freuen. Letzenendes soll etwas gutes für uns alle dabei herauskommen, wo immer auch die Reise hin gehen wird. Aber genug geredet...
Das Script:
Das Script selber soll nach Möglichkeit über den Aufgabenplaner des DSM ausgeführt werden können. Ob automatisiert oder Manuell bleibt erstmal jedem selbst überlassen. Im Grunde tut das Script nichts anderes als mehrere ausgewählte "gemeinsame Ordner" eines bestimmten internen Volume per rsync in das gewünschte Backupziel (intern oder auf USB- oder SATA-Datenträger) zu verfrachten. Hat man im DSM unter Systemsteuerung/Benachrichtigung eine E-Mail-Adresse konfiguriert, so kann man durch Angabe dieser E-Mail im Script, sich ein Protokoll per Mail zusenden lassen. Kommentiert man das E-Mail Feld aus, dann wird nur eine Protokolldatei im Sicherungsziel abgelegt. Über den Aufau und Inhalt des Protokolls lässt sich natürlich streiten, von daher wäre das gleich mal ein Punkt um Verbesserungen vorzustellen.
Gelöschte Dateien in der Quelle werden im Ziel in einer Art "Mülleimer" gesammelt, also nicht gleich gelöscht. Über Sinn und Unsinn dieses Vorgehens kann man natürlich diskutieren.
Ich habe SSH erstmal bewusst weggelassen, da hier auch die Konfiguration von RSA-Keys etc. erforderlich wäre... und es soll ja einfach bleiben. Was zu überlegen wäre ist, ob man optional ein differntielles Backup anbieten sollte. Ich stoße mich da aber ein wenig mit dem anlegen von Hardlinks, was mir immer noch ein wenig suspekt ist.
Fangen wir an und ich würde mich wirklich über eure Meinungen, Mithilfe und Ideen freuen.
Ach ja, bevor ich es vergesse. Da ich ja auch grade erst dem Tal der Ahnungslosen entkommen bin, noch der Hinweis:
Ihr verwendet das Script auf eigene Gefahr. Um möglichen Datenverlust vorzubeugen, arbeitet mir unwichtigen Testaten oder habt ein Backup im Schrank
Tommes
Da Synology im Zuge von DSM 6.0 [Beta 1 & 2] die dateibasierte Datensicherung bis auf weiteres aus dem System entfernt hat, möchte ich mal ein kleines Brainstorming ins Leben rufen um diesen Missstand mit einem "kleinen" rsync-Script zu begegnen.
Mir ist bewusst, das ich hier nicht das Rad neu erfunden werde, einige von euch werden sich vielleicht sogar Stirnrunzelnd abwenden oder das ganze müde belächeln. Andere werden aber vielleicht sagen: Toll, der Ansatz gefällt mir aber ich habe da noch die ein oder andere Idee wie man es besser/anders/einfacher/komfortabler machen kann und genau diese Leute suche ich hier.
Denn ich bin absolut kein Script-Profi und daher auf eure Hilfe angewiesen. Wenn ihr also Lust habt mein nachfolgendes Script mal zu testen und zu bewerten, es zu verbessern und zu verfeinern, dann würde ich mich wirklich freuen. Letzenendes soll etwas gutes für uns alle dabei herauskommen, wo immer auch die Reise hin gehen wird. Aber genug geredet...
Das Script:
Das Script selber soll nach Möglichkeit über den Aufgabenplaner des DSM ausgeführt werden können. Ob automatisiert oder Manuell bleibt erstmal jedem selbst überlassen. Im Grunde tut das Script nichts anderes als mehrere ausgewählte "gemeinsame Ordner" eines bestimmten internen Volume per rsync in das gewünschte Backupziel (intern oder auf USB- oder SATA-Datenträger) zu verfrachten. Hat man im DSM unter Systemsteuerung/Benachrichtigung eine E-Mail-Adresse konfiguriert, so kann man durch Angabe dieser E-Mail im Script, sich ein Protokoll per Mail zusenden lassen. Kommentiert man das E-Mail Feld aus, dann wird nur eine Protokolldatei im Sicherungsziel abgelegt. Über den Aufau und Inhalt des Protokolls lässt sich natürlich streiten, von daher wäre das gleich mal ein Punkt um Verbesserungen vorzustellen.
Gelöschte Dateien in der Quelle werden im Ziel in einer Art "Mülleimer" gesammelt, also nicht gleich gelöscht. Über Sinn und Unsinn dieses Vorgehens kann man natürlich diskutieren.
Ich habe SSH erstmal bewusst weggelassen, da hier auch die Konfiguration von RSA-Keys etc. erforderlich wäre... und es soll ja einfach bleiben. Was zu überlegen wäre ist, ob man optional ein differntielles Backup anbieten sollte. Ich stoße mich da aber ein wenig mit dem anlegen von Hardlinks, was mir immer noch ein wenig suspekt ist.
Fangen wir an und ich würde mich wirklich über eure Meinungen, Mithilfe und Ideen freuen.
Ach ja, bevor ich es vergesse. Da ich ja auch grade erst dem Tal der Ahnungslosen entkommen bin, noch der Hinweis:
Ihr verwendet das Script auf eigene Gefahr. Um möglichen Datenverlust vorzubeugen, arbeitet mir unwichtigen Testaten oder habt ein Backup im Schrank
PHP:
#!/bin/sh
# E-Mail Adresse
# --------------------------------------------------------------
# Die E-Mail-Adresse muß identisch mit der im DSM unter
# Systemsteuerung/Benachrichtigung konfigurierten sein.
EMAIL="dein.name@mail.tld"
# Backup - Quelle
# --------------------------------------------------------------
VOLUME="/volume1"
SHAREDFOLDER=(/photo
/video/Spielfilme
/music/Alben/Deutsch )
# Backup - Ziel
# --------------------------------------------------------------
#TARGET="/volume1/Backup"
TARGET="/volumeUSB1/usbshare/Backup"
# --------------------------------------------------------------
# Ab hier bitte nichts mehr ändern
# --------------------------------------------------------------
RSYNCCONF=(--stats --log-file-format="%i %o %f" --delete --backup --backup-dir=`$DATE`_Recycle)
RSYNC="/bin/rsync"
SSH="/bin/ssh"
SSMTP="/usr/bin/ssmtp"
ECHO="/bin/echo"
DATE="/bin/date +%Y-%m-%d";
TIMESTAMP="/bin/date +%d.%m.%Y_%H:%M:%S";
LOGFILE="/`$DATE`_Sicherungsprotokoll.log"
if [ "$EMAIL" ]; then
# Sicherungsprotokoll im Backup-Ziel als Datei speichern und
# daraus eine E-Mail generieren...
LOG="$TARGET$LOGFILE"
$ECHO "To: $EMAIL" > $LOG
$ECHO "From: $EMAIL" >> $LOG
$ECHO "Subject: Sicherungsprotokoll vom `$TIMESTAMP` Uhr" >> $LOG
$ECHO "" >> $LOG
else
# Sicherungsprotokoll im Backup-Ziel als Datei speichern
LOG="$TARGET$LOGFILE"
$ECHO "Sicherungsprotokoll vom `$TIMESTAMP` Uhr" > $LOG
fi
for SHARE in "${SHAREDFOLDER[@]}"
do
$ECHO "" >> $LOG
$ECHO "------------------------------------------------------------------------------------" >> $LOG
$ECHO "Statusbericht für: $VOLUME$SHARE" >> $LOG
$ECHO "------------------------------------------------------------------------------------" >> $LOG
$RSYNC -ah "$VOLUME$SHARE" "${RSYNCCONF[@]}" "$TARGET" >> $LOG 2>&1
done
if [ "$EMAIL" ]; then
# Sicherungsprotokoll als E-Mail versenden...
$SSMTP $EMAIL < $LOG
fi
Tommes
Zuletzt bearbeitet: