Migration des wikis

De Wicri Base 1.28

Cette page est un recueil de notes pour la migration des wikis.

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/*