Migration des wikis
De Wicri Base 1.28
Cette page est un recueil de notes pour la migration des wikis.
Sommaire
Variables shell
Les variables shell sont à définir dans la page Projets:Installation de chaque wiki concerné.
Voici ici quelques exemples.
WIKI=http://ticri.univ-lorraine.fr/wicri-base.de
WIKI=http://ticri.univ-lorraine.fr/wicri.de
WIKI=http://ticri.univ-lorraine.fr/wicri-europa.de
WIKI=http://ticri.univ-lorraine.fr/wicri-base.pt
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/de
WIKI=http://ticri.univ-lorraine.fr/wicri-music.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Musique/en
WIKI=http://ticri.univ-lorraine.fr/wicri-meta.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Meta/en
WIKI=http://ticri.univ-lorraine.fr/wicri-saarland.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/Allemagne/Sarre/en
WIKI=http://ticri.univ-lorraine.fr/wicri-lor.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/France/Lorraine/en
WIKI=http://ticri.univ-lorraine.fr/wicri-france.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/France/en
WIKI=http://ticri.univ-lorraine.fr/wicri-gr.de
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/GrandeRegion/de
WIKI=http://ticri.univ-lorraine.fr/wicri-gr.en
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Europe/GrandeRegion/en
WIKI=http://ticri.univ-lorraine.fr/wicri-asie.fr
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Asie/fr
WIKI=http://ticri.univ-lorraine.fr/wicri-meta.fr
WIKI_TARGET=https://lorexplor.istex.fr/Wicri/Meta/fr
Vérifications
Pour obtenir la liste des espaces de nom.
curl "$WIKI/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml" | SxmlIndent
curl "$WIKI_TARGET/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml" | SxmlIndent
Pour obtenir la liste des pages de l'espace principal (en fait si elle dépasse 500)
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | wc
Les modèles
Pour les wikis anglais
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > templateOld
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > templateTarget
diff templateOld templateTarget | grep "<" | cut -b 2-
Pour les wikis français
Modèles à recopier
Modèle:Wicri thématique voir laboratoire Modèle:Wicri thématique voir laboratoire/sémantique Modèle:Wicri thématique voir personne Modèle:Wicri thématique voir personne/sémantique Modèle:Wicri thématique voir revue Modèle:Wicri thématique voir revue/sémantique Modèle:Wicri thématique voir région Modèle:Wicri thématique voir région/sémantique Modèle:Wicri thématique voir université Modèle:Wicri thématique voir université/sémantique Modèle:Wicri thématique voir ville Modèle:Wicri thématique voir ville/sémantique Modèle:Infobox Organisme Modèle:Nowrap begin Modèle:Nowrap end
Modèle:Infobox sémantique manifestation extensions Modèle:Infobox sémantique personne extensions Modèle:Infobox sémantique université extensions Modèle:Accès géographique
Modèle:Logo Wicri Rhénanie-Palatinat
Comparaisons
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apfrom=F&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apfrom=P&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
) | sort -u > modeleOld
(
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apfrom=F&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apfrom=P&apnamespace=10" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
) | sort -u > modeleTarget
diff modeleOld modeleTarget | grep "<"
diff modeleOld modeleTarget | grep "<" | cut -b 2-
Modèles à éviter de recopier
cat <<... >modeleNoCopy
Modèle:Job queue
Modèle:Documentation modèle
Modèle:Documentation modèle compliqué en sous-page
Modèle:Documentation modèle compliqué en sous-page/Documentation
Modèle:Documentation modèle en sous-page
Modèle:Documentation modèle utilisant les ParserFunctions en sous-page
Modèle:Modèle utilisant les ParserFunctions
Modèle:Modèle utilisant les ParserFunctions/Documentation
Modèle:Doc modèle
Modèle:Doc modèle/Documentation
Modèle:Liste éléments/1 espace
...
cat modeleNoCopy modeleTarget | sort -u > modeleTargetCorrige
diff modeleOld modeleTargetCorrige | grep "<" | cut -b 2- > modeles
Pour comparer des listes
diff modeleSemNew modeleSemOld | grep ">" | cut -b 3- | grep "Modèle:" | SxmlSelect -p " [[@1]]"
diff modeleSemNew modeleSemOld | grep ">" | cut -b 3- | grep "Attribut:" | SxmlSelect -p " [[@1]]"
diff modeleSemNew modeleSemOld | grep ">" | cut -b 3- | grep "Catégorie:" | SxmlSelect -p " [[:@1]]"
Les catégories
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=14" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > categoriesOld
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=14" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > categoriesTarget
diff categoriesOld categoriesTarget | grep "<"
diff categoriesOld categoriesTarget | grep "<" | cut -b 2-
Les attributs
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=102" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > attOld
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500&apnamespace=102" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > attTarget
diff attOld attTarget | grep "<"
diff attOld attTarget | grep "<" | cut -b 2-
Suite à améliorer
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=1" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=2" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=3" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=4" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=5" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=8" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=9" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=6" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=7" 2>/dev/null
)|SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=11" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=12" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=13" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=15" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=103" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=104" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=105" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=106" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=107" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=108" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=109" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=500" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=501" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
Liste de pages
Wiki moyen
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI/api.php?action=query&list=allpages&format=xml&apfrom=r&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
) | sort -u > pages
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI/api.php?action=query&list=allpages&format=xml&apfrom=l&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
curl "$WIKI/api.php?action=query&list=allpages&format=xml&apfrom=r&aplimit=500" \
2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1
) | sort -u > pages
Pour comparer
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=500" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > pagesOld
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=500" 2>/dev/null |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 | sort -u > pagesTarget
diff pagesOld pagesTarget | grep "<"
diff pagesOld pagesTarget | grep "<" | cut -b 2-
Pour les images
curl "http://ticri.univ-lorraine.fr/wicri.pool/api.php?action=query&list=allimages&ailimit=5&aifrom=COLLN&aiprop=url&format=xml" |SxmlIndent
curl "http://ticri.univ-lorraine.fr/wicri.pool/api.php?action=query&list=allimages&ailimit=50&aifrom=COLLN&aiprop=url&format=xml" 2>/dev/null | SxmlSelect -s api/query/allimages/img/attribute::url -p @s1
curl "$WIKI/api.php?action=query&list=allimages&ailimit=50&aiprop=url&format=xml" |SxmlIndent
curl "$WIKI/api.php?action=query&list=allimages&ailimit=50&aiprop=url&format=xml" | SxmlSelect -s api/query/allimages/img/attribute::url -p @s1
Espace Wicri
(
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=500" 2>/dev/null
curl "$WIKI/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=501" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 > wicriNamespaceOld
(
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=900" 2>/dev/null
curl "$WIKI_TARGET/api.php?action=query&list=allpages&format=xml&aplimit=100&apnamespace=901" 2>/dev/null
) |SxmlSelect -s api/query/allpages/p/attribute::title -p @s1 > wicriNamespaceTarget
Via l'API
Pages complètes
php dumpBackup.php --full --filter=namespace:0 > ../../FTP/mainFull.xml
wget http://ticri.univ-lorraine.fr/Wicri/France/FTP/mainFull.xml
php importDump.php ../../FTP/mainFull.xml
php rebuildrecentchanges.php
php initSiteStats.php --update
Pages courantes
php dumpBackup.php --current --filter=namespace:0 > ../../FTP/mainCurrent.xml
wget http://ticri.univ-lorraine.fr/Wicri/France/FTP/mainCurrent.xml
php
php rebuildrecentchanges.php
php initSiteStats.php --update
Toutes les pages complètes
Wiki fr
php maintenance/dumpBackup.php --full > ../FTP/fr/allFull.xml
php maintenance/importDump.php ../FTP/fr/allFull.xml
php maintenance/rebuildrecentchanges.php
php maintenance/initSiteStats.php --update
Wiki priv
php maintenance/dumpBackup.php --full > ../FTP/priv/allFull.xml
php maintenance/importDump.php ../FTP/priv/allFull.xml
php maintenance/rebuildrecentchanges.php
php maintenance/initSiteStats.php --update
Images
Les images
- Sur site de départ
mkdir FTP/fr/images
cp -r fr/images/a FTP/fr/images/.
cp -r fr/images/b FTP/fr/images/.
cp -r fr/images/c FTP/fr/images/.
cp -r fr/images/d FTP/fr/images/.
cp -r fr/images/e FTP/fr/images/.
cp -r fr/images/f FTP/fr/images/.
cp -r fr/images/0 FTP/fr/images/.
cp -r fr/images/1 FTP/fr/images/.
cp -r fr/images/2 FTP/fr/images/.
cp -r fr/images/3 FTP/fr/images/.
cp -r fr/images/4 FTP/fr/images/.
cp -r fr/images/5 FTP/fr/images/.
cp -r fr/images/6 FTP/fr/images/.
cp -r fr/images/7 FTP/fr/images/.
cp -r fr/images/8 FTP/fr/images/.
cp -r fr/images/9 FTP/fr/images/.
cd FTP/fr
tar -cvf images.tar images
;Pour un wiki privé:
cp -r priv/images/a FTP/priv/images/.
cp -r priv/images/b FTP/priv/images/.
cp -r priv/images/c FTP/priv/images/.
cp -r priv/images/d FTP/priv/images/.
cp -r priv/images/e FTP/priv/images/.
cp -r priv/images/f FTP/priv/images/.
cp -r priv/images/0 FTP/priv/images/.
cp -r priv/images/1 FTP/priv/images/.
cp -r priv/images/2 FTP/priv/images/.
cp -r priv/images/3 FTP/priv/images/.
cp -r priv/images/4 FTP/priv/images/.
cp -r priv/images/5 FTP/priv/images/.
cp -r priv/images/6 FTP/priv/images/.
cp -r priv/images/7 FTP/priv/images/.
cp -r priv/images/8 FTP/priv/images/.
cp -r priv/images/9 FTP/priv/images/.
- Sur cite cible
cd FTP
wget http://ticri.univ-lorraine.fr/Wicri/Ticri/FTP/images.tar
tar -xvf images.tar
mkdir files
cp images/*/*/* files/.
cd ../fr
php maintenance/importImages.php ../FTP/files
sudo chown -R www-data images/*
sudo chgrp -R www-data images/*