Hallo,
das komplette Kopieren der Moodle-Datenbank zwingt dazu, auch alle Benutzer, installierte plugins etc. - also die gesamte Moodle-Installation mitzusichern. Ich wollte aber gleichzeitig eine etwas geänderte user-Datenbank und ein neues Moodle 3.8 verwenden. Ein Moodle-Upgrade war bereits vorher, als der Server noch lief, gescheitert und ist auch ansonten nicht trivial, da gleichzeitig auch noch Änderungen der Php-Version (7.1 auf 7.3) und der MySQL-Version anstanden. Und, wie gesagt, ich KAM ja gar nicht mehr auf die Website, um die Kurse zu sichern, der durchscnittliche Seitenwechsel dauerte zwischen 10 und 160 sec. (!)
Also sicherte ich die Kurse mit moosh so:
su www-data -s /bin/bash
(Damit wird man zum www-data-Benutzer, der für moosh nötig ist. Mit -s erreicht man eine shell, egal, was in /etc/passwd eingetragen ist.)
Zuerst
#!/bin/bash
moosh course-list >kursliste.txt
while read line do
kursid=`echo $line | cut -d'"' -f2`
echo "Ich backuppe $kursid !"
sudo -u www-data /usr/bin/php7.1 admin/cli/backup.php \
--courseid=$kursid --destination=/usr/share/moodle/
echo "Ich verschiebe..."
mv /usr/share/moodle/*.mbz /usr/share/moodle/sftp/
echo "...verschoben !"
done < kursliste.txt
Und sorry: Das Sichern der Kurse war ja das Moodle-eigene admin/cli-Script - das hatte ich vergessen. Mit moosh habe ich lediglich die Kursliste erstellt !
Wie man im Script sehen kann, hatte ich ein Verzeichnis des neuen Servers über sftp gemountet.
Dorthin flossen also die gesicherten Kurse.
Auf dem neuen Server habe ich dann die Kurse mit moosh wieder eingespielt:
#!/bin/bash
for i in /root/*.mbz; do
echo $i
moosh course-restore $i 12
echo "Ich bennene um $i nach ${i}.hochgeladen"
mv $i ${i}.hochgeladen
done
„12“ war in diesem Fall der Kursbereich „Verschiedenes“. Die Verschiebung in die Kursbereich habe ich über die regulären Moodle-Funktionen erledigt.
So - das war nun meine Lösung. Sicher etwas unkonventionell, aber dem Notfall geschuldet !
Liebe Grüße
Christoph G.