Wie macht man ein richtiges Backup?

Wie macht man ein richtiges Backup?

von Daniel N -
Anzahl Antworten: 9
Hallo!!

Wie kann ich meine komplette Moodle-Plattform richtig sichern, d.h. alle Beiträge in Wikis, Foren etc., wie auch die definierten Materialen im Hauptmenü und in den Kursen?

Welche Ordner im moodle-Haupt bzw. moodle-Data-Verzeichnis sollte man lokal kopieren oder reicht die Sicherung über das Administrationsmenü?

Wie muss die Datenbank gesichert werden?


mfg
Daniel
Mittelwert:  -
Als Antwort auf Daniel N

Re: Wie macht man ein richtiges Backup?

von Marc Fehrenbacher -
Als Antwort auf Marc Fehrenbacher

Re: Wie macht man ein richtiges Backup?

von Daniel N -
Hallo!

Ich habe vollen root Zugriff, das moodle liegt auf einem lokalen Webserver und wird dann fürs Intranet benutzt.


Viele Grüße
Daniel
Als Antwort auf Daniel N

Re: Wie macht man ein richtiges Backup?

von Maik Riecken -

Dann baue dir ein Shellscript, welches die Datenbank und den /moodledata-Ordner per cron sichert. Flotter geht es nicht und alles andere wäre in meinen Augen in deiner Situation Gefrickel.

Wenn ich zu Hause bin, poste ich dir einmal meines. Wir nutzen backup2l und lassen die Datenbank vorher sichern und in den /moodledata-Ordner kopieren. Das klappt auch mit mittlerweile 70000 Files schnell und zuverlässig (ca. 120 Sekunden).

Gruß,

Maik

Als Antwort auf Maik Riecken

Re: Wie macht man ein richtiges Backup?

von Daniel N -
Hi!

Das wäre super, wenn Du das Skript posten könntest, ich habe nämlich kein Plan wie man ein Shellscript schreibt...

Viele Grüße
Daniel
Als Antwort auf Daniel N

Re: Wie macht man ein richtiges Backup?

von Maik Riecken -
... och, ich eigentlich auch nicht. Aber dann fange ich immer an zu lesen. Das Ding hier sollte tun, ist natürlich kein toller Programmierstil...

(ungetestet, keine Gewähr, Benutzung auf eigene Gefahr!)

#!/bin/bash

# ab hier bitte Werte anpassen

# 1. Verzeichnisse
backupdir=/opt/backup # Verzeichnis, in dem gesichert werden soll
sqldir=/opt/backup/sql # Verzeichnis, um die Datenbankdumps zwischenzulagern
moodledir=/pfad/to/moodle # absoluter Pfad zum Moodleverzeichnis
moodledatadir=/pfad/zu/moodledata # absoluter Pfad zum /moodledata-Verzeichnis

# 2. Datenbank
sql_user=name # Name des Datenbankbenutzers (wie in config.php)
sql_pass=geheim # Passwort für den Datenbankzugriff (wie in config.php)
sql_db=datenbankname # Name der Datenbank (wie in config.php)

# ab hier muss nichts mehr geändert werden (falls ich keinen Mist gebaut habe)

date=`date +%y%m%d` # Zeitstempel für die Backups

# ein paar Checks, ob sich das Loslegen auch lohnt
# Geht auch mit einem if und oder-Operator (||), aber dann
# sind die spezifischen Fehlermeldungen flöten
# das geht viel hübscher...

if [ ! -d $backupdir ]; then

echo "Fehler! Das angegebene Backup-Verzeichnis existiert nicht!"
exit 0

elif [ ! -d $moodledir ]; then

echo "Fehler! Das angegebene Moodle-Verzeichnis (html) existiert nicht!"
exit 0

elif [ ! -d $moodledatadir ]; then

echo "Fehler! Das angegebene /moodledata-Verzeichnis existiert nicht!"
exit 0

elif [ ! -d $sqldir ]; then

echo "Fehler! Das angegebene Verzeichnis zum Speichern der Dumps (Datenbank) existiert nicht!"
exit 0

fi

