Tous les articles Tutoriel

Migrer un WordPress par FTP avec le CLI

Publié le 14 juin 2026

Tutoriel pas à pas : préparer le fichier de config YAML, lancer la migration, et comprendre ce qui se passe à chaque étape — le tout sans SSH.

Ce dont vous avez besoin

Aucun accès SSH n'est nécessaire : un agent PHP est déposé par FTP, exécuté via HTTP, puis supprimé automatiquement.

1. Installer le CLI

bash
 $ unzip wp-migrate-toolkit-cli.zip && cd wp-migrate-toolkit-cli/cli $ pip install -r requirements.txt $ cp example.config.yml monsite.yml 

2. Renseigner le fichier de config

Ouvrez monsite.yml et remplissez la source, la destination et la base cible :

monsite.yml
 # remplacement d'URL (sérialisation-safe) search_replace: from: ancien-domaine.com
to: nouveau-domaine.com
source: ftp: host: ftp.source.com
user: "u" password: "•••" tls: false
wp_path: /
site_url: https://ancien-domaine.com
destination: ftp: host: ftp.dest.com
user: "u" password: "•••" tls: false
wp_path: /
site_url: https://nouveau-domaine.com
db: name: cible_db user: cible_u password: "•••"

Sur l'hébergement mutualisé, mettez tls: false (FTP simple) si le FTPS échoue, ou tls: true + verify_cert: false pour ignorer un certificat invalide.

3. Vérifier, puis migrer

Un test à blanc lit l'état des deux sites sans rien modifier :

wpmig info
 $ python3 wpmig.py info -c monsite.yml  source : siteurl=https://ancien-domaine.com · 77 tables
 destination : base vide prête

Puis on lance la migration complète :

wpmig migrate
 $ python3 wpmig.py migrate -c monsite.yml [1/2] SOURCE — export  base exportée : 77 tables
 fichiers archivés (zip) : 12 776 fichiers
[2/2] DESTINATION — import  extraction : 12 776 fichiers, 0 erreur
 wp-config patché · base importée : 77 tables
 search-replace : 282 lignes
✓ Terminé en 92 s. 

Ce qui se passe sous le capot

Source (FTP)

Agent PHP : export base + archive fichiers

Intermédiaire

Votre machine ou un VPS relaie le transfert

Destination (FTP)

Extraction, import base, search-replace

  1. Source — l'agent dump la base en streaming et zippe le site (ou un .tar si ZipArchive manque), puis le CLI télécharge les deux artefacts.
  2. Destination — envoi par FTP, extraction sur place, mise à jour du wp-config.php avec les identifiants cibles, puis import du .sql.
  3. Finalisation — remplacement d'URL sérialisation-safe, et suppression de l'agent et des fichiers temporaires des deux côtés.

À la fin, ouvrez https://nouveau-domaine.com/wp-login.php : vos identifiants WordPress sont inchangés, la base étant identique.

Prêt à essayer ? Téléchargez le CLI ou le plugin WordPress.