Manuel:ImportDump.php
Fichier MediaWiki : importDump.php | |
---|---|
Emplacement : | maintenance/ |
Code source : | master • 1.42.1 • 1.41.2 • 1.39.8 |
Classes : | BackupReader |
- Les méthodes recommandées ici sont à usage général mais lentes avec des ensembles de données de grande taille. Voir la section sur l'import de grands wikis ci-dessous.
Le fichier importDump.php est un script de maintenance pour importer les fichiers des dumps XML dans le wiki actuel. Il lit les pages à partir d'un fichier XML tel qu'il est produit par Special:Export ou dumpBackup.php , et les sauvegarde dans le wiki actuel. Il fait partie des scripts de maintenance de MediaWiki et se trouve dans le dossier de maintenance de votre installation MediaWiki.
Description des opérations
Le script indique la progression de l'exécution par incrément de 100 pages (valeur par défaut), en affichant le nombre de pages et de révisions importées par seconde pour chaque incrément, afin que vous puissiez suivre l'activité et voir qu'il n'y a pas de blocage. Peut pendre 30 secondes ou plus entre chaque incrément.
Le script est robuste car il saute les pages qui ont déjà été chargées précédemment plutôt que de les réécrire, il peut ainsi reprendre très rapidement là où il a été interrompu. Il affiche encore la progression en faisant cela, ce qui permet d'avancer assez vite.
Les pages seront importées en conservant l'horodatage de chaque modification. A cause de cette fonctionnalité, si une page importée est plus ancienne que la page existante, seule l'historique de la page sera remplie mais la nouvelle version ne sera pas remplacée par l'ancienne. Si ce comportement n'est pas souhaité, il faut d'abord supprimer les pages existantes avant d'importer, ou les modifier de sorte à revenir à la dernière version importée signalée dans l'historique.
Le wiki reste utilisable durant l'import.
Le wiki semble désorganisé et il manque la plupart des modèles; pratiquement tous les liens sont en rouge mais la situation s'améliore au fil de la progression des imports.
Exemples
Si vous avez un accès au shell, vous pouvez appeler importdump.php à partir de votre répertoire de maintenance ainsi (ajoutez les chemins si nécessaire) :
php importDump.php --conf ../LocalSettings.php /path_to/dumpfile.xml.gz --username-prefix=""
ou ceci :
php importDump.php < dumpfile.xml
où dumpfile.xml
est le nom du fichier de dump XML.
Si le fichier est compressé et a pour extension .gz
ou .bz2
(mais pas .tar.gz
ni .tar.bz2
), il se décompresse automatiquement.
--username-prefix=""
quand vous importerez les fichiers.Puis utilisez ImportImages.php pour importer les images :
php importImages.php ../path_to/images
--no-updates
pour accélérer l'import. Notez aussi que l'information dans Import à propos de la fusion des historiques, etc. s'applique aussi.Après importDump.php, vous pouvez exécuter rebuildrecentchanges.php pour mettre à jour le contenu de la page Special:Recentchanges.
Si vous avez importé un dump avec le paramètre --no-updates
, vous devrez exécuter rebuildall.php pour initialiser tous les liens, les modèles et les catégories.
Options
Option/Paramètre | Description |
---|---|
--report | Rapporte la position et la vitesse après avoir traité n pages. |
--namespaces | Importe uniquement les pages à partir des espaces de noms présents dans la liste et dont les noms sont séparés par des barres verticales '|', ou des indexes d'espaces de noms. |
--dry-run | Analyse le dump sans importer les pages pour l'instant. |
--debug | Fournit en sortie les informations de débogage supplémentaires |
--uploads | Traite les données des fichiers téléversés si elles sont incluses (expérimental). |
--no-updates | Désactive les mises à jour dans la table des liens. C'est plus rapide mais ça laisse le wiki dans un état incohérent. Exécutez rebuildall.php après l'import pour corriger la table des liens. |
--image-base-path | Importe les fichiers à partir d'un chemin donné. |
--skip-to | Commence avec le numéro de page fourni, en sautant les n-1 premières pages. |
--username-prefix | Ajoute un préfixe aux noms d'utilisateurs. A cause de ce bogue il peut être nécessaire d'utiliser --username-prefix="" quand vous importez des fichiers.
|
FAQ
Comment passer en mode debug ?
Utiliser l'option --debug
dans la commande en ligne
Comment faire un essais à vide (sans données dans la base) ?
Utiliser l'option --dry-run
dans la commande en ligne
Messages d'erreur
Erreur à l'ouverture du flux
Si vous obtenez l'erreur « failed to open stream: No such file or directory », vérifiez que le fichier en question existe bien et que PHP a le droit d'y accéder.
Erreur à l'exécution de importImages
Entré
roots@hello:~# php importImages.php /maps gif bmp PNG JPG GIF BMP
Erreur
> PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0 > Could not open input file: importImages.php
Cause
Avant d'exécuter importImages.php vous devez d'abord vous placer dans le répertoire maintenance dans lequel ce script se trouve.
Erreur à l'exécution de MAMP
DB connection error: No such file or directory (localhost)
Solution
Utiliser les informations de connexion spécifiques à la base de données
$wgDBserver = "localhost:/Applications/MAMP/tmp/mysql/mysql.sock";
$wgDBadminuser = "XXXX";
$wgDBadminpassword = "XXXX";
Importer la Wikipedia anglophone ou d'autres wikis de grande taille
Pour les fichiers de données très grands, importDump.php peut prendre beaucoup de temps (des jours voire des semaines); il existe des méthodes alternatives plus rapides si vous voulez restaurer un site complet, voir Manuel:Importer les dumps XML .
Si les autres méthodes ne fonctionnent pas, voici des pistes pour utiliser importDump.php pour importer les gros wikis afin de réduire au maximum le temps d'attente...
Parallèliser les imports
Vous pouvez essayer d'exécuter importDump.php plusieurs fois simultanément à partir du même dump en utilisant l'option --skip-to
...
Lors d'un essai sous Ubuntu, le script a été lancé plusieurs fois simultanément (sur le même dump décompressé) dans des fenêtres séparées en utilisant l'option --skip-to
.
Avec un laptop à 4 coeurs, l'éxécution du script dans 4 fenêtres séparées a accéléré l'import d'un facteur 4.
Dans l'expérience, le paramètre --skip-to
a été mis à 250 000
pour avoir 1 000 000
pages par instance, et l'import a été suivi (vérifié régulièrement), pour arrêter chaque instance avant de mettre en cache la suivante.
Note : Cette expérience n'a pas été faite en lançant plusieurs instances sans le paramètre --skip-to afin d'éviter un blocage potentiel -- si vous faites ceci sans utiliser --skip-to
, ou que vous laissez les instances interagir entre elles, veuillez fournir vos résultats et commentaires sur la page de discussion.
Dans cette expérience 2 des fenêtres on interagit sans fournir d'erreur.
Les instances du script ont semblé chacune revenir en arrière.
Avec --skip-to
la situation est différente du cas habituel; les incréments de progression ne sont pas affichés durant les sauts mais le curseur clignote simplement.
Après quelques minutes, le rapport de progression commence à s'afficher.
Segmenter les données
Il est peut être intéressant de segmenter les donnée d'abord avec un splitter xml, avant de les importer en parallèle. Puis exécuter importDump.php sur chacun des segments dans une fenêtre séparée, afin d'éviter les effets de bord potentiels. (si vous êtes parvenu à segmenter le dump de sorte à ce qu'ils suive ce processus indiquez le svp sur la page de discussion).
Importer d'abord les espaces de noms les plus utiles
Pour accélérer l'import des parties les plus importantes du wiki, utilisez le paramètre --namespaces
.
Importer les modèles en premier car les articles sans modèle opérationnel ont une mise en page horrible.
Importez ensuite les articles.
Ou faites les deux simultanément dans différentes fenêtres tel qu'il est dit ci-dessus, en commençant d'abord par les modèles car ils se chargent plus vite et n'interagissent pas avec la, ou les fenêtres des articles.
Note : l'espace de noms Main n'a pas de préfixe, il doit donc être spécifié en utilisant un 0
.
Main et Article échouent durant l'exécution en renvoyant des erreurs.
Une fois terminé, il faut repasser importDump.php
à nouveau pour avoir les pages des autres espaces de noms.
Estimer le temps d'exécution
Avant de pouvoir estimer le temps que va durer un import, il vous faut connaître le nombre total de pages contenues dans le wiki à importer. Ceci est affiché sur Special:Statistics dans chaque wiki. Depuis octobre 2023, la Wikipedia anglophone possède plus de 59 000 000 pages, y compris les pages de tout type telles que les pages de discussion, les redirections, etc. mais sans compter les fichiers d'images (files).
Pour voir la vitesse de progression de l'import, aller sur la page Special:Statistics du wiki de réception. Notez l'heure et le nombre total de pages. Puis revenez plus tard et notez de combien ce numéro a changé. Convertissez cela en pages par jour, puis divisez le nombre total de pages du wiki à importer par ce nombre, pour estimer le nombre de jours qu'il vous faudra.
Par exemple dans l'expérience ci-dessus, l'import en utilisant le parallèlisme pour un nombre total de pages de trouvé dans Special:Statistics, fait que le wiki augmente d'environ 1 000 000 pages par jour. C'est pourquoi il faudra environ 59 jours à cette vitesse pour importer les 59 000 000 pages (situation en octobre 2023) de la Wikipedia anglophone (sans compter les images).
Notes
Depuis MediaWiki 1.29 (tâche T144600), importDump.php ne met plus à jour les statistiques. Il vous faudra exécuter manuellement initSiteStats.php après l'import, pour mettre à jour les compteurs de page et de version.
Résolution des problèmes
Voir aussi : Problèmes communs liés à l'import des dumps
Si des erreurs apparaissent quand vous importez les fichiers, il peut être nécessaire d'utiliser l'option --username-prefix
.
Voir aussi
- importer les dumps XML - autres méthodes d'import.
- Manuel:DumpBackup.php - instructions pour créer un dump.