Da es eine stark "befahrene" Webseite ist, will ich in der Zeit des Backups die Webseite auf ein anderes Verzeichnis umleiten. Also für den Zeitraum des Backups eine Wartungsseite anzeigen. Mit dem aktuellen System kann ich Schreibzugriffe auf die Datenbank noch nicht sperren.
Das stoppen und starten des Webservers könnte sicher auch etwas anders aussehen, mit -f ini-file, jedoch ists nen Server der durch Confix/Plesk auch administriert wird, so das ich Fehler ausgleichen möchte. Aus dem Grund wird auch jedes Mal die "alte" Config gesichert und später zurückgeschrieben.
Ich poste das hier mal unter dem Aspekt Sicherheit und "gehts auch einfacher?".
Kann ja sein dasich etwas zu kompliziert denke ;o)
Mirko
Code: Select all
#!/bin/sh
#
#
# Init Variablen
DATUM=`date +"%d-%m-%Y_%H"`
TAG=`date +" %a"`
BACKUP=/home/backup.lokal
# Das Verzeichnis in dem die Original Apache conf liegt
webnormal1=/home/httpd/vhosts/yauno.com/conf
# Dahin wird die Datei gesichert, bevor die Datei zum Backup kopiert wird
webnormal2=/home/backup.lokal/wartungsfiles/normal.yauno.com
# die Datei
datei=httpd.include
# die Datei die zum Sichern benötigt wird
webbackup=/home/backup.lokal/wartungsfiles/wartung.yauno.com
# Fehleremail Adresse
mailto="technik@ domain.de"
# Welches Verzeichnis soll gesichert werden? (rsync)
backupvz=/home/htdocs/web0/html/sub-yauno.de/admin
# Temporäres Sicherungsverzeichnis
tempbuvz=/home
# Logindaten FTP-Backupserver
user="ABCDE"
passwd="VWXYZ"
host="backup.domain.de"
# erstellen/löschen Verzeichnisse
# Wir brauchen nur 7 Tage der Woche
cd $BACKUP/db/
rm -fr $TAG/
mkdir $TAG
# Webseite umleiten
# Webserver erst mal anhalten
/etc/init.d/apache2 stop > /dev/null || echo "Script Start: Apache Stop failed" | mail -s "Fehler" $mailto
# kopiere Original Datei
cp $webnormal1/$datei $webnormal2/$datei
# kopiere nun veränderte Datei
cp $webbackup/$datei $webnormal1/$datei
# Webserver wieder starten
/etc/init.d/apache2 start > /dev/null || echo "Script Start: Apache Start failed" | mail -s "Fehler" $mailto
# Backup Datenbanken und sonstiges
nice -n 20 mysqldump yauno | gzip >> $BACKUP/db/$TAG/domain.com.$DATUM.sql.gz
nice -n 20 mysqldump ads | gzip >> $BACKUP/db/$TAG/sun1.domain.de.$DATUM.sql.gz
nice -n 20 mysqldump project | gzip >> $BACKUP/db/$TAG/sub2.domain.de.$DATUM.sql.gz
nice -n 20 mysqldump wiki | gzip >> $BACKUP/db/$TAG/sub3.domain.de.$DATUM.sql.gz
nice -n 20 mysqldump wiktionary | gzip >> $BACKUP/db/$TAG/sub4.domain.de.$DATUM.sql.gz
# Sytem Datenbanken
nice -n 20 mysqldump psa | gzip >> $BACKUP/db/$TAG/psa_$DATUM.sql.gz
nice -n 20 mysqldump horde | gzip >> $BACKUP/db/$TAG/horde_$DATUM.sql.gz
nice -n 20 mysqldump mysql | gzip >> $BACKUP/db/$TAG/mysql_$DATUM.sql.gz
# Geburtstagsgrüße
lynx -dump http://www. domain .com/maintenance.php?setpw=habichauch
# kopiere Webverzeichnis komplett
rsync -avz --ignore-errors --delete $backupvz $BACKUP/files
# Wechsle ins Temporäre Backupverzeichnis
cd $tempbuvz
mkdir $TAG
cd $TAG/
# Komprimieren der Dateien und Verzeichnisse
cd $tempbuvz
tar zcfv $tempbuvz/$TAG/archiv.$TAG.tar.gz $BACKUP/
cd $tempbuvz/$TAG/
# Backup auf den Server schieben
ftp -n $host <<END_SCRIPT
quote USER $user
quote PASS $passwd
put archiv.$TAG.tar.gz
quit
END_SCRIPT
# lösche das temporäre Backupverzeichnis
cd ..
cd $tempbuvz/
rm -fr $TAG/
# Webseite wieder herstellen
# Webserver stoppen
/etc/init.d/apache2 stop > /dev/null || echo "Script End: Apache Stop failed" | mail -s "Fehler" $mailto
# Original File wieder herstellen
cp /home/backup.lokal/wartungsfiles/normal.yauno.com/httpd.include /home/httpd/vhosts/yauno.com/conf/httpd.include
# Webserver wieder starten
/etc/init.d/apache2 start > /dev/null || echo "Script End: Apache Start failed" | mail -s "Fehler" $mailto
exit 0