# alles klar - ok, ok die DB ist noch nicht geprüft...
# trotzdem: Rock'n roll

# erstmal Datenbank sichern und Dump nach sqldir schreiben
echo "* Sichere Datenbank $sql_db..."
mysqldump -u$sql_user -p$sql_pass $sql_db > $sqldir/$sql_db.sql

# dann die Moodleverzeichnisse und das sqldir in ein Archiv packen
# das bekommt dann einen Zeitstempel vom Tag des Backups

echo "* Sichere das Moodle-, das /moodledata-Verzeichnis und den gerade erstellten Dump der Datenbank"
tar czf $backupdir/vollbackup.$date.tar.gz $moodledir $moodledatadir $sqldir

# weg mit dem Dump - den brauchen wir nicht mehr, da er bereits mit eingepackt ist.
cd $sqldir
rm *.sql
cd /

# und tschüss!!

exit 0

Als Antwort auf Daniel N

Re: Wie macht man ein richtiges Backup?

von Ralf Hilgenstock -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Entwickler Nutzerbild von Moodle Partner Nutzerbild von Translators
Für alle, die sich nicht mit shell-Skripten befassen hier eine Info, um was es geht.

Es gibt im Prinzip drei Teile, die zu sichern sind:
das Moodle-Programm,
das Data-Verzeichnis,
die Datenbank.

Das Moodle-Programm enthält die bei der Installation hochgeladenen Dateien, evtl. zusätzlich installierte Blöcke und Module und angepasste Themes. Zusätzlich liegt hier die bei der Installation angelegte Datei config.php. Dieser gesamte Bereich verändert sich währendes Betriebs nicht, Es reicht also, ihn einmal zu sichern.
Der moodledata Ordner enthält in Kursen hochgeladene Dateien, Sprachdateien und Profilbilder. Dieser Ordner verändert sich laufend und muss regelmäßig komplett gesichert werden.
Drittens die Datenbank. Hier liegen alle im Kurs eingetragenen Informationen und die Nutzerdaten. Auch diese muss regelmäßig gesichert werden. das geht z.B. mit einem Datenbankverwaltungsprogram auf dem Server. Das Ergebnis ist eine sql-Datei, die zumeist gezippt heruntergeladen wird.

Damit hat man alle Teile seines Moodle-Systems gesichert.




Als Antwort auf Ralf Hilgenstock

Re: Wie macht man ein richtiges Backup?

von S v K -
Schönschön genau das was ich suche.

Hat das Script schonmal jemand erfolgreich getestet?
Oder gibt es Alternativen?

Könnte man die Wiederherstellung auch per Script machen?

MFG
SvK
Als Antwort auf S v K

Re: Wie macht man ein richtiges Backup?

von Maik Riecken -
"Hat das Script schonmal jemand erfolgreich getestet?"

Klar. Läuft bei uns in mittlerweile abgewandelter Form auf moodleschule.de sehr zuverlässig - und da sind mittlerweile einige Systeme zu sichern.

"Oder gibt es Alternativen?"

Klar. Deine eigene Entwicklung/Abwandlung. Ich habe es mit perl/php und Shell versucht - und per Shell läuft es einfach am schnellsten, da nur compilierte C-Programme aufgerufen und benutzt werden. Daher sehe ich für mich zur Shell keine Alternative. Man kann es auch Klickibunti per Web mit wilden sudo-Kontruktionen machen. Klicken ist aber immer viel langsamer als die Konsole.

"Könnte man die Wiederherstellung auch per Script machen?"

Ja. Machen wir auf moodleschule.de auch. Wobei ich glaube, dass du eher fragen wolltest, ob jemand ein Script dazu posten kann.

Denkansätze:
Auspacken machst du mit "tar xvzf archivname". (tar sichert freundlichweise Dateiattribute wie z.B. Rechte mit, sodass du die ausgepackten Verzeichnisse nur wieder an die richtige Stelle legen musst).

"mysql -u$user -p$passwort $datenbankname < dump-sql"

Spielt dir den Dump "dump.sql" in die Datenbank "$datenbankname" wieder ein.

Gruß,

Maik