Linux Debian Backup auf Synology NAS?
Hallo zusammen.
Und zwar würde ich gerne einen Debian Server auf ein NAS das via dyndns erreichbar ist sichern.
Dieses soll immer nachts passieren.
Meine Frage an dieser Stelle wäre jetzt, was ist Sinnvoller.
1) Backup auf dem Server erstellen lassen und anschließend via ssh auf das NAS zu schieben
2) NAS mounten und dort das Backup draufmachen
Da ich mich mit den Scripten nicht so gut auskenne, wäre jetzt meine Frage ob man das Script was ich gefunden habe so anpassen könnte,
Das ich auf dem NAS folgende Ordner habe: daily, weekly, monthly. Am liebsten wäre mir eine Rotatefunktion das immer nach einem Wöchentlichen Backup die täglichen geleert werden und nach dem monatlichen, die wöchentlichen.
Vielleicht kennt auch jemand eine bessere Lösung.
#!/bin/bash
LANG=en_EN
BACKUPDIR=/var/opt/backup
SCRIPTDIR=/opt/backup
BACKUPUSER=USER
BACKUPUSERPASSWD=PASSWORD
DAY=`date +"%A"`
SUNDAY=$[(`date +"%e"` - 1) / 7 + 1]
MONTH=`date +"%B"`
EMAIL="system@DOMAIN.TLD"
MYHOSTNAME=$(/bin/hostname -f)
MYDATE=$(/bin/date)
SYSTEMLOG=/var/log/backup-system.log
RET=0
function getip()
{
/sbin/ifconfig eth0 | grep "inet addr" | cut -d':' -f 2 | cut -d' ' -f 1
}
function run()
{
local RET
echo "<<< ---------------------------------------------" >> /tmp/backup.log.$$
echo "<<< $@" >> /tmp/backup.log.$$
echo "<<< ---------------------------------------------" >> /tmp/backup.log.$$
echo >> /tmp/backup.log.$$
($* 2>&1) >> /tmp/backup.log.$$
RET=$?
echo >> /tmp/backup.log.$$
echo ">>> ---------------------------------------------" >> /tmp/backup.log.$$
echo ">>> Exit status: $RET" >> /tmp/backup.log.$$
echo ">>> ---------------------------------------------" >> /tmp/backup.log.$$
echo >> /tmp/backup.log.$$
return $RET
}
function INFO_HEADER()
{
local MYIP
MYIP=$(getip)
echo "============================================="
echo " Hostname: $MYHOSTNAME"
echo " IP: $MYIP"
echo " Date: $MYDATE"
echo -n " Version: Debian "
if [ -f /etc/debian_version ]; then
cat /etc/debian_version
fi
echo "============================================="
}
INFO_HEADER >> /tmp/backup.log.$$
if test $DAY = 'Sunday'
then
DAY=$DAY-$SUNDAY
if test $SUNDAY = 1
then
DAY=$DAY-$MONTH
fi
fi
### Backup-Space mounten
mount -t nfs -o nfsvers=3,soft,intr 192.168.x.x:/volume1/servername $BACKUPDIR
### MySQL-Datenbanken sichern
DATABASES=`mysql -u$BACKUPUSER -p$BACKUPUSERPASSWD -e"show databases"`
for DATABASE in $DATABASES
do
if [ $DATABASE != "Database" ]; then
run `mysqldump -u$BACKUPUSER -p$BACKUPUSERPASSWD $DATABASE > $BACKUPDIR/mysql/$DATABASE.sql`
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
fi
done
run tar -cf $BACKUPDIR/mysql/mysql-$DAY.tar $BACKUPDIR/mysql/*.sql
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/mysql/*.sql
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/mysql/mysql-$DAY.tar.7z $BACKUPDIR/mysql/mysql-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/mysql/mysql-$DAY.tar
### WWW-Dateien sichern
run tar -cf $BACKUPDIR/web/www-$DAY.tar /var/www
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/web/www-$DAY.tar.7z $BACKUPDIR/web/www-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/web/www-$DAY.tar
### etc-Verzeichnis sichern
run tar -cf $BACKUPDIR/system/etc-$DAY.tar /etc
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/system/etc-$DAY.tar.7z $BACKUPDIR/system/etc-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/system/etc-$DAY.tar
### opt-Verzeichnis sichern
run tar -cf $BACKUPDIR/system/opt-$DAY.tar /opt
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/system/opt-$DAY.tar.7z $BACKUPDIR/system/opt-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/system/opt-$DAY.tar
### home-Verzeichnis sichern
run tar -cf $BACKUPDIR/sonstige/home-$DAY.tar /home
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/sonstige/home-$DAY.tar.7z $BACKUPDIR/sonstige/home-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/sonstige/home-$DAY.tar
### sonstige Daten sichern
EXCLUDE=exclude-sonstige
run tar -cf $BACKUPDIR/sonstige/sonstige-$DAY.tar -X $SCRIPTDIR/$EXCLUDE /var/lib/munin /var/mail /var/spool/mail /var/spool/cron /var/spool/postfix /var/opt /var/log/apache2
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/sonstige/sonstige-$DAY.tar.7z $BACKUPDIR/sonstige/sonstige-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/sonstige/sonstige-$DAY.tar
ls -lah /var/opt/backup >> /tmp/backup.log.$$
### Backup-Space unmounten
umount $BACKUPDIR
for REC in $EMAIL; do
case $RET in
0)
mail -s "Backup report [success] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
1)
mail -s "Backup report [failure] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
2)
mail -s "Backup report [warning] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
*)
mail -s "Backup report [status unknown] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
esac
done
more /tmp/backup.log.$$ >> $SYSTEMLOG
rm -f /tmp/backup.log.$$
Und zwar würde ich gerne einen Debian Server auf ein NAS das via dyndns erreichbar ist sichern.
Dieses soll immer nachts passieren.
Meine Frage an dieser Stelle wäre jetzt, was ist Sinnvoller.
1) Backup auf dem Server erstellen lassen und anschließend via ssh auf das NAS zu schieben
2) NAS mounten und dort das Backup draufmachen
Da ich mich mit den Scripten nicht so gut auskenne, wäre jetzt meine Frage ob man das Script was ich gefunden habe so anpassen könnte,
Das ich auf dem NAS folgende Ordner habe: daily, weekly, monthly. Am liebsten wäre mir eine Rotatefunktion das immer nach einem Wöchentlichen Backup die täglichen geleert werden und nach dem monatlichen, die wöchentlichen.
Vielleicht kennt auch jemand eine bessere Lösung.
#!/bin/bash
LANG=en_EN
BACKUPDIR=/var/opt/backup
SCRIPTDIR=/opt/backup
BACKUPUSER=USER
BACKUPUSERPASSWD=PASSWORD
DAY=`date +"%A"`
SUNDAY=$[(`date +"%e"` - 1) / 7 + 1]
MONTH=`date +"%B"`
EMAIL="system@DOMAIN.TLD"
MYHOSTNAME=$(/bin/hostname -f)
MYDATE=$(/bin/date)
SYSTEMLOG=/var/log/backup-system.log
RET=0
function getip()
{
/sbin/ifconfig eth0 | grep "inet addr" | cut -d':' -f 2 | cut -d' ' -f 1
}
function run()
{
local RET
echo "<<< ---------------------------------------------" >> /tmp/backup.log.$$
echo "<<< $@" >> /tmp/backup.log.$$
echo "<<< ---------------------------------------------" >> /tmp/backup.log.$$
echo >> /tmp/backup.log.$$
($* 2>&1) >> /tmp/backup.log.$$
RET=$?
echo >> /tmp/backup.log.$$
echo ">>> ---------------------------------------------" >> /tmp/backup.log.$$
echo ">>> Exit status: $RET" >> /tmp/backup.log.$$
echo ">>> ---------------------------------------------" >> /tmp/backup.log.$$
echo >> /tmp/backup.log.$$
return $RET
}
function INFO_HEADER()
{
local MYIP
MYIP=$(getip)
echo "============================================="
echo " Hostname: $MYHOSTNAME"
echo " IP: $MYIP"
echo " Date: $MYDATE"
echo -n " Version: Debian "
if [ -f /etc/debian_version ]; then
cat /etc/debian_version
fi
echo "============================================="
}
INFO_HEADER >> /tmp/backup.log.$$
if test $DAY = 'Sunday'
then
DAY=$DAY-$SUNDAY
if test $SUNDAY = 1
then
DAY=$DAY-$MONTH
fi
fi
### Backup-Space mounten
mount -t nfs -o nfsvers=3,soft,intr 192.168.x.x:/volume1/servername $BACKUPDIR
### MySQL-Datenbanken sichern
DATABASES=`mysql -u$BACKUPUSER -p$BACKUPUSERPASSWD -e"show databases"`
for DATABASE in $DATABASES
do
if [ $DATABASE != "Database" ]; then
run `mysqldump -u$BACKUPUSER -p$BACKUPUSERPASSWD $DATABASE > $BACKUPDIR/mysql/$DATABASE.sql`
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
fi
done
run tar -cf $BACKUPDIR/mysql/mysql-$DAY.tar $BACKUPDIR/mysql/*.sql
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/mysql/*.sql
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/mysql/mysql-$DAY.tar.7z $BACKUPDIR/mysql/mysql-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/mysql/mysql-$DAY.tar
### WWW-Dateien sichern
run tar -cf $BACKUPDIR/web/www-$DAY.tar /var/www
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/web/www-$DAY.tar.7z $BACKUPDIR/web/www-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/web/www-$DAY.tar
### etc-Verzeichnis sichern
run tar -cf $BACKUPDIR/system/etc-$DAY.tar /etc
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/system/etc-$DAY.tar.7z $BACKUPDIR/system/etc-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/system/etc-$DAY.tar
### opt-Verzeichnis sichern
run tar -cf $BACKUPDIR/system/opt-$DAY.tar /opt
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/system/opt-$DAY.tar.7z $BACKUPDIR/system/opt-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/system/opt-$DAY.tar
### home-Verzeichnis sichern
run tar -cf $BACKUPDIR/sonstige/home-$DAY.tar /home
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/sonstige/home-$DAY.tar.7z $BACKUPDIR/sonstige/home-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/sonstige/home-$DAY.tar
### sonstige Daten sichern
EXCLUDE=exclude-sonstige
run tar -cf $BACKUPDIR/sonstige/sonstige-$DAY.tar -X $SCRIPTDIR/$EXCLUDE /var/lib/munin /var/mail /var/spool/mail /var/spool/cron /var/spool/postfix /var/opt /var/log/apache2
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
run 7za a -p2coT7o0S -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -bd $BACKUPDIR/sonstige/sonstige-$DAY.tar.7z $BACKUPDIR/sonstige/sonstige-$DAY.tar
RET2=$?; if [ $RET2 -ne 0 ]; then RET=$RET2; fi
rm $BACKUPDIR/sonstige/sonstige-$DAY.tar
ls -lah /var/opt/backup >> /tmp/backup.log.$$
### Backup-Space unmounten
umount $BACKUPDIR
for REC in $EMAIL; do
case $RET in
0)
mail -s "Backup report [success] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
1)
mail -s "Backup report [failure] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
2)
mail -s "Backup report [warning] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
*)
mail -s "Backup report [status unknown] $MYHOSTNAME" $REC < /tmp/backup.log.$$
;;
esac
done
more /tmp/backup.log.$$ >> $SYSTEMLOG
rm -f /tmp/backup.log.$$
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 292819
Url: https://administrator.de/contentid/292819
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
DynDNS riecht nach Backup über das Internet ??
Ein NFS Mount wäre da kritisch, denn da gelten Laufzeiten und was noch viel wichtiger ist die Daten sind nicht verschlüsselt ! Jeder könnte also deine daten offen sehen wenn die Sicherung denn über das Internet geht.
Besser also die .tar Dateien erst lokal sichern und dann per SCP an das NAS schicken.
Ein NFS Mount wäre da kritisch, denn da gelten Laufzeiten und was noch viel wichtiger ist die Daten sind nicht verschlüsselt ! Jeder könnte also deine daten offen sehen wenn die Sicherung denn über das Internet geht.
Besser also die .tar Dateien erst lokal sichern und dann per SCP an das NAS schicken.
Zitat von @Wild-Wolf:
rsnapshot schaue ich mir auch gerade an.
- Wie schauts da mit den Daten allgemein aus? Komme ich ohne Probleme an die Daten, wenn ich diese z.B. auf meiner Festplatte entpacke dran, oder sind die verschlüsselt/verpackt, wie z.B. bei BackupExec oder Agronis.
- Werden diese als tar gesichert?
Die Daten werden nicht verpackt und nicht verschlüsselt.rsnapshot schaue ich mir auch gerade an.
- Wie schauts da mit den Daten allgemein aus? Komme ich ohne Probleme an die Daten, wenn ich diese z.B. auf meiner Festplatte entpacke dran, oder sind die verschlüsselt/verpackt, wie z.B. bei BackupExec oder Agronis.
- Werden diese als tar gesichert?
Aber die Verbindung selbst wird verschlüsselt.
Das heißt, die Daten liegen 1:1 auf dem NAS wie sie auch auf dem Server liegen.
Gruß