- Mitglied seit
- 28. Feb 2017
- Beiträge
- 13
- Punkte für Reaktionen
- 0
- Punkte
- 0
hi,
ich benutzte meine DS2415+ unteranderem als Lagerort für Backups von anderen NAS Systemen (z.B. Qnaps)
Auf den Qnaps läuft ein rsync server.
Der Rsync lässt nur die IP der Synology zu....
Mein Plan:
tag.0 bis tag.6 sind btrfs subvols, diese werden rotiert.
Gleiches mit woche.0 bis woche.3 und in meinem fall monat.0 bis monat.1
Die rotation würde ich mittels mv (umbenenen) erreichen.
rsync sync würde immer auf $backupname.0 laufen....
Beim Wochen und Monat Backup wird ein snapshot von tag.0 auf woche.0 oder monat.0 erstellt.
Spricht etwas dageben manuell subvols und snapshots zu erstellen?
Stört das DSM von synology?
PS.: Wenn das script fertig ist, dann würde ich es hier posten
Danke!
//edit: soweit bin ich mit dem script gekommen (quick and dirty)
Das Script wird über die Aufgabenverwaltung im DSM gestartet:
ich benutzte meine DS2415+ unteranderem als Lagerort für Backups von anderen NAS Systemen (z.B. Qnaps)
Auf den Qnaps läuft ein rsync server.
Der Rsync lässt nur die IP der Synology zu....
Mein Plan:
tag.0 bis tag.6 sind btrfs subvols, diese werden rotiert.
Gleiches mit woche.0 bis woche.3 und in meinem fall monat.0 bis monat.1
Die rotation würde ich mittels mv (umbenenen) erreichen.
rsync sync würde immer auf $backupname.0 laufen....
Beim Wochen und Monat Backup wird ein snapshot von tag.0 auf woche.0 oder monat.0 erstellt.
Spricht etwas dageben manuell subvols und snapshots zu erstellen?
Stört das DSM von synology?
PS.: Wenn das script fertig ist, dann würde ich es hier posten
Danke!
//edit: soweit bin ich mit dem script gekommen (quick and dirty)
Das Script wird über die Aufgabenverwaltung im DSM gestartet:
Rich (BBCode):
tägliches backup : /volume1/backups/backup_rsync_btrfs.sh --quell-dir dateien --quell-host HostToBackup --ziel-dir /volume1/backups/HostToBackup/tag --backup-name tag --anzahl 7
wöchentliches backup: /volume1/backups/backup_rsync_btrfs.sh --quell-dir dateien --quell-host HostToBackup --ziel-dir /volume1/backups/HostToBackup/woche --backup-name woche --anzahl 4 --link-dir /volume1/backups/HostToBackup/tag/tag.0
monatliches backup: /volume1/backups/backup_rsync_btrfs.sh --quell-dir dateien --quell-host HostToBackup --ziel-dir /volume1/backups/HostToBackup/monat --backup-name monat --anzahl 2 --link-dir /volume1/backups/HostToBackup/tag/tag.0
Rich (BBCode):
#! /bin/bash
quelldir=""
quellhost=""
zieldir=""
backupname=""
anzahl=""
linkdir=""
username=""
password=""
while [ ! -z "$1" ]; do
case $1 in
--quell-dir)
quelldir=$2
shift
;;
--quell-host)
quellhost=$2
shift
;;
--ziel-dir)
zieldir=$2
shift
;;
--backup-name)
backupname=$2
shift
;;
--anzahl)
anzahl=$2
shift
;;
--link-dir)
linkdir=$2
shift
;;
*)
echo "$1 $2 ist kein gueltiger Parameter!"
shift
;;
esac
shift
done
mailsplit=$(cat /volume1/backups/mails.txt | tr ";" "\n")
#Wenn basedir nicht existiert, dann subvolume anlegen
if [ ! -d "$zieldir" ]; then
basedir=$(dirname "$zieldir")
if [ ! -d "$basedir" ]; then
echo "btrfs subvol create "$basedir""
btrfs subvol create "$basedir"
sleep 2
fi
fi
logdir=$zieldir/logs
logfile="$logdir/$(date '+%Y-%m-%d_%H_%M_%S').log"
#Wenn logdir nicht angelegt werden kann, dann exit
if [ ! -d "$logdir" ]; then
echo "mkdir -p $logdir"
if [ `mkdir -p "$logdir"` ]; then
echo "Kann Logverzeichnis nicht anlegen $zieldir nicht anlegen. "
exit
fi
fi
#Wenn zieldir nicht angelegt werden kann, dann exit
if [ ! -d "$zieldir" ]; then
echo "btrfs subvol create "$zieldir""
btrfs subvol create "$zieldir"
sleep 2
fi
#Jedes Snapshot durchgehen
item=$(( anzahl - 1 ))
while [ $item -ge 0 ]; do
#Backupsubvols anlegen, wenn sie nicht existieren
if [ ! -d "$zieldir/$backupname.$item" ]; then
echo "btrfs subvol create "$zieldir/$backupname.$item""
btrfs subvol create "$zieldir/$backupname.$item"
sleep 2
fi
#Wenn das letzte erreicht ist, subvol löschen
if [ $item -eq $(( anzahl - 1 )) ]; then
echo "btrfs subvol del "$zieldir/$backupname.$item""
btrfs subvol del "$zieldir/$backupname.$item"
sleep 2
item=$(( item - 1 ))
continue
fi
#Wenn das neueste erreicht ist (backup.0) dann nach oben verschieben (backup.1)
if [ $item -eq 0 ]; then
echo "$zieldir/$backupname.$item --> $zieldir/$backupname.$(($item + 1))"
mv "$zieldir/$backupname.$item" "$zieldir/$backupname.$(($item + 1))"
sleep 2
item=$(( item - 1 ))
continue
fi
#Die normalen Snapshots rotieren lassen
echo "$zieldir/$backupname.$item --> $zieldir/$backupname.$(($item + 1))"
mv "$zieldir/$backupname.$item" "$zieldir/$backupname.$(($item + 1))"
sleep 2
#Nächstes BackupItem
item=$(( item - 1 ))
done
#Wenn linkdir Parameter gesetzt wurde (für wochen und monat backups), dann $linkdir subvol nach $zieldir/$backupname.0 via snapshot kopieren --> fertig, sonst rsync für $zieldir/$backupname.0 verwenden (tag backup)
if [ $linkdir ]; then
#Wenn linkdir existiert, dann $linkdir als $backupname.1 nutzen ohne rsync
if [ -d "$linkdir" ]; then
#$linkdir (tag.0) auf $backupname.0 via btrfs subvol snapshot kopieren
echo "btrfs subvol ($linkdir) nach $zieldir/$backupname.0 via snapshot kopieren"
echo "btrfs subvol snap "$linkdir" "$zieldir/$backupname.0""
btrfs subvol snap "$linkdir" "$zieldir/$backupname.0"
sleep 2
else
#Wenn linkdir nicht existiert, dann $zieldir/$backupname.1 nach $zieldir/$backupname.0 via btrfs snapshot kopieren
echo "btrfs subvol snap "$zieldir/$backupname.1" "$zieldir/$backupname.0""
btrfs subvol snap "$zieldir/$backupname.1" "$zieldir/$backupname.0"
sleep 2
#Rsync für tag backup auf $zieldir/$backupname.0
echo 'rsync -av --itemize-changes --stats --progress --human-readable --human-readable --no-owner --no-group --chmod=ugo=rwx --log-file-format="%n --> %b bytes" --log-file=$logfile --delete $quellhost::$quelldir $zieldir/$backupname.0'
rsync -av --itemize-changes --stats --progress --human-readable --human-readable --no-owner --no-group --chmod=ugo=rwx --log-file-format="%n --> %b bytes" --log-file=$logfile --delete $quellhost::$quelldir $zieldir/$backupname.0
#Rsync Rueckgabewert pruefen
if ! [ $? = 24 -o $? = 0 ] ; then
for mailadresse in $mailsplit
do
ssmtp $mailadresse <<-EOF
From: $HOSTNAME@abc.de
Subject: RsyncSicherung $quellhost $backupname fehlerhaft vom $(date '+%Y-%m-%d_%H_%M_%S')
$(tail -n 15 $logfile)
EOF
done
else
for mailadresse in $mailsplit
do
ssmtp $mailadresse <<-EOF
From: $HOSTNAME@abc.de
Subject: RsyncSicherung $quellhost $backupname fertig vom $(date '+%Y-%m-%d_%H_%M_%S')
$(tail -n 15 $logfile)
EOF
done
fi
fi
else
#Wenn linkdir nicht angegeben ist, dann $zieldir/$backupname.1 nach $zieldir/$backupname.0 via btrfs snapshot kopieren
echo "btrfs subvol snap "$zieldir/$backupname.1" "$zieldir/$backupname.0""
btrfs subvol snap "$zieldir/$backupname.1" "$zieldir/$backupname.0"
sleep 2
#Rsync für tag backup auf $zieldir/$backupname.0
echo 'rsync -av --itemize-changes --stats --progress --human-readable --human-readable --no-owner --no-group --chmod=ugo=rwx --log-file-format="%n --> %b bytes" --log-file=$logfile --delete $quellhost::$quelldir $zieldir/$backupname.0'
rsync -av --itemize-changes --stats --progress --human-readable --human-readable --no-owner --no-group --chmod=ugo=rwx --log-file-format="%n --> %b bytes" --log-file=$logfile --delete $quellhost::$quelldir $zieldir/$backupname.0
#Rsync Rueckgabewert pruefen
if ! [ $? = 24 -o $? = 0 ] ; then
for mailadresse in $mailsplit
do
ssmtp $mailadresse <<-EOF
From: $HOSTNAME@abc.de
Subject: RsyncSicherung $quellhost $backupname fehlerhaft vom $(date '+%Y-%m-%d_%H_%M_%S')
$(tail -n 15 $logfile)
EOF
done
else
for mailadresse in $mailsplit
do
ssmtp $mailadresse <<-EOF
From: $HOSTNAME@abc-bau.de
Subject: RsyncSicherung $quellhost $backupname fertig vom $(date '+%Y-%m-%d_%H_%M_%S')
$(tail -n 15 $logfile)
EOF
done
fi
fi
Zuletzt bearbeitet: