Sauvegarder votre site web avec un accès FTP et MySQL

Voici un script utilisable sous Windows et Linux afin de sauvegarder les pages ainsi que les bases de données de votre site.

Ce script (batch ou bash selon votre système) assez sommaire se contente de sauvegarder l’intégralité des pages et des bases de votre site.

Prérequis

backupLes pages du site doivent être accessibles en FTP. Nous utiliserons wget qui permet le transfert de fichiers en ligne de commande et supporte de nombreux protocoles.

Les bases de données (MySQL) seront aspirées avec mysqldump.

Sous Linux Debian

Wget est un utilitaire natif sous Linux, vous pouvez l’utiliser n’importe où dans un terminal ou un script.

Mysqldump est fourni avec le paquet mysql-client :

apt-get install mysql-client

Sous Windows

Wget existe pour Windows et vous pouvez le télécharger ici.

Placez le dans C:\Windows et le programme sera accessible depuis une fenêtre de commande.

Pour obtenir mysqldump, installez WampServer et ajoutez le dossier C:\wamp\bin\mysql\mysql [VERSION]\bin à la variable PATH de votre système.

Côté serveur

Il est nécessaire (et évident) de configurer l’accès FTP et je ne reviendrai pas dessus.

Si le script de sauvegarde n’est pas lancé localement, MySQL doit accepter les connexions distantes et cela se fait en deux étapes :

La configuration du serveur

Par défaut, MySQL sous Linux n’écoute que localhost (ce qui n’est pas le cas avec WampServer sous Windows).

Éditez votre fichier de configuration (/etc/mysql/my.cnf ) et supprimez cette ligne :

bind-address = 127.0.0.1

N’oubliez pas de redémarrer le service :

/etc/init.d/mysql restart

La configuration du compte utilisateur

Le compte MySQL utilisé pour la sauvegarde doit être utilisable depuis l’extérieur. Cela se fait aisément depuis phpMyAdmin via l’onglet « Privilèges » ou « Utilisateurs » selon votre version.

Modifiez l’utilisateur et accordez lui l’accès depuis « % ».

phpMyAdmin acces distant

Si vous ne voulez pas utiliser phpMyAdmin et souhaitez passer par une console MySQL, servez vous des requêtes suivantes :

# accès à toutes les bases
# pour l'utilisateur XXX
# depuis n'importe quel client
# avec le mot de passe XXX

grant all privileges on *.* to XXX@"%" identified by "XXX";

# mise à jour des privileges
flush privileges;

Le script

cd sauvegarde
wget ftp://user:MDP@hote/dossier1/dossier2 -r
mysqldump BDD --skip-extended-insert --host=hote --user=user --password=MDP > BDD.sql
  • user : Nom d’utilisateur
  • MDP : Mot de passe
  • hote : Adresse du serveur web
  • BDD : Nom de la base de données

Wget aspire le contenu du « dossier2 » (le chemin à indiquer est relatif au répertoire d’accueil du FTP), l’option -r permet d’aspirer les fichiers et fichiers des sous dossiers.

Mysqldump extrait la base de données « BDD » et l’enregistre sous DBB.sql.
Le paramètre –skip-extended-insert permet de créer une seule requête INSERT par ligne.
Si le fichier est alourdi, cela évite des mauvaises surprises lors d’un éventuel import du fichier.

Conclusion

Le script est brut et ne gère pas de sauvegarde différentielle ou incrémentielle. Il se contente d’extraire la totalité de votre site.

Il peut être utilisé dans un véritable plan de sauvegarde. Par exemple, Cobian Backup (sous Windows) accepte l’exécution d’un script batch au début d’une tâche.

Vous pouvez aussi automatiser son exécution via une tâche planifiée (avec un fichier .bat sous Windows) ou une tâche cron (avec un fichier .sh sous Linux).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Êtes-vous humain ? *