Aller au contenu

Créer une copie locale d’un blog WordPress

WordpressIl est primoridal pour tout webmaster d’effectuer régulièrement des sauvegardes de ses données. Sur un CMS (Content Managing Software) comme WordPress, il existe des plugins (extensions) qui permettent de le faire automatiquement. Les données d’un site WordPress sont composées d’une part de la base de données MySql (une base de données, c’est tout simplement plusieurs tableaux de données, avec des lignes et des colonnes, reliés entre eux) qui s’exporte facilement sous la forme d’un fichier texte (.sql), et d’autre part des fichiers média : images, vidéos, pdf, etc. Les données sont en généralement sauvegardées sur le serveur où est hébergé le site. Cela pose un problème de sécurité en cas de fausse manipulation, comme un effacement malencontreux par FTP, en cas de défaillance de l’hébergeur, de résiliation de l’abonnement, de piratage, etc.

UWAMPPour pallier ces risques, j’ai choisi de réaliser une copie de mon blog en local, sur une clé USB. J’utilise à ces fins UwAmp 3.0.2, l’acronyme UWAMP fait référence à USB (le support), Windows (le système d’exploitation), Apache (le serveur), MySQL (la base de données) et PHP (le langage de script).

La copie du site web vers le serveur local présente quelques difficultés :

1) au niveau de la base de données MySql, la taille maximale des requêtes ou importations est limitée, souvent à 2Mo, or le seul fichier wp_posts.sql issu d’une requête export de la table wp_posts, fait souvent plus d’une dizaine de Mo.

2) les adresses des images sont absolues et non relatives, une image sera adressée par l’URL http://www.saintquayportrieux.eu/wp-content/uploads/2015/06/SourceHopital.jpg où http://www.saintquayportrieux.eu est l’adresse du site où est hébergé le blog.

1) De façon à pouvoir copier facilement la base de données, le mieux est d’essayer de réduire la taille de la table wp_posts. En analysant cette table, on s’aperçoit vite que le nombre d’enregistrements (de lignes) est bien supérieur au nombres d’articles. Ces lignes en plus correspondent à l’historique des révisions des articles, elles n’ont plus lieu d’être pour les articles anciens. Il est facile de les supprimer grâce à la requête SQL suivante :

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = ‘revision’;

Dans la plupart des cas, la taille du fichier sql devrait se retrouver en-dessous de 2Mo. Si ce n’était pas le cas, il conviendra de réaliser plusieurs exportations partielles, portant sur un nombre d’enregistrements limités.

2) J’ai pour ma part remplacé les adresses absolues par des adresses relatives. J’ai tout simplement remplacé la chaîne http://www.saintquayportrieux.eu par une chaîne vide. Par sécurité, je l’ai fait sur le fichier d’export wp_posts.sql, que j’ai bien entendu sauvegardé auparavant. Ensuite j’ai mis à jour les tables  wp_posts du serveur distant et du serveur UwAmp.

Il reste :

– à créer la nouvelle base de données MySql dans le serveur local. Pour plus de facilité, je vous conseille de conserver le même nom que celui de votre base distante. Importez ensuite les tables de la base de données distante, une par une, c’est un peu plus long, mais on voit ce qu’on fait et on élimine les tables superflues.

– à modifier le fichier wp-config.php pour renseigner la connexion à la base de données, il faudra changer le USER, le PASSWORD et le HOST :

define(‘DB_USER’, ‘root’);
define(‘DB_PASSWORD’, ‘root’);
define(‘DB_HOST’, ‘localhost’);

– à modifier l’adresse du site (siteurl) dans la table options : options_value = http://localhost, ainsi que dans le panneau réglages / général du tableau de bord WordPress.

Voilà, je pense que je n’ai rien oublié, n’hésitez pas à me contacter si vous avez des difficultés à effectuer votre sauvegarde.

admin