Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

Datenbanksicherung per cgi-Script

Die Sicherung einer Datenbank ist in der Regel nicht nur über phpMyAdmin möglich sondern kann auch auf der Shell (Kommandozeile) mit dem Befehl mysqldump erfolgen. BelWue bietet zwar keinen Zugriff auf eine interaktive Shell, aber trotzdem kann die Datenbank mit dem Befehl mysqldump gesichert werden. Dies geht über den Umweg eines cgi-Programms.

Als cgi-Programm verwendet man hierfür ein Shell-Script, dass eine Datenbanksicherung in einem Verzeichnis erzeugt. Danach kann diese Sicherungsdatei z. B. per scp heruntergeladen werden.

Hinweis

Das folgende Script stammt im wesentlichen von BelWue. Bitte verwenden Sie es trotzdem nur, wenn Sie die Funktionsweise nachvollziehen können. Eventuell finden Sie auch bei BelWue eine neuere Version: Script von BelWue

Shell-Script

Im folgenden Shell-Script dbbackup.sh sind die Einträge mit eckigen Klammern durch die jeweiligen Daten der Moodle-Installation zu ersetzen:

    
     #! /bin/bash
#
# Dieses Script sichert bei Aufruf eine Datenbank als SQL Datei

# Suchpfad setzen
PATH='/usr/local/bin:/usr/bin'

#### Ab hier Konfigurieren!

#Sicherungsverzeichnis
#geben Sie hier ein Sicherungsverzeichnis in Ihrem upload  ↵
Ordner an
SICHERUNGSVERZEICHNIS='/srv/www/virtual/[Kundenummer]/[URL]↵
/vhostdata/upload/dbbackup';

#Ersetzen Sie 
#[Kundennummer],
#[URL],
#[MySQL Host] (web-db...),
#[MySQL Datenbankname] (db...),
#[MySQL DBAdmin] (adm...) und
#[MySQL DBAdmin Passwort]
#entsprechend ihrer Daten

#Datenbankserver
DBSERVER='[MySQL Host]'
#Datenbankname
DBNAME='[MySQL Datenbankname]';
#Datenbankuser
DBUSER='[MySQL DBAdmin]';
#Datenbankpassword
DBPASS='[MySQL DBAdmin Passwort]';

############################################
# Hauptprogramm, ab hier nichts veraendern!#
############################################
#Ausgabe Header
echo Content-type: text/plain
echo

#Sicherungsverzeichnis vorhanden?
#wenn nicht dann erstellen
if [ ! -d ${SICHERUNGSVERZEICHNIS} ]
    then
        mkdir ${SICHERUNGSVERZEICHNIS}
    fi

if [ $? -ne 0 ]
        then
            echo "mkdir fehlgeschlagen"
            exit 1
        fi

#File vorhanden?
if [ ! -e ${SICHERUNGSVERZEICHNIS}/${DBNAME} ]
    then
       touch ${SICHERUNGSVERZEICHNIS}/${DBNAME}.sql
    fi

#File vorhanden und beschreibbar?
if [ ! -w ${SICHERUNGSVERZEICHNIS}/${DBNAME}.sql ]
    then
        echo Fehler: Kann File nicht schreiben!
        exit 1
    fi

# Datenbankdump erstellen
mysqldump -h ${DBSERVER} --user=${DBUSER} --password=${DBPA↵
SS} --opt ${DBNAME} >${SICHERUNGSVERZEICHNIS}/${DBNAME}.sql

if [ $? -ne 0 ]
    then
        echo "Datenbankbackup fehlgeschlagen"
        exit 1
    fi

echo Datenbanksicherung nach
echo ${SICHERUNGSVERZEICHNIS}/${DBNAME}.sql erfolgt!
    
   

Script ausführen

Damit man das Skript ausführen kann, muss es in das passende Verzeichnis für cgi-Programme auf dem Webserver hochgeladen werden. Bei BelWue ist dies das Verzeichnis /srv/www/virtual/[Kundennummer]/[URL]/vhostdata/cgi-bin/ . Das Skript muss für den Besitzer ( SCP User ) ausführbar sein. Aus Sicherheitsgründen ist das Skript bei BelWue zudem nur dann ausführbar, wenn es nur für den Besitzer schreibbar ist. Das Skript kann daher mit den Dateirechte rwx------ (700) oder auch rwxr--r-- (744) ausgeführt werden.

Das Skript kann danach aus einem beliebigen Browser über https://[URL]/cgi-bin/dbbackup.sh ausgeführt werden. Alternativ kann man Programme wie curl verwenden. Die Sicherungsdatei findet sich dann im Ordner SICHERUNGSVERZEICHNIS .