PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Backuptool (Debian)


Sven77
2013-01-15, 13:41:01
Hi,

ich brauche für unseren Server eine neue Backupstrategie, da die derzeitige mir sehr viel Arbeit bereitet und je nach Fehler auf der menschlichen Seite nicht 100% sicher ist.

Die Projektdaten sollen auf ein QNAP NAS kopiert werden, natürlich inkrementell. Soweit kein Problem. Doch dann sollten noch Versioning möglich sein, am besten unter Angabe der Kapazität des entsprechenden Backupvolumes. Wenn das Volume voll ist werden die ältesten Versionen zum überschreiben freigegeben. Ähnlich wie Timemachine funktioniert.

Hvoralek
2013-01-15, 14:33:20
Hast Du Dir Back In Time schon einmal angesehen? Das ist ein Snapshottool; im Grunde ein Nachbau von Timemachine. Es sollte eigentlich alles können, was Du brauchst.

Lord_X
2013-01-15, 19:42:57
Snapshots sind kein Backup! Backup's gehören auf ein externes Medium! Tool dafür wäre z.B. "bacula".

nalye
2013-01-15, 19:50:57
Reicht Dir ein schönes Shellscript, welches per Cron ausgeführt werden kann?


#!/bin/bash
BACKUPORDNER=/Pfad/zum/Ziel/
ORDNERZUMSICHERN="/Pfad/zur/Quelle/"
EMAILADRESSE=mail@domain.com
EMAILBETREFF="$HOSTNAME Backup"
#Bis hierhin kann geaendert werden...
EMAIL=1
LEVEL0DAY=0
KEEPALL=0
COMPRESS=1
COMPRESSLOG=1
COMPRESSLEVEL=6
QUIET=0
VERBOSE=1
WOCHENTAG=`date +"%w"`
BACKUPORDNERTAEGLICH=$BACKUPORDNER/TAEGLICHESICHERUNG
BACKUPORDNERHEUTE=$BACKUPORDNERTAEGLICH/$WOCHENTAG
BACKUPORDNERARCHIV=$BACKUPORDNER/ARCHIVIERTE_BACKUPS
L0DATESTAMP=$BACKUPORDNER/.level0_datestamp
NOW=`date`
LOGORDNER=$BACKUPORDNER/LOGS
SCRIPTNAME="Schnubbi-Backup-Script"
VERSION=0.01
COPYRIGHT="Tis be me then..."
if [ $VERBOSE -eq 1 ]
then
VERBOSECOMMAND="--verbose"
fi
LOGDATEI=$LOGORDNER/`date +"%d%m%Y_%s"`.log
if [ ! -d $BACKUPORDNER ]
then
if [ $EMAIL -eq 1 ]
then
echo "Das Verzeichnis $BACKUPORDNER existiert nicht. Operation abgebrochen." | mail -s "$EMAILBETREFF" $EMAILADRESSE
fi
echo "Das Verzeichnis $BACKUPORDNER existiert nicht. Operation abgebrochen."
exit 1
fi
if [ ! -d $BACKUPORDNERTAEGLICH ]
then
mkdir $BACKUPORDNERTAEGLICH
fi
if [ ! -d $LOGORDNER ]
then
mkdir $LOGORDNER
fi
exec 3>&1
exec 1>$LOGDATEI
exec 2>&1
if [ $QUIET -eq 0 ]
then tail -f $LOGDATEI >&3 &
fi
echo " "
echo "#######################################################################"
echo "$SCRIPTNAME "
echo "Version $VERSION"
echo "$COPYRIGHT"
echo " "
echo "Host: $HOSTNAME "
echo "Startzeit: $NOW"
echo "#######################################################################"
echo " "
echo " "
echo " "
if test $WOCHENTAG -eq $LEVEL0DAY
then
LEVEL=0
if test -d $BACKUPORDNERARCHIV
then
if test $KEEPALL -eq 0
then rm -Rf $BACKUPORDNERARCHIV/*
fi
else
mkdir $BACKUPORDNERARCHIV
chmod 700 $BACKUPORDNERARCHIV
fi
mv -f $BACKUPORDNERHEUTE/* $BACKUPORDNERARCHIV > /dev/null 2>&1
rm -Rf $BACKUPORDNERTAEGLICH/*
mkdir $BACKUPORDNERHEUTE
for BACKUPDATEIEN in $ORDNERZUMSICHERN
do
OHNESLASHES=`echo $BACKUPDATEIEN | tr "/" "."`
OHNEPUNKT=`echo $OHNESLASHES | cut -b2-`
AUSGABEDATEINAME=$OHNEPUNKT.`date +"%m%d%Y_%s"`.tar
AUSGABEDATEI=$BACKUPORDNERHEUTE/$AUSGABEDATEINAME
STARTZEIT=`date`
echo " "
echo " "
echo "###########################################################################"
echo "$STARTZEIT: Erstelle ein level $LEVEL backup von $BACKUPDATEIEN nach $AUSGABEDATEI"
echo "###########################################################################"
tar --create $VERBOSECOMMAND \
--file $AUSGABEDATEI \
--label "Level-$LEVEL Backup ${NOW}" \
$BACKUPDATEIEN
if test $COMPRESS -eq 1
then
gzip -$COMPRESSLEVEL $VERBOSECOMMAND $AUSGABEDATEI
rm -f $AUSGABEDATEI
fi
done
if [ ! -w $L0DATESTAMP ]
then
touch $L0DATESTAMP
fi
echo $NOW > $L0DATESTAMP
else
LEVEL=1
if [ ! -d $BACKUPORDNERHEUTE ]
then
mkdir $BACKUPORDNERHEUTE
fi
if [ ! -w $L0DATESTAMP ]
then
touch $L0DATESTAMP
echo "1969-12-31" > $L0DATESTAMP
fi
LAST=`cat $L0DATESTAMP`
for BACKUPDATEIEN in $ORDNERZUMSICHERN
do
OHNESLASHES=`echo $BACKUPDATEIEN | tr "/" "."`
OHNEPUNKT=`echo $OHNESLASHES | cut -b2-`
AUSGABEDATEINAME=$OHNEPUNKT.`date +"%m%d%Y_%s"`.tar
AUSGABEDATEI=$BACKUPORDNERHEUTE/$AUSGABEDATEINAME
STARTZEIT=`date`
echo " "
echo " "
echo "###########################################################################"
echo "$STARTZEIT: Erstelle ein level $LEVEL backup von $BACKUPDATEIEN nach $AUSGABEDATEI"
echo "###########################################################################"
tar --create $VERBOSECOMMAND \
--file $AUSGABEDATEI \
--after-date "$LAST" \
--label "Level-$LEVEL Backup from $LAST to $NOW" \
$BACKUPDATEIEN
if test $COMPRESS -eq 1
then
gzip -$COMPRESSLEVEL $VERBOSECOMMAND $AUSGABEDATEI
rm -f $AUSGABEDATEI
fi
done
fi
ENDZEIT=`date`
echo "All hail to the admin! "
echo " "
echo " "
echo " "
echo "#######################################################################"
echo "Endzeitpunkt: $ENDZEIT"
echo "#######################################################################"
if [ $EMAIL -eq 1 ]
then cat $LOGDATEI | mail -s "$EMAILBETREFF" $EMAILADRESSE
fi
exec 1>&3
exec 2>&3
if test $COMPRESSLOG -eq 1
then
gzip -$COMPRESSLEVEL $LOGDATEI > /dev/null 2>&1
rm -f $LOGDATEI > /dev/null 2>&1
fi
exit 0

Hvoralek
2013-01-15, 20:31:50
Snapshots sind kein Backup! Backup's gehören auf ein externes Medium! Tool dafür wäre z.B. "bacula".Back In Time fertigt auch keine Snapshots i.S.v. Btrfs an. Es fertigt Snapshots i.S.v. versionierten Backups an – und die werden natürlich auf separaten Datenträgern gespeichert.

Sven77
2013-01-15, 20:49:27
Danke, ich hätte eigentlich noch bemerken sollen das kein Xserver läuft und ich eigentlich genau sowas suche wie nayle vorgeschlagen hat, ein Cronjob sollte absolut ausreichend sein. Zumal anscheinend alle Backuptools die ich bisher gefunden habe irgendwie auf rSync basieren und nur entsprechende GUI-Aufsätze bieten

@nayle
Danke, ich denke das kann ich entsprechend umbasteln. rSync sollte schon aufgrund des Datenaufkommens implementiert sein..

nalye
2013-01-15, 22:29:54
Falls Du instantan Sachen kopieren magst --> incron, ist Teil von inotify!

Lord_X
2013-01-16, 21:37:41
Back In Time fertigt auch keine Snapshots i.S.v. Btrfs an. Es fertigt Snapshots i.S.v. versionierten Backups an – und die werden natürlich auf separaten Datenträgern gespeichert.
Habe ich das geschrieben? Er will die Backups auf ein NAS speichern.