Website spiegeln unter Bedingung

Ich möchte eine Website regelmäßig spiegeln. Im Moment verwende ich httrack, das von Cron gestartet wird.

Das Problem ist, dass die Website manchmal ein Datenbankproblem hat und genau das sagt (der HTTP-Status bleibt in diesen Fällen immer noch "200"). Dann wird mein letzter funktionierender Spiegel durch eine Kopie überschrieben, die nur „Datenbankproblem“ sagt.

Ich könnte ein Skript schreiben, das so etwas tut

curl website.com
if not “Database problem”:
   httrack website.com

Ich kann nicht glauben, dass ein Spiegelprogramm eine solche Funktion nicht hat. Gibt es ein Tool, das nur eine solche Inline-Bedingung widerspiegelt?

Welchen HTTP-Statuscode gibt die Website bei „Datenbankfehler“ zurück? Wenn anders als 2xx, könnte das hilfreich sein (ich könnte mir hier einen 5xx-Code vorstellen: 500/503 würde zu dieser Situation passen; wenn Sie das konfigurieren können, könnte auch ein 304 ("nicht geändert") ausgelöst werden). Ich verwende selten Spiegelungsskripte, könnte mir aber vorstellen, dass sie konfigurierbar sind, um auf solche Bedingungen zu reagieren. wgetz. B. überspringt den Inhalt bei einem Fehler, es sei denn, --content-on-errores ist auf gesetzton .
Übrigens: Auf welchem ​​Betriebssystem muss das Tool laufen?
Der Statuscode ist immer noch 200 und ich kann das nicht ändern. Das Programm muss unter Linux laufen.

Antworten (2)

Könnte ich vorschlagen, stattdessen rsync zu verwenden? Wie Curl kann es mit verschlüsselten Verbindungen umgehen und funktioniert gut mit Cron. Es wurde zu Spiegelungszwecken und nicht nur zum Herunterladen geschrieben und sollte tun, was Sie wollen. Ich benutze es seit Jahren ohne Probleme. Rsync kann eine Site pushen oder pullen, sodass Sie ein Skript schreiben können, um sie zu steuern, und sich dann für das Senden entscheiden.

Können Sie erklären, was dieses Datenbankproblem ist und welches Programm es verursacht/meldet? Das wäre wichtig, wenn es noch einen Workaround braucht.

Ich denke, rsync ist keine Option, weil ich über eine dynamische Website (PHP) spreche und nur die resultierenden HTML-Dateien speichern möchte. Das Problem ist die vorübergehende Nichtverfügbarkeit des Datenbankservers für den Webserver. Daher meldet PHP diesen Fehler.
Ich verwende auch PHP mit rsync und verwende mySQL als Datenbank. Veröffentlichen Sie in Zukunft bitte Statistiken zu Ihrem Projekt mit der Frage, die den Leuten helfen wird, Ihnen zu helfen.

Also habe ich es selbst gehackt. schnell & schmutzig, funktioniert aber für meinen Anwendungsfall:

chttrack (auf Github)

Es ist ein kleines Modul, das in Python geschrieben ist , also müssen Sie Python installiert haben, um es verwenden zu können. Falls sich jemand über den Namen wundert: das "c" steht für "conditional" ;)

Wie derzeit geschrieben, würde ich erwarten, dass es niemals eine Seite aktualisiert, die die Wörter "fehlgeschlagen" oder "Fehler" enthält (nachdem Sie dies hier in einen Kommentar geschrieben haben, können Sie diese Seite beispielsweise nicht mehr spiegeln). Es braucht also wirklich noch etwas Arbeit, aber es könnte ein guter Anfang sein. (Hinweis: Die Ablehnung ist nicht von mir).
Du sagst also, du hast dann selbst eine Lösung für dein Problem gefunden.