Dans cet article, nous allons voir comment exporter et importer un site WordPress en utilisant uniquement le terminal de ligne de commande, tel qu'on le trouve sur Linux ou Mac. Via le SSH, nous allons nous connecter au premier serveur et préparer les fichiers. Ensuite, nous les importerons sur le nouveau serveur. Mais avant cela, une question…

Quel est intérêt d'utiliser  le terminal pour transférer un site WordPress ?

Premièrement, cela vous permet de gagner du temps. En effet, si vous deviez transférer vos fichiers via le FTP (avec Filezilla par exemple), cela vous prendrait un temps considérable. Vous devriez d'abord télécharger tous vos fichiers de votre serveur vers votre ordinateur. Ensuite, de votre ordinateur vers votre nouveau serveur. Si vous avez beaucoup de plugins, de fichiers images, etc., cela peut vous prendre des heures. Avec le terminal Linux ou Mac, c'est une affaire de minutes.

Deuxièmement, cela permet de contourner certaines limites. Lorsque vous importez une base de données depuis PHPMyAdmin, votre fichier est limité en taille. Cela varie selon les hébergeurs, mais c'est un vrai souci. Si vous devez saucissonner votre base ou l'importer table par table, c'est encore une fois une vraie galère. Et parfois, même si la taille est respectée, phpMyAdmin plante quoi qu'il en soit (il "time out" comme on dit dans le jargon).

Plus votre site est important et volumineux, plus le gain de passer par le SSH est grand ! Voyons maintenant, comment faire, concrètement.

NB : Je pars du principe que votre serveur est configuré pour accueillir WordPress et me concentre uniquement sur les lignes de commande à entrer dans le terminal. Si des points restent flous, n'hésitez pas néanmoins à me poser la question en commentaire.

1. Exporter les fichiers de WordPress

Se connecter au serveur via SSH (Secure Shell)

La première chose à faire, c'est de se connecter via ssh au serveur. Typiquement, vous allez le faire avec une commande du type :

Copy to Clipboard

Naviguer jusqu'aux fichiers de WordPress

Ensuite, il faut naviguer vers là où se trouve les dossiers de l'installation. Par exemple :

Copy to Clipboard

Compresser les fichiers depuis le dossier src

Nous allons compresser les fichiers depuis un dossier src (au même niveau que public_html), pour ne pas exposer l'archive. Donc revenons un pas en arrière :

Copy to Clipboard

Et de là, lançons la compression des fichiers :

Copy to Clipboard

Cela va créer le fichier export.tar.gz. Vous pouvez le voir en tapant la commande ls -hartl (avec l'argument pour avoir toutes les données le concernant).

2. Exporter la base de données MySQL

Nous allons maintenant exporter la base de données. Pour cela, nous allons créer un dumpfile, de cette manière :

Copy to Clipboard

Souvenez-vous que vous pouvez trouver les éléments de l'utilisateur de la base de données (utilisateur_bdd) et le nom de la base de données elle-même (nom_bdd) dans le fichier wp-config.php de votre installation de WordPress.

Si vous rencontrez une erreur mentionnant l'impossibilité d'utiliser des tablespaces, vous pouvez modifier votre commande ainsi :

Copy to Clipboard

Si vous utilisez un hébergement WordPress mutualisé chez IONOS, vous pouvez vous référer à cette page pour trouver la commande exacte à exécuter.

Une fois que vous avez exécuté cette commande, vous pouvez faire ls si le cœur vous en dit pour voir que votre fichier export_bdd.sql a bien été créé.

3. Protéger les fichiers d'export par mot de passe avec gpg

Maintenant, nous créer un dossier dans lequel nous allons déplacer nos deux fichiers d'export (l'archive et le dump MySQL). Puis nous allons compresser ce fichier, et l'encrypter pour le protéger.

Déplacer les fichiers dans un nouveau dossier

On commencer par créer un dossier avec la commande :

Copy to Clipboard

Puis on y déplace les fichiers à exporter :

Copy to Clipboard
Copy to Clipboard

Compresser les fichiers

On remet une couche de compression en compressant ce dossier :

Copy to Clipboard

Protéger le fichier avec un mot de passe

Pour cela, on va utiliser gpg :

Copy to Clipboard

