Sauvegarder votre site web avec un accès FTP et MySQL
Sommaire
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
Les 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 « % ».
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).
Bonjour, oui mais alors comment faire pour créer un sauvegarde incrémentale d’un site du dossier /var/www/html/ »nom du site » et de la base de données correspondante mysql? Je ne trouve rien à ce sujet