Ma méthode pour sauvegarder ce blog

closeCet article a été publié il y a 9 ans 1 mois 10 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

On ne le dira jamais assez : faites des sauvegardes. On stocke de plus en plus de choses sur nos machines, et on peut en faire des copies pour éviter de tout perdre. Ce blog fait partie des choses importantes à sauvegarder, pour pouvoir le restaurer ou tout simplement le déplacer quand j’aurais ma propre machine à disposition (ça m’a servi pour changer de thème, entre autres). Il existe quantité de méthodes, la mienne est assez rudimentaire, mais elle fonctionne.

Je ne suis pas un pro de la sauvegarde : certains maîtrisent des outils qui permettent notamment de gagner un max de temps avec ces sauvegardes (notamment avec des méthodes incrémentielles). J’ai une approche certes peu optimisée, mais techniquement très simple à comprendre.

Le blog est une application WordPress : elle est codée en PHP, et repose sur un serveur MySQL/MariaDB pour stocker les informations (articles, commentaires) et paramètres du site. Tout le code est stocké dans un seul dossier, et une seule base de données est nécessaire à son bon fonctionnement.

Je n’ai donc pas besoin de beaucoup de choses pour « exporter » mon site. Tout est sur le même serveur, et j’ai déjà à disposition tous les outils : client MySQL, outils d’archivage. J’ai choisi le LZMA (à installer) parce qu’il est très efficace en compression. Le dossier pèse lourd en effet :

Un simple script shell fera donc l’affaire. Pour « parfaire » ma solution rudimentaire, j’envoie par SSH l’archive créée directement à la maison. Comme je garde plusieurs sauvegardes, j’ai mis le script dans un dossier dédié.

Il faudra tout de même quelques informations : on sait où est stocké le blog, il nous faut les identifiants MySQL et le nom de la base de données pour en faire un « dump », ainsi que le chemin où est installé le site. Ces informations sont connues, sinon le blog ne fonctionnerait pas.

La procédure est des plus simples : je copie le dossier du site, j’extraie la base de données, je compresse les deux ensemble, j’envoie l’archive créée à la maison.

Mon dossier utilisateur sur le serveur est /home/monuser. J’ai donc un dossier www dans lequel se trouve WordPress, et un dossier backup où se trouve le script, la clé SSH pour le transfert, et les futures archives.

Techniquement, c’est dans le dossier utilisateur que ça se passe, et l’archive, une fois transférée, est rangée dans le dossier. Comme mon script est rudimentaire et que je ne fais pas de journal, le déplacement est ma « preuve » que le transfert s’est bien passé, car sinon le script s’interrompt.

Sans plus de préparations, voilà le script en question :

Il y a quelques précisions à apporter : pratiquement tous les paramètres nécessaires sont dans les variables du début, ce qui facilite la réutilisation. La seule chose que je n’ai pas daigné « variabiliser » se trouve à la ligne concernant le transfert SCP, à savoir l’utilisateur et le domaine de destination, le port, le chemin vers la clé SSH ainsi que le chemin vers lequel sauvegarder.

Autre précision, sur la ligne suivante :

Le script présenté ici sauvegarde un seul site. On le devine avec les SITE1, BACKNAME1 etc. Personnellement je sauvegarde aussi l’instance Piwik dans la même archive, donc j’ai ajouté des SITE2, BACKNAME2 partout où c’est nécessaire, en copiant les lignes de copie et de dump. C’est rudimentaire, mais ça fonctionne.

J’utilise une tache cron pour le lancer tous les lundis matin à 5h, heure à laquelle il y a peu de trafic. Les données de Piwik sur les tranches horaires pourraient me pousser à modifier légerement l’horaire, sait-on jamais :

J’ai déjà pu tester la validité des archives sur mon serveur à la maison (et en plus sur un serveur web différent). Quand on utilise aussi ma méthode pour changer les domaines des liens, on a un moyen somme toute assez simple de migrer un blog d’une plateforme à une autre.

Je compte ajouter la configuration du vhost dans l’archive (Apache, puis Nginx quand je me déciderais à basculer). Si on veut « automatiser » la sauvegarde de plusieurs sites, on peut créer une liste avec une boucle, mais ça devient compliqué avec la gestion des utilisateurs de bases de données. On pourrait aussi s’inspirer des multiples scripts de nicolargo pour implémenter une méthode de journalisation.

Je pense aussi développer une méthode en « full PHP », mais ça va me demander pas mal de lecture avant pour savoir dans quelle mesure c’est possible. L’idée étant de pouvoir sauvegarder un blog sur une plateforme d’hébergement mutualisé.

2 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Cascador
Cascador
18/02/2015 06:13

Hello,

Tu as raison de faire simple et compréhensible, il vaut mieux quelque chose de simple et maîtrisé pour une sauvegarde.

La remarque (voire reproche) que je ferais est concernant le dossier /etc. En général, tout le monde le sauvegarde. J’en fais de même. Il est vrai qu’ainsi tu conserves les fichiers de configuration des logiciels : Fail2ban, php, Nginx/Apache, Logrotate, Cron, MySQL/MariaDB etc.

C’est une importante source de gain de temps lorsque tu restaures et ces réglages font partis intégrante du bon fonctionnement de ton site.

Tcho !