Une invite va vous demander d'entrer un mot de passe, puis de le confirmer. Veillez à choisir un mot de passe complexe, une longue clef de chiffres et lettres, par exemple. Un nouveau fichier encrypté est créé : export_site.tar.gz.gpg

Effacez le fichier non encrypté, dont vous n'avez plus besoin :

Copy to Clipboard

Arrivé à ce stade, votre fichier d'export est prêt !

Placer le fichier d'export dans un dossier public

Nous allons placer le fichier encrypté dans un dossier public de WordPress le temps de faire le transfert. Par exemple, wp-content/temp/.

Commencez par créer le dossier :

Copy to Clipboard

Déplacez-y votre fichier encrypté :

Copy to Clipboard

Attention, une fois que vous aurez transféré le fichier, vous effacerez ce fichier. Veillez également à avoir créé un mot de passe réellement complexe.

(Dans l'absolu, il serait mieux de télécharger le fichier depuis votre nouveau serveur avec la commande scp [email protected]:/var/www/example.com/src/export_site.tar.gz.gpg ../home/bob par exemple. Mais si votre serveur est sécurisé, il y a des chances pour que ce ne soit pas possible [enfin, pas sans toucher aux permissions et réglages du serveur].)

4. Importer les fichiers depuis le nouveau serveur

Se connecter au serveur via SSH

Connectez-vous à votre nouveau serveur via SSH en utilisant le terminal de ligne de commande. Par exemple :

Copy to Clipboard

Importer le fichier d'export

Télécharger le fichier en exécutant la commande :

Copy to Clipboard

Cela va importer votre fichier encrypté. Une fois que c'est fait, rendez-vous sur votre premier serveur, pour le supprimer : rm ../public_html/wp-content/temp/export_site.tar.gz.gpg

Déplacer le fichier encrypté dans le dossier src

Nous allons déplacer le fichier vers le dossier suivant :

Copy to Clipboard

Puis rendez-vous dans ce dossier :

Copy to Clipboard

Décompresser les fichiers encryptés

Commencez par décrypter votre fichier avec cette commande :

Copy to Clipboard

Entrez votre mot de passe pour accéder à l'archive, qui se nomme export_site.tar.gz. Décompressez cette dernière avec cette commande :

Copy to Clipboard

Vous avez maintenant votre dossier avec vos deux fichiers d'export ! Il ne reste plus qu'à importer la base de données MySQL et placer les fichiers de WordPress dans le dossier public de votre serveur.

Importer la base de données

Si vous avez créé votre base de données (par exemple dans l'interface d'administration de votre compte IONOS 1&1), vous avez déjà le nom, l'utilisateur et le mot de passe de votre nouvelle base. Si ce n'est pas le cas et que vous créez vous-même votre base, vous pouvez suivre au préalable les étapes décrites sur cette page. Notez aussi que les hébergements mutualisés peuvent limiter l'accès aux tables et requérir des commandes un peu modifiées. Par exemple, chez IONOS 1&1.

Ici, nous allons simplement procéder à l'import des tables que vous avez exportées un peu plus tôt :

Copy to Clipboard

Si tout se passe bien, vous ne devriez pas voir de message d'erreur. Optionnellement, vous pouvez jeter un œil à vos tables avec ces commandes :

Copy to Clipboard
Copy to Clipboard
Copy to Clipboard

Cela vous permettra de voir les tables de votre base de données.

Décompresser les fichiers de WordPress

Rendons-nous maintenant dans le dossier qui contient les fichiers compressés de WordPress, ainsi que l'export de la base de données :

Copy to Clipboard

Puis décompressez les fichiers de WordPress :

Copy to Clipboard

Déplacer les fichiers de WordPress dans le répertoire public

Dans le cas présent, je suppose que le dossier public_html existe déjà sur le nouveau serveur. On déplace donc le contenu de l'ancien vers celui-ci :

Copy to Clipboard

Tous vos fichiers sont désormais en place. Il ne vous reste plus qu'à modifier le fichier wp-config.php pour qu'il communique avec la nouvelle base de données. En théorie, à ce moment-là, vous pourrez vérifier avec le domaine système que tout fonctionne bien, puis faire les changements requis au niveau de votre hébergeur pour faire pointer le nom de domaine vers votre nouveau serveur.