Credit : Logo officiel
Migrer un petit site WordPress avec BackWPup
Migrer un petit site WordPress avec BackWPup
Un classique au support : un client veut quitter son ancien hébergeur (souvent à cause de tarifs qui ont augmenté ou de performances décevantes) pour basculer sur IONOS. Petit site WordPress, blog perso ou vitrine d'artisan, environ 200 à 500 Mo total avec les médias. Pas d'accès SSH côté ancien hébergeur (mutualisé entrée de gamme), pas de WP-CLI disponible, pas de moyen de faire un rsync. Il faut une méthode qui marche avec uniquement FTP et phpMyAdmin.
La réponse depuis des années, pour ce profil de site, c'est BackWPup. Plugin gratuit, installé en 30 secondes, qui fait un export complet du site (fichiers + base) que tu peux ensuite restaurer côté destination. Voici la procédure exacte que j'utilise au support quand un nouveau client arrive avec ce besoin.
Quand cette méthode est adaptée (et quand elle ne l'est pas)
Avant de te lancer, vérifie que ton cas correspond.
Cette méthode convient si :
- Le site fait moins de 500 Mo total (médias compris)
- La base de données fait moins de 50 Mo dump compressé
- Tu n'as pas accès SSH ni WP-CLI sur la source ou la destination
- Le site n'a pas de transactions e-commerce en cours pendant la migration (sinon prévoir une fenêtre de maintenance)
- Tu peux te permettre 30 minutes à 2 heures de coupure pendant le basculement DNS
- WordPress version 6.0 ou supérieure, PHP 7.4 minimum (idéalement 8.3)
Cette méthode n'est pas adaptée si :
- Le site fait plus de 1 Go, là il faut passer par rsync via SSH ou un plugin de migration cloud (UpdraftPlus avec stockage S3)
- WooCommerce avec commandes en cours, abonnements actifs, paniers en session
- Multisite WordPress (procédure différente, plus complexe)
- Plus de 50 000 articles ou 100 000 commentaires (la base devient trop lourde pour phpMyAdmin)
Pour les gros sites, j'écrirai un autre article sur la migration avec mysqldump + rsync via SSH. Là on reste sur le cas du petit site sans tooling avancé.
Préparer la destination IONOS
Avant même de toucher au site source, prépare l'environnement de destination. C'est ce que les clients oublient le plus souvent et ça fait perdre une heure plus tard.
Créer la base de données
Dans ton espace client IONOS, va dans Hébergement > Bases de données MySQL > Créer une base de données. Note précieusement :
- Nom de la base (genre
dbs1234567) - Utilisateur (genre
dbu1234567) - Mot de passe que tu choisis
- Hôte (genre
db5004789543.hosting-data.io) — ATTENTION ce n'est PASlocalhostchez IONOS
Vérifier la version PHP
IONOS propose PHP 8.3 par défaut sur les nouveaux hébergements. Vérifie dans Hébergement > Versions PHP que tu es bien en 8.3 ou 8.2 minimum. Si le site source tourne sur PHP 7.4 ou 8.0, tu peux avoir des incompatibilités de plugins après migration.
Préparer le DNS
Si tu vas changer le domaine en même temps, OK. Si tu gardes le même domaine, prépare la zone DNS : tu modifieras les A et AAAA pour pointer vers IONOS au moment du basculement final.
Étape 1 : sauvegarder le site source avec BackWPup
Connecte-toi à wp-admin du site source. Va dans Extensions > Ajouter et installe BackWPup. Active.
Configuration de la tâche
BackWPup > Ajouter une nouvelle tâche :
- Nom de la tâche :
Migration vers IONOS - Type de tâche : coche
- Sauvegarde de la base de données
- Sauvegarder les fichiers
- Sauvegarde des plugins installés WordPress XML export (optionnel)
- Format archive :
Zip(ouTar GZipsi activé sur l'hébergement) - Destination :
Sauvegarde vers le dossier - Sauvegarder la configuration
Lancer la sauvegarde
Clique sur Lancer maintenant. Pour un site de 300 Mo, compte 5 à 15 minutes selon les performances de l'hébergement. Pendant ce temps, BackWPup affiche une barre de progression. Surveille les éventuelles erreurs (timeout PHP, manque de mémoire).
Une fois terminé, va dans BackWPup > Sauvegardes. Tu vois ton fichier ZIP avec un nom du genre backwpup_xxxx_2026-04-22_08-15-23.zip. Télécharge-le sur ton PC.
Que contient ce ZIP ?
Le ZIP contient :
- Tous les fichiers WordPress (
wp-admin,wp-includes,wp-content,index.php,.htaccess) - Le
wp-config.phporiginal (à modifier après restauration) - Un dump SQL de la base (
database.sqlou nommé selon la config) - Un fichier
manifest.jsonavec les métadonnées de la sauvegarde
Étape 2 : exporter la base proprement
Même si BackWPup inclut un dump dans le ZIP, je préfère systématiquement faire un export séparé via phpMyAdmin. Pourquoi ? Parce que :
- Le dump BackWPup peut avoir des soucis de format SQL selon la version du plugin
- Tu peux contrôler précisément les options d'export (DROP TABLE, charset, etc.)
- En cas de souci, tu as un deuxième fichier de référence
Procédure phpMyAdmin
- Connexion à phpMyAdmin de l'hébergement source
- Sélectionne la base WordPress dans le menu de gauche
- Onglet Exporter
- Méthode : Personnalisée — afficher toutes les options
- Sélectionne toutes les tables
- Format : SQL
- Options à cocher absolument :
Ajouter une instruction DROP TABLE / VIEW / PROCEDURE(case cochée)Ajouter AUTO_INCREMENT(cochée)Encadrer les noms de tables et colonnes par des guillemets obliques
- Encodage :
utf-8 - Compression :
zippési la base fait plus de 10 Mo - Exécuter
Tu obtiens un fichier nom_de_base.sql ou .sql.zip. Garde-le précieusement.
Étape 3 : transférer les fichiers via FTP
Décompresse le ZIP BackWPup sur ton PC. Tu obtiens une arborescence WordPress complète.
Connecte-toi en FTP/SFTP à l'hébergement IONOS de destination avec un client comme FileZilla ou WinSCP. Les credentials FTP sont dans Hébergement > Accès SFTP dans ton espace IONOS.
Le répertoire racine web sur IONOS est généralement /htdocs/ ou /clickandbuilds/WordPress/... selon le pack souscrit. Vérifie dans la doc IONOS.
Upload progressif
Pour un upload de 300 Mo via FTP, compte 30 minutes à 2 heures selon ta connexion. Conseil : commence par les dossiers les plus critiques (wp-admin, wp-includes) puis wp-content/themes et wp-content/plugins, et finis par wp-content/uploads qui est généralement le plus lourd.
En cas de coupure FTP, FileZilla et WinSCP supportent la reprise de transfert : relance, ils continuent là où ils s'étaient arrêtés.
Permissions à vérifier
Une fois l'upload terminé, vérifie côté IONOS que les permissions sont correctes :
- Dossiers :
755 - Fichiers :
644 wp-config.php:600ou640(plus restrictif)
Dans FileZilla, clic-droit sur un fichier > Permissions de fichier.
Étape 4 : importer la base sur IONOS
Dans phpMyAdmin de destination IONOS :
- Sélectionne la base que tu as créée plus tôt (
dbs1234567) - Onglet Importer
- Sélectionne le fichier
.sqlou.sql.zip - Format :
SQL - Exécuter
Quand le fichier est trop gros
IONOS limite l'import phpMyAdmin à 128 Mo sur les hébergements standard. Si ton fichier dépasse, deux options :
Option A : BigDump
C'est un script PHP qui découpe l'import en chunks. Télécharge sur ozerov.de/bigdump/, configure les credentials de la base dans bigdump.php, upload le script ET ton fichier SQL via FTP, puis lance https://exemple.fr/bigdump.php dans le navigateur.
Option B : importer table par table
Dans phpMyAdmin, exporte chaque grosse table séparément (typiquement wp_posts, wp_postmeta, wp_options, wp_comments), puis importe-les individuellement.
Étape 5 : modifier wp-config.php
Par FTP, ouvre wp-config.php à la racine et modifie les credentials de base :
define('DB_NAME', 'dbs1234567');
define('DB_USER', 'dbu1234567');
define('DB_PASSWORD', 'TonMdpQueTuAsNote');
define('DB_HOST', 'db5004789543.hosting-data.io');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
Le piège classique IONOS : DB_HOST n'est jamais localhost. C'est toujours un hostname spécifique de la forme dbXXXXXXXXX.hosting-data.io. Si tu mets localhost, tu auras Error establishing a database connection immédiatement.
Vérifie aussi le table prefix :
$table_prefix = 'wp_';
Si le site source utilisait un préfixe custom (par exemple wpx7_), garde le même ici. Le préfixe doit correspondre aux tables que tu viens d'importer, sinon WordPress ne trouve rien.
Profiter pour ajouter les sels de sécurité
Génère de nouveaux sels sur api.wordpress.org/secret-key/1.1/salt/ et remplace les huit constantes AUTH_KEY, SECURE_AUTH_KEY, etc. dans wp-config.php. Ça invalide toutes les sessions actives, ce qui est sain après une migration.
Étape 6 : mettre à jour les URLs si tu changes de domaine
Si tu gardes le même nom de domaine, saute cette étape. Sinon, c'est l'étape la plus délicate de toute la migration.
URLs principales
Dans phpMyAdmin :
UPDATE wp_options SET option_value = 'https://nouveau-domaine.fr' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://nouveau-domaine.fr' WHERE option_name = 'home';
Ça permet déjà de te connecter au back-office.
URLs partout dans le contenu
Les anciennes URLs sont partout : dans les articles, les pages, les widgets, les options de plugins. Une simple commande SQL UPDATE ne suffit pas parce que certaines données sont sérialisées (par exemple les options de thèmes ou de plugins) et un remplacement bête casse la sérialisation.
La bonne méthode : utiliser le plugin Better Search Replace (gratuit, dispo dans le repo officiel).
- Connecte-toi au back-office
- Extensions > Ajouter > Better Search Replace
- Outils > Better Search Replace
- Rechercher :
https://ancien-domaine.fr - Remplacer par :
https://nouveau-domaine.fr - Sélectionne toutes les tables
- Décoche "Run as dry run?" (tu as déjà fait un backup)
- Lance
Refais ensuite avec les variantes :
http://ancien-domaine.fr→https://nouveau-domaine.fr//ancien-domaine.fr→//nouveau-domaine.francien-domaine.fr→nouveau-domaine.fr(sans protocole, en dernier)
Étape 7 : basculer le DNS
Dernière étape, le moment de vérité.
Dans la zone DNS de ton domaine (chez ton registrar, qui peut être différent de l'hébergeur) :
- Modifie le A record vers l'IP IONOS de ton hébergement
- Modifie le AAAA record vers l'IPv6 IONOS si présent
- Pour les sous-domaines (
www), même chose - Pense au MX record si tu héberges aussi le mail
Le TTL DNS détermine combien de temps les anciens enregistrements restent en cache. Si tu peux, baisse le TTL à 300 secondes (5 minutes) 24h avant la migration, pour que le basculement soit rapide.
Vérifications finales
Une fois le DNS propagé (vérifie avec dig nouveau-domaine.fr ou whatsmydns.net) :
- Page d'accueil s'affiche correctement
- Images chargent bien depuis
/wp-content/uploads/ - Connexion back-office fonctionne
- Liens internes mènent au nouveau domaine, pas à l'ancien
- Permaliens : va dans Réglages > Permaliens et Enregistre (ça régénère le
.htaccess) - Formulaires envoient bien les emails (teste un Contact Form 7)
- Plugins critiques (WooCommerce, Yoast SEO) sans erreur
Erreurs courantes et leur fix
Erreur 1 : Error establishing a database connection
Dans 95% des cas : DB_HOST est resté localhost au lieu du hostname IONOS. Ouvre wp-config.php par FTP, corrige.
Erreur 2 : Erreur 500 après import
Souvent un plugin ou un thème incompatible avec la version PHP de destination. Désactive tous les plugins via FTP en renommant le dossier wp-content/plugins en plugins.bak. Si ça remarche, réactive les plugins un par un pour identifier le coupable.
Erreur 3 : images cassées
Le dossier wp-content/uploads n'a pas été uploadé entièrement. Vérifie par FTP que le dossier existe et contient bien la même structure de sous-dossiers 2018/01/, 2018/02/ etc. que la source.
Erreur 4 : connexion admin qui boucle
Cookies WordPress liés à l'ancien domaine. Vide les cookies de ton navigateur, ou utilise une navigation privée pour te reconnecter.
Erreur 5 : caractères spéciaux remplacés par des points d'interrogation
Problème de charset à l'import. Le dump était en latin1 ou utf8 non-mb4. Refais l'export en forçant utf8mb4 dans phpMyAdmin, et vérifie que wp-config.php contient bien define('DB_CHARSET', 'utf8mb4');.
Pour aller plus loin
La migration WordPress c'est tout un sujet. Voici les ressources connexes que je recommande :
- Migrer un site WordPress sans temps d'arrêt
- Sauvegarder et restaurer une base MySQL
- WordPress : changer de domaine avec WP-CLI
- Convertir le charset MySQL en utf8mb4
- Automatiser les backups avec Bash et cron
Le réflexe à toujours avoir : tester avant de basculer le DNS
Le truc qui sauve la mise : avant de toucher au DNS, vérifie que ton site fonctionne sur IONOS avec une URL temporaire ou un fichier hosts local.
IONOS propose souvent une URL de prévisualisation du type s123456789.online.de ou similaire le temps que ton domaine pointe. Sinon modifie ton fichier hosts local (/etc/hosts sous Linux/Mac, C:\Windows\System32\drivers\etc\hosts sous Windows) pour faire pointer ton domaine vers l'IP IONOS, uniquement sur ta machine, le temps de tester.
Comme ça tu peux valider tout (connexion admin, affichage, formulaires, paiements) avant de basculer le DNS pour le monde entier. Si quelque chose cloche, tu corriges sans pression. Une fois que tout est validé, tu changes le DNS et la transition est invisible pour les visiteurs.
C'est cette approche qui fait la différence entre une migration stressante et une migration calme. Et après quelques dizaines de migrations, tu finis par avoir une checklist tellement rodée que tu peux migrer un petit WordPress en moins de deux heures, café compris.