NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   Security (http://www.netvision-technik.de/forum/forumdisplay.php?f=32)
-   -   [HOW-TO] Sicherung eines Servers mit backup2l und (http://www.netvision-technik.de/forum/showthread.php?t=2477)

Bluesteel 10.12.2008 01:03

[HOW-TO] Sicherung eines Servers mit backup2l und
 
Ziel ist es, einmal pro Nacht alle VHosts mit Datenbanken zu sichern und 7 Tage vorzuhalten. Parallel dazu möchten wir 2x Pro Woche das Komplette System sichern, und jeweils 2 Generationen davon aufbewahren. Das komplette Backup lagern wir auf einem FTP Server aus. Achtet auf jeden Fall darauf, genügend Speicherplatz zu haben. Ansonsten könnt Ihr die Zahl der Backups verringern. Ich mache nur Fullbackups, inkrementelle kommen bei mir nicht in Frage. Wer das möchte, kann sich dass aber gerne Parametrisieren.
Ein

man backup2l
hilft hier nach der installation weiter.
Durch das Systembackup fällt der der Server 2x die Woche früh morgens für ca. 15 Minuten aus. Wer das nicht verkraften kann, sollte die enstprechenden Dienste nicht beenden. Da wir allerdings auch Datenbanken als Files mitnehmen, wäre das beenden empfehlenswert!

Ich gehe hier von einem opensuse 10.1 mit Plesk 8.2.0 aus. Ausserdem gehe ich davon aus, dass entsprechend ein FTP Backup Server vorhanden ist.

Fangen wir an:

Zuerst legen wir das lokale Backupverzeichniss an. Am besten da, wo noch genügend Platz vorhanden ist:
Code:

    mkdir /srv/backup
mkdir /srv/backup/sync

Runterladen der benötigten Software:
Code:

    mkdir /srv/software/
cd /srv/software/

Code:

wget http://dfn.dl.sourceforge.net/sourceforge/backup2l/backup2l_1.4.tar.gz
wget http://www.lyra.org/sitecopy/sitecopy-0.16.3.tar.gz

Entpacken:
Code:

    tar xzf backup2l_1.4.tar.gz
tar xzf sitecopy-0.16.3.tar.gz


Installieren von backup2l:

Code:

    cd /srv/software/backup2l-1.4/
./install-sh

Die beiden Fragen können mit „y“ beantwortet werden.


Entfernen des täglichen Cronjobs (später mehr dazu)

Code:

    rm /etc/cron.daily/zz-backup2l
Wir beginnen nun mit der Einrichtung von backup2:
Code:

    mv /etc/backup2l.conf /etc/backup2l-vhost.conf
Bearbeiten der VHost Config:
Code:

    vi /etc/backup2l-vhost.conf
Finde:
Code:

    VOLNAME=“all“

Ersetze durch

Code:

    VOLNAME=“vhost“
Finde:
Code:

    SRCLIST=(/etc /root /home /var/mail /usr/local)

Ersetze durch (Deinen VHost Pfad!)

Code:

    SRCLIST=(/srv/www/vhosts)
Finde
Code:

    BACKUP_DIR=“/disk2/backup/“
Ersetze durch
Code:

    BACKUP_DIR=“/srv/backup/sync“
Setze folgende Werte:
Code:

    MAX_LEVEL=0
MAX_PER_LEVEL=0
MAX_FULL=7

Finde:
Code:

    UNCONFIGURED=1

Ersetze durch:

Code:

    # UNCONFIGURED=1
Nun konfigurieren wir das Systembackup:
Code:

    cp /etc/backup2l-vhost.conf /etc/backup2l-system.conf
vi /etc/backup2l-system.conf

Code:

    VOLNAME="system"
SRCLIST=(/)

SKIPCOND=(-path '/proc' -o -path '/proc/*' -o -path '/srv/backup/*' -o -path '/srv/backup' -o -path '/srv/www/*' -o -path '/srv/www' -o -path '/sys' -o -path '/sys/*')

MAX_LEVEL=0
MAX_PER_LEVEL=0
MAX_FULL=2
GENERATIONS=1

Vor dem Backup:
Code:

    PRE_BACKUP ()
{
        echo "pre-backup:  Dienste beenden"

        echo "Apache"
        rcapache2 stop
        echo "MySQL"
        rcmysql stop
        echo "Nameserver"
        rcnamed stop
        echo "Mailserver"
        /etc/init.d/qmail stop
        echo "Plesk"
        /etc/init.d/psa stop
        echo "Mailman"
        rcmailman stop
}

Nach dem Backup:
Code:

    POST_BACKUP ()
{
        echo "  post-backup: Dienste starten"

        echo "Plesk"
        /etc/init.d/psa start
        echo "Mailserver"
        /etc/init.d/qmail start

}

Kommen wir zu den Datenbanken, die wir einzeln in Files dumpen und eine gewisse Zeit auf dem Server und dem FTP Backup Server vorhalten möchten:

Code:

    touch /usr/local/bin/dbsave
chmod 700 /usr/local/bin/dbsave
vi /usr/local/bin/dbsave

Inhalt der Datei: (Fragmente aus einem alten fund im Internet, Danke dem Author!)
Code:

    #!/bin/bash
echo "Alle MySQL-Datenbanken sichern:"
mysqlshow -uadmin -pGEHEIM | awk '{print $2}' | grep -v Databases | sort >/tmp/dblist.txt
cd /srv/backup/sync/
mkdir -p `date +%Y%m%W%D`
cd `date +%Y%m%W%D`
for x in `cat /tmp/dblist.txt`; do
    echo "Datenbank: $x sichern";
    mysqldump --opt -uadmin -pGEHEIM $x >$x.sql;
done;
echo "Alte .gz-Dateien loeschen:"
rm *.gz
echo "Dateien zippen:"
gzip *
echo .fertig.
echo "=================================================="

Nach Ablauf liegen nun die Datenbanken in
Code:

    /srv/backup/sync/DATUM….
vor und werden später mit Sitecopy auf den server kopiert. Pro Tag gibt es einen Unterordner.

Damit dieser Ordner nicht voll läuft, kümmern wir uns um die regelmäßige Verschiebung:

Code:

    mkdir /srv/backup/db_old
touch /usr/local/bin/dbpush
chmod 700 /usr/local/bin/dbpush
vi /usr/local/bin/dbpush

Inhalt der Datei:
Code:

    #!/bin/bash
echo "Alle MySQL-Datenbanken verschieben:"
rm -fr /srv/backup/db_old/*
mv -v /srv/backup/sync/2* /srv/backup/db_old/

Um volle Kontrolle zu behalten legen wir für jeden Sicherungsablauf ein eigenes Starterskript an. Beginnen wir mit den VHost-Sicherungen:

Code:

    touch /usr/local/bin/webbackup
chmod 700 /usr/local/bin/webbackup
vi /usr/local/bin/webbackup


Inhalt der Datei:

Code:

    #!/bin/bash
echo "Sicherung aller VHosts anlegen"
echo "=================================================="
/usr/local/bin/backup2l -c /etc/backup2l-vhost.conf –b


Nun das Systembackup:

Code:

    touch /usr/local/bin/sysbackup
chmod 700 /usr/local/bin/sysbackup
vi /usr/local/bin/sysbackup

Inhalt dieser Datei:
Code:

    #!/bin/bash
echo "Sicherung des Systems anlegen"
echo "=================================================="
/usr/local/bin/backup2l -c /etc/backup2l-system.conf -b

Ok, nachdem wir uns um die Sicherung gekümmert haben, installieren wir sitecopy:

Installieren von sitecopy:
Code:

    cd /srv/software/sitecopy-0.16.3/
./configure
make
make install


Anlegen des configfile/folder:

Code:

    mkdir -m 700 /root/.sitecopy
touch /root/.sitecopyrc
chmod 600 /root/.sitecopyrc
vi /root/.sitecopyrc

Inhalt der Datei:
Code:

    site backup
  server backupxxx.onlinehome-server.info
  remote /backup
  local /srv/backup/sync
  username bakxxxxxx
  password geheim

Ordner auf dem Backupserver anlegen:

Code:

    ftp bakxxxxxx@backupxxx.onlinehome-server.info
mkdir backup
quit

Und Sitecopy initialisieren:
Code:

    /usr/local/bin/sitecopy --init backup
Da wir vorhaben, täglich als letzten Vorgang die Datenbanken zu sichern, nehmen wir die Syncronisation da mit rein. Da ich jeden Tag mir den Status per Email zukommen lassen möchte, habe ich in dieser Mail den Überblick ob die Datenbanken gesichert sind, und ob das Syncronisieren geklappt hat:


Code:

    vi /usr/local/bin/dbsave
und fügen am Ende
Code:

    echo "Sync starten:"
/usr/local/bin/sitecopy -u backup
echo "Sync beendet"

hinzu.

Nun kümmern wir uns darum, dass alle Programme ablaufen, Infos in Logfiles schreiben und uns das per mail schicken:

Code:

    crontab -e
Alle Programme Ausführen, Logs schreiben
Code:

    00      01      *      *      *      /usr/local/bin/webbackup > /tmp/webbackup.log
30      03      *      *      1,4    /usr/local/bin/sysbackup > /tmp/sysbackup.log
00      04      *      *      *      /usr/local/bin/dbsave > /tmp/dbsave.log
45      03      *      *      1      /usr/local/bin/dbpush > /tmp/dbpush.log


Logs per mail schicken lassen

Code:

    00      06      *      *      *      mail -s "VHost Sicherung" -a /tmp/webbackup.log mail@adresse.de
00      06      *      *      1,4    mail -s "System Sicherung" -a /tmp/sysbackup.log mail@adresse.de
00      06      *      *      *      mail -s "DB Sicherung + Sync" -a /tmp/dbsave.log mail@adresse.de
00      06      *      *      1      mail -s "DB Archivierung" -a /tmp/dbpush.log mail@



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.