backup en HTML statique avec wget

Source: http://www.vincentliefooghe.net/content/archivage-sites-wordpress-drupal
https://swsblog.stanford.edu/blog/creating-static-copy-website

un site 100% statique en html/css/js, plutôt que de rester sur les CMS initiaux. Ceci a plusieurs avantages à mes yeux :

  • sites plus rapides (nginx est assez doué pour ça)
  • arrêt des  mises à jour à faire sur les CMS
  • suppression de PHP = moins de ressources mémoire consommée
  • suppression de la base de données = moins de ressources
  • pas de sauvegarde (j'ai une copie de l'archive en local sur mon PC et sur disque externe)

Penser à :

  1. faire une sauvegarde complète (surtout s'il y a i18n ou Global_redirect ou autre module qui joue sur les redirections)
  2. désactiver les modules "interactifs", du type contact, comment, ckeditor, captcha... + XMLsitemap






#!/bin/sh
#
echo -n "Destination directory : "
read DEST

echo -n "Site URL : "
read URL

wget -P $DEST -mpck --user-agent="" -e robots=off --wait 1 -E $URL
  • -P : chemin (Path) complet pour sauvegarder le site
  • -m : mode miroir
  • -p : télécharge tous les éléments nécessaires (css, js, images)
  • -c : continue le téléchargement en cas d'erreur
  • -k : convertit les liens absolus en relatifs
  • --user-agent : ignore le user-agent
  • -e : exécute la commande
  • --wait 1 : attente d'une seconde entre chaque requête (optionnel)
  • -E : renomme les fichiers avec une extension .html
  • $URL : URL du site à convertir

On saisit le répertoire de destination, puis l'URL, et on attend que wget fasse le boulot...

Il existe un module, Static, assez récent, qui effectue cette conversion - pour drupal 7 seul (pas drupal 6).

Résultat de tests avec drupal 6

sur iXe: des erreurs lors du wget + lors du FTP vers mon hébergeur. Des soucis sur des caractères exotiques, probablement du à l'absence de Transilateration et du fichier i18n.txt (retirer carrement les caractères exotiques) + ancienne version de PHP (?).

sur un site partiellement bilingue, avec i18n + Global_redirect + divers autres modules (sécurité, taxonomie...) -> site "cassé" (pas de réponse http, car tourne en boucle, et donne la page blanche).
un autre site, totalement bilingue est bien passé.

Vers le site statique de Anne (drupal 6), mon ancien drupal 6 (mais tout ce qui était caché n'a pas été récupéré - comme "tout le caché" était intégré à un livre, j'ai imprimé le livre entier en PDF).

 

Mise à jour (avril 2016)

Drupal a créé une page sur le sujet à https://www.drupal.org/node/27882

wget -q --mirror -p --html-extension -e robots=off --base=./ -k -P ./ http://example.com

S'il manque des fichiers (wget utilise robots.txt) alors ajouter l'option -e robots=off

wget récupère toutes les requetes de type chaine, par exemple pour les images en "?itok=qRoiFlnG". Pour effacer toutes ces chaines, faire : find -name "*.*\?*" | while read filename; do mv "$filename" "${filename%%\?*}"; done

site de iXe

Liens absolus en dur (corrigés sur le drupal 6) :

  • le bloc de présentation des collection (liens absolus en dur) -> corrigé sur le drupal 6.
  • Page d'acceuil : téléchargement du catalogue + Pour vous abonner à la Lettre iXe, pour nous écrire… + liens des 2 images livres
    + "devenez ami de ixe" Pour adhérer, contactez-nous!
    -> corrigé sur le drupal 6.
  • bloc du bas (crédits, contact ... csg)
    note Liste des librairies donne un 404 => retiré
  • liens de la page iXe