Script: Sauvegarde d’un site internet avec Wget

Wget est un outil permettant de récupérer des fichiers en ligne de commande et via les protocoles Http ou Ftp. Ses options très complètes (proxy, horodatage, reprise de téléchargement…) en font une solution idéale pour automatiser la sauvegarde d’un site internet hébergé sur un serveur mutualisé.
Installé par défaut sur la plupart des distributions Linux, Wget est également disponible pour Windows.

Manuel Wget / Wget pour Windows

 

Sauvegarde des fichiers hébergés
La commande suivante effectue une synchronisation (mode miroir) des fichiers distants en ne téléchargeant que les fichiers nécessaire selon leur horodatage. Le protocole utilisé est Ftp en mode passif.

wget --mirror --passive-ftp --ftp-user=user --ftp-password="mdp" -P chemin-répertoire "ftp://site/*"

 

Sauvegarde de la base de données
Dans le cadre d’un hébergement mutualisé il est rare de disposer d’un accès distant à la base. A défaut de pouvoir effectuer des requêtes SQL distantes, il faudra passer par un script Php afin qu’elle s’exécutent localement. Wget permettant l’authentification Http, l’accès à ce script sera protégé par mot de passe.

  • Créer un répertoire db-dump à la racine du serveur. Celui-ci accueillera le script et les dumps SQL.
  • Créer le script dump.php avec le code suivant (source)
  • Protéger le répertoire db-dump en y créant les fichiers .htaccess et .htpasswd:

Le fichier .htaccess:

AuthType Basic
AuthName "Accès Privé"
AuthUserFile /home/mon-site/db-dump/.htpasswd #(voir cette note pour obtenir le chemin absolu)
Require valid-user

Le fichier .htpasswd:

Sous Linux, il est possible de créer ce fichier de mot de passe via la commande suivante:

htpasswd -c .htpasswd identifiant

Sous Windows, on utilisera éventuellement un générateur en-ligne.

 

Exécution planifiée:

Il suffit ensuite de planifier l’exécution des commandes suivantes:

#1 Lance l’export de la base en exécutant dump.php

wget --http-user=identifiant --http-password=mdp http://www.site.fr/dbdump/dump.php -P /dev/null

#2 Récupère l’export SQL précédemment généré

wget --ftp-user=user --ftp-password="mdp" "ftp://www.site.fr/db-dump/*"