Migrer un WordPress par FTP avec le CLI
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
- Les accès FTP de la source et de la destination.
- Une base MySQL vide créée côté destination (via le cPanel).
python3etpipsur votre machine (ou un VPS).
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
$ 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 :
# 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 :
$ 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 :
$ 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
- 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.
- Destination — envoi par FTP, extraction sur place, mise à jour du
wp-config.phpavec les identifiants cibles, puis import du.sql. - 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.