Moodle - Fehlermeldung bei Sicherung

Ich habe die letzten Wochen viele Stunden damit verbracht, Dateien im Moodle zu löschen, damit die (automatische) Sicherungen funktionieren. Ich weiß nicht, ob mein Weg der beste ist, aber er hat funktioniert und ich will ihn hier zur Verfügung stellen, falls außer mir mal jemand das gleiche Problem hat.

Einleitung

Was tun, wenn das Moodle bei einer Sicherung eine Fehlermeldung mit Mismatch between provided sizes bringt? Man muss die Datei, um die es in der Fehlermeldung geht, löschen. Das Problem ist nur, sie zu finden.

Zunächst kann man (muss man aber nicht) versuchen, auf zwei Wegen grob einzugrenzen, wo die blöde Datei ist (bei mir waren’s mehrere Duzend Dateien). Besteht der Kurs, den man sichern will aus Verzeichnissen, kann man entweder die einzelnen Verzeichnisse separat sichern und sieht evtl., bei welchen Verzeichnissen das nicht geht; oder man löscht einzelne Verzeichnisse und versucht dazwischen immer wieder den Kurs zu sichern. Beide Methoden sind umständlich und führen nicht immer zum Ziel: Das Löschen will man natürlich nur mit Sicherungen machen; wenn das Sichern nicht geht, kann man das Verzeichnis als zip-Datei herunter laden. Dann dauert es natürlich lange, bis man sie wieder hochgeladen und entpackt hat, falls es doch nicht an diesem Verzeichnis gescheitert ist. Und das erfolgreiche Sichern eines einzelnen Verzeichnisses heißt nicht, dass die Sicherung des Kurses mit dem Verzeichnis klar kommt (verstehe ich nicht, ist aber so).

Im Folgenden beschreibe ich, wie ich vorgegangen bin, um meine blöden Dateien zu finden. Ich habe dazu nicht in die Datenbank geschaut, was vielleicht schneller geht, vielleicht kann das jemand andres beschreiben.

Information und Ausgangslage

Die vom Moodle erstellen Sicherungsdateien haben ja die Endung mbz. mbz-Dateien sind tar-Dateien mit einer unkonventionellen Endung. In diesen mbz-Dateien sind die Dateien mit den kryptischen Bezeichnungen der Fehlermeldung (Datenbankbezeichnungen).
Ich habe mbz-Dateien meines alten Moodles verwendet, um sie im neuen Moodle wiederherzustellen. Da ich daher die mbz-Dateien hatte, konnte ich sie selbst wie folgt durchsuchen. Wenn man die mbz-Dateien der Verzeichnisse nicht hat, funktioniert die folgende Methode nicht, dann muss man entweder Belwü anschreiben oder in der Datenbank schauen. Manchmal kann man aber (wie oben bereits gesagt) auch die einzelnen Verzeichnisse sichern und die automatische Sicherung hat mit dem Kurs trotzdem Probleme, dann kann man auch wie folgt vorgehen.

Datei hinter den kryptischen Bezeichnungen der Fehlermeldung herausfinden

Vorbereitung

Die einzelnen Verzeichnisse über die Verzeichnis-Administration sichern und herunterladen.
Die mbz-Dateien in tar umbenennen:
rename 's/\.mbz$/\.tar/' *.mbz
Zu jeder tar-Datei einen Ordner anlegen:
find ./ -iname *.tar | parallel mkdir '{.}'
Die tar-Dateien in diese Ordner entpacken:
find ./ -iname *.tar | parallel tar -xzf '{}' -C '{.}'

Suche

Die korrupte Datei finden, wenn in der Fehlermeldung etwas vonwegen c066047e… steht z.B.
find ./ -name *c066047e*
Oder, um gleich die Größe (in Byte) mit anzuzeigen:
find ./ -iname *c066047e* -exec du -b {} \;

Dateiname herausfinden

Meistens kann man die kryptische Datei öffnen und sieht im Titel den Dateinamen, manchmal klappt das aber nicht, dann kann man…

Suche nach Dateigröße

… zudem die zip-Dateien herunter laden, die die Dateien mit den Originalbezeichnungen enthalten. Hat man diese Dateien z.B. mit
find ./ -iname '*.zip' | parallel mkdir '{.}'
find ./ -iname '*.zip' | parallel unzip '{}' -d '{.}'
entpackt, kann man so nach der Dateigröße suchen (die man bei der Suche oben ja herausgefunden hat):
find ./ -size 14234624c
Das c steht für Byte, also hier 14,2 MB.