Über den Author / Internet / Server / Confixx / Confixx Backupscript

Confixx Backupscript

~2 Min. Lesezeit

Bei Confixx gibt es integriertes Backup, leider passt mir das nicht:

/root/confixx/backup.pl -d /root/backups/`date +%y%m%d`_confixx.tar.gz -f

Ich habe gewisse Folder, welche ich nicht backupen möchte (Backup dauert sonst Stunden), zudem werden bei dem standard Script von Confixx auch die Kundenbackups nochmals gesichert und der Platzverbrauch steigt so unsinnigerweise exponentiell an.

Daher machte ich kurzerhand mein eigenes Script „/root/cron/backup_weekly.sh“:

#!/bin/bash

#############################################################
# alte Backups löschen
find /root/backups/confixx/ -mtime +30 -exec rm {} \;
find /root/backups/db/ -mtime +30 -exec rm {} \;
find /root/backups/etc/ -mtime +30 -exec rm {} \;
find /root/backups/email/ -mtime +30 -exec rm {} \;
#############################################################

#############################################################
# Backup aller Web Benutzer von Confixx
for x in /var/www/web[0-9]*; do
export foo=${x#/var/www/}
tar czfP /root/backups/confixx/`date +%y%m%d`_web$foo.tar.gz $x/html;
done
#############################################################

#############################################################
# Alle MySQL Datenbanken sichern
mysqlshow -p<PASS> | awk '{print $2}' | grep -v Databases | sort >/root/backups/db/.dblist
mysql -u root -p<PASS> mysql -e "flush tables with read lock" -v

for x in `cat /root/backups/db/.dblist`; do
if [ -n "$x" ] then mysqldump –opt -p<PASS> $x > /root/backups/db/`date +%y%m%d`_$x.sql;
fi;
done;

tar cfzP /root/backups/db/`date +%y%m%d`.tar.gz /root/backups/db# /*.sql

mysql -u root -p<PASS> mysql -e "unlock tables" -v
rm /root/backups/db# /*.sql /root/backups/db/.dblist
#############################################################

#############################################################
# Confixx Backup wird erstellt
tar czfP /root/backups/confixx/`date +%y%m%d`_confixx_web.tar.gz /var/www/confixx
tar czfP /root/backups/confixx/`date +%y%m%d`_confixx_inst.tar.gz /root/confixx
#############################################################

#############################################################
# Backup aller E-Mail von Confixx
## ACHTUNG: Dies geht nur wenn confixx die Mailfiles unter $maildrop = ‚HOMEDIR/Maildir/‘; anlegt
## Kann im Confixx Installationsfolder confix/admin/config_main.conf nachgeschaut werden!
## Meine Confixx Installationsanleitung schlägt dies vor!
for x in /home/email/web[0-9]*; do
export foo=${x#/home/email/}
tar czfP /root/backups/email/`date +%y%m%d`_$foo.tar.gz $x/Maildir;
done
tar czfP /root/backups/email/`date +%y%m%d`.tar.gz /root/backups/email# /*_web*.tar.gz
rm /root/backups/email# /*_web*.tar.gz
#############################################################

#############################################################
# /etc Backup wird erstellt
tar czfP /root/backups/etc/`date +%y%m%d`_etc.tar.gz /etc
#############################################################

Runter laden könnt ihr es hier, da beim kopieren Fehler auftreten (Web zu Text Formatierung).

Zusätzlich werden die alten Backups nach 30 Tagen automatisch gelöscht. So habe ich alle Datenbanken und Confixx Dateien (DB, Configs und Program) gebackupt.
Ausgenommen sind die Backups, welche die User selber erstellten, sowie zusätzlich den Folder „downloads“.

Das Script läuft innerhalb von 30 Sekunden durch. Ich backuppe damit 1 Mal pro Woche alle Domains.
Folgendes Cronjob Script kann dazu verwenden werden:

3 3 * * 0 /root/cron/backup_weekly.sh >/dev/null 2>&1

Der Zusatz „>/dev/null 2>&1“ wird verwendet, um alle Ausgaben zu unterdrücken.

Update 16.03.2010: Script erneut richtig hoch geladen, mit /etc Backup ergänzt, was sehr praktisch sein kann bei der Server Neuinstallation. Ich empfehle das Datenbankbackup in ein eigenes File zu legen und in ein täglichen Shedule zu werfen.

Update 17.03.2010:Script überarbeitet, damit die TAR Fehlermeldungen über den Leading ‚/‘ nicht mehr auftreten.

About Stefan

avatar
Ein männlicher IT Nerd, durchstöbert das Web nach speziellen Gadgets, unentbehrlicher Software und Alles was man im IT Sektor nicht verpassen darf.Immer hilfsbereit wenn Probleme zu lösen sind oder das Unmögliche umgesetzt werden sollte.

Weitere interessante Artikel

PHP Trojaner (Teil 2: Uploader Infektion)

~1 Min. LesezeitPHP Trojaner sind beliebt, denn oft werden solche Infektionen übersehen und überstehen Jahre …

PHP Trojaner (Teil 1: footer.php Infektion)

~1 Min. LesezeitWieder einmal hat das anynome Web zugeschlagen und eine Installation von diversen WordPress …

7 Kommentare

  1. avatar

    Hab eine kleine Frage,

    Das Backupscript ist wunderbar, aber er packt nicht richtig das Backupscript packt z.B. web22 in web10. tar weil z.B das web22 an 10 stelle ist zum packen.
    er erstell die Tar Dateien nach der Reihe .
    z.B. das wurde erstellt 100315_web11.tar.gz aber web11 gibt es nicht 🙁

  2. avatar

    Das ist richtig, ich habe eigentlich auch vor langer Zeit schon ein Update gemacht auf dem Script, frage mich gerade warum wieder das Alte da ist. Ich Update gleich nochmals. Das neue geht dann mit den richtigen Nummern.

  3. avatar

    Ok Soweit scheint es nun zu funktionieren.
    Beim alten hat er dann live gesehen was er pakt und wo er ist. wenn ich jetzt die Bash Datei Aufrufe steht dann das hier
    tar: Entferne führende â/â von Elementnamen
    tar: Entferne führende â/â von Elementnamen
    tar: Entferne führende â/â von Elementnamen
    tar: Entferne führende â/â von Elementnamen
    Ist das soweit richtig ?

    Super wäre es wenn der dann zum schluß wenn alles fertig die Daten noch per FTP auf einen anderen Server hochlädt.

  4. avatar

    Hoi Viktor,
    Ja das ist richtig, ich habe bewusst die Anzeige ausgeblendet. Wenn du diese wieder willst, kannst du bei tar -czf einfach ein tar -czfv draus machen (v= verbose).

    Ich nutze dazu rsync um die Daten danach auf ein anderen Server zu übertragen.
    RSync hat der Vorteil, das es nur neue Daten überträgt und mit 1 Befehl abgesendet werden kann.
    Du kannst dies aber auch genauso gut per FTP machen, z.B. mit SCP, meiner Meinung muss man bei SCP aber jedes File einzeln übertragen.

    Der Befehl dazu ist:
    scp Quelldatei.tar.gz Benutzer@Host:Verzeichnis/Zieldatei.tar.gz

    Ich empfehle dass du den Befehl gleich mit in die Schlaufe wirfst:
    #############################################
    # Backup aller Web Benutzer von Confixx
    for x in /var/www/web[0-9]*; do
    export foo=${x#/var/www/}
    tar -czf /root/backups/confixx/`date +%y%m%d`_web$foo.tar.gz $x/html;
    scp /root/backups/confixx/`date +%y%m%d`_web$foo.tar.gz Benutzer@Host:Verzeichnis/`date +%y%m%d`_web$foo.tar.gz
    done
    #############################################

    Musst du halt überall ergänzen.

  5. avatar

    Das altbekannte Quotation (‚ und „) Problem hat sich eingeschlichen wenn man den Code kopiert hat, dies habe ich nun auch gleich noch behoben.

  6. avatar

    Super das ist wirklich mal ein Backup Script was mir auch weiterhilft.
    Alles funktioniert wunderbar. Vor allem der Support ist wirklich Gut ich bin begeistert.

  7. avatar

    Neu ist im Backup auch noch alle E-Mails der User drin!