Sitio web espejo en condición

Quiero duplicar un sitio web regularmente. En este momento uso httrack iniciado por cron.

El problema es que a veces el sitio web tiene un problema con la base de datos y dice exactamente eso (el estado HTTP sigue siendo "200" en esos casos). Luego, mi último espejo de trabajo se anula con una copia que simplemente dice "Problema de base de datos".

Podría escribir un guión que haga algo como

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

No puedo creer que un programa espejo no tenga esa función. ¿Existe una herramienta que solo reflejará una condición en línea de este tipo?

¿Qué código de estado HTTP devuelve el sitio web en "error de base de datos"? Si no es 2xx, eso podría ser útil (podría imaginar un código 5xx aquí: 500/503 coincidiría con esa situación; si puede configurar eso, también podría activarse un 304 ("no modificado")). Rara vez uso scripts de duplicación, pero podría imaginarlos configurables para actuar en condiciones como esta. wgetpor ejemplo, salta el contenido por error a menos que --content-on-errorse establezca enon .
Por cierto: ¿en qué sistema operativo debe ejecutarse la herramienta?
El código de estado sigue siendo 200 y no puedo cambiarlo. El programa tiene que ejecutarse en Linux.

Respuestas (2)

¿Puedo sugerir usar rsync en su lugar? Al igual que curl, puede manejar una conexión cifrada y funciona bien con cron. Fue escrito con fines de duplicación en lugar de solo para descargar y debería hacer lo que quieras. Lo he usado durante años sin ningún problema. Rsync puede empujar o extraer un sitio para que pueda escribir un script para controlarlo y luego decidir enviarlo.

¿Podría explicar cuál es este problema de la base de datos y qué programa lo está causando/informando? Eso sería importante si todavía necesita una solución.

Creo que rsync no es una opción porque estoy hablando de un sitio web dinámico (PHP) y solo quiero almacenar los archivos html resultantes. El problema es la falta de disponibilidad temporal del servidor de la base de datos para el servidor web. Por lo tanto, PHP informa este error.
También estoy usando PHP con rsync, usando mySQL como base de datos. En el futuro, publique estadísticas sobre su proyecto con la pregunta que ayudará a las personas a ayudarlo.

Así que lo hackeé yo mismo. rápido y sucio, pero funciona para mi caso de uso:

chttrack (en Github)

Es un pequeño módulo escrito en Python , por lo que deberá tener Python instalado para poder usarlo. Si alguien se pregunta por el nombre: la "c" significa "condicional" ;)

Tal como está escrito actualmente, espero que nunca actualice ninguna página que contenga las palabras "fallido" o "error" (habiendo puesto eso en un comentario aquí, ya no puede reflejar esta página, por ejemplo). Así que realmente necesita más trabajo, pero podría ser un buen comienzo. (nota: el voto negativo no es mío).
Entonces estás diciendo que has encontrado una solución a tu problema por tu cuenta.