Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Olivier Delhaye,
Nombre de réponses : 11
Nous lisons sur les forums que la duplication de cours par lot n’est pas toujours facile.
Je partage ici quelques pratiques qui ont abouti. Mon témoignage est sûrement moins clair que la doc de Moodle, mais il fournit quelques astuces peut-être bienvenues pour certains d'entre nous.

Moodle 3.3.1 – Theme Boost – Hébergement mutualisé – Accès FTP seulement

 

Étape 1 : Sauvegarde des cours en lot

Suis allé à : http://mon.domaine.eu/admin/settings.php?section=automated

Paramètres importants :

  • Actif : Activée
  • Planification : Aujourd’hui
  • Lancer à : dans 5 minutes  (voir réponse à la question 2 infra)
  • Stockage : Dossier spécifié (sinon, les sauvegardes sont placées - quoi qu'en dise la doc -  chacune dans un répertoire séparé, correspondant au seul cours concerné ; pas pratique pour une action en lot)
  • Enregistrer sous : Chemin d'accès complet du dossier où vous voulez enregistrer les sauvegardes  (voir réponse à la question 1 infra)



Deux questions épineuses se sont posées
au moment de paramétrer la sauvegarde des cours en lot :

1.  Quel est le chemin d’accès complet du dossier-maison où seront enregistrées les sauvegardes ?
Commence-t-il par /home ? par /home2 ? par /var ?

Je l’ai deviné en examinant la valeur attribuée à $CFG->dataroot  dans le fichier config.php situé à la racine de mon Moodle.
Sur mon serveur, par exemple, en lisant la ligne :

$CFG->dataroot  = '/data/sites/web/monCompte/data/moodledata’;

j’ai décidé de créer un répertoire sauvegardes_cours au même niveau que moodledata. Le chemin d’accès complet du dossier où seraient (provisoirement) enregistrées les sauvegardes a donc été :

/data/sites/web/monCompte/data/sauvegardes_cours

2.  Je voulais effectuer la sauvegarde dans les 5 minutes qui viennent mais je ne savais pas quelle heure indiquer : l’heure sur mon serveur était-elle la même que l’heure indiquée sur mon Moodle ?

Suis allé sur : http://mon.domaine.eu/admin/tool/task/schedule_task.php

J’ai lancé n’importe quelle tâche et l’heure du serveur était indiquée dans les premières lignes du rapport qui est apparu :

... started 09:06:25

Suis retourné à : http://mon.domaine.eu/admin/settings.php?section=automated pour y inscrire : 09:10

Le backup a démarré dans les minutes qui ont suivi. Il a duré une douzaine de minutes.

Je pouvais suivre son déroulement d'ici : http://mon.domaine.eu/report/backups/ ou par FTP.

 

Étape 2 : Restauration des cours en lot

Constitution préalable d’un fichier plat CSV

Dans MyPhpAdmin, j’ai lancé la requête

SELECT `id`,`shortname`,`fullname` FROM `mdl_course` WHERE 1

pour obtenir une liste propre des cours à dupliquer.

J’ai d’abord exporté le résultat dans Word (si on l'exporte en CSV, on perd assez incroyablement l’UTF-8) puis j’ai copié-collé le tableau Word dans Excel.

Dans ce tableau, j'ai ajouté une colonne 'summary' pour pouvoir intégrer dans la description de chaque cours une même précision importante : Les contenus de ce cours ont été automatiquement recopiés depuis la version 2016-2017.

J'ai aussi ajouté une colonne 'backupfile' pour indiquer le fameux chemin d'accès complet à chaque sauvegarde de cours. Il a donc fallu modifier le numéro des cours et (hélas !) l'heure de leur restauration dans chaque titre de fichier (voir segments en grasses soulignées dans l'encadré qui suit).

Voici les trois premières lignes du tableau, une fois converti en texte. J’ai préféré le séparateur  ‘ ; ’ parce qu’il y avait des virgules dans certains intitulés de cours :

shortname;fullname;category;summary;backupfile
UB018 (2017-2018);Développement des compétences gnagnagna;Les contenus de ce cours ont été automatiquement recopiés depuis la version 2016-2017.;/data/sites/web/monCompte/data/sauvegardes_cours/sauvegarde-moodle2-course-91-20170821-0910.mbz
UB019 (2017-2018);Initiation au gnagnagna;Les contenus de ce cours ont été automatiquement recopiés depuis la version 2016-2017.;/data/sites/web/monCompte/data/sauvegardes_cours/sauvegarde-moodle2-course-92-20170821-0910.mbz

Durée de la constitution du fichier plat CSV : 15 minutes.


Restauration en lot

J’ai ensuite lancé la restauration : http://mon.domaine.eu /admin/tool/uploadcourse/

  • Insertion du fichier CSV que je venais de préparer.
  • Mode de traitement : Tout créer…
  • Prévisualiser
  • Lancer

Durée de la restauration : 14 minutes

Il ne nous reste plus qu’à créer d’éventuelles nouvelles sous-catégories et d’y faire glisser les cours : http://mon.domaine.eu/course/management.php

 

  __________
(*) Duplication réalisée pour la facilité des fort nombreux enseignants, qui expurgent ensuite tout ce qu’ils souhaitent du cours dupliqué.


Moyenne des évaluations Utile (11)
En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Merci beaucoup Olivier pour ce retour de pratiques très "Utile" ! Oui

La description des étapes est suffisamment claire pour permettre à quelqu'un qui n'est pas un informaticien de les suivre.

À bientôt,
Patrick

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Gilles Le Page,
Avatar Moodleurs particulièrement utiles

Merci Olivier,

je ne sais pas si je vais tenter le coup, mais c'est sympa de partager des tutos aussi complets et concrets !

sourire

Gilles

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Olivier,

Merci beaucoup pour le partage de ce retour d'expérience, et cette documentation pas à pas, qui sera sans nul doute utile à plusieurs personnes.

C'est vraiment appréciable de voir de tels retours, bien présentés, clairs et détaillés sourire

On va pouvoir pointer vers cette discussion pour les prochaines personnes qui auront cette problématique clin d’œil

Séverin

En réponse à Séverin Terrier

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Christian Westphal,
Avatar Moodleurs particulièrement utiles

Très clair, même si je n'en ai pas forcément d'utilité immédiate.

Une suggestion plus générale pour les administrateurs de la partie francophone : ce genre de tutoriels n'est pas vraiment de la documentation,  mais n'est pas non plus idéalement placé dans le forum où il va disparaître plus ou moins vite de la première page. Ne peut on pas envisager une rubrique "trucs et astuces techniques" où ils seraient mieux valorisés ?

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour Olivier,

En ce qui concerne la première partie "Sauvegarde en lots" on peut quasiment l'éviter si on a pris soin de créer un dossier dans moodledata et de le paramétrer comme dossier de sauvegarde automatique journalière. Chez moi c'est un dépôt "système de fichiers". Ainsi il contient toujours les dernières versions des cours et est visible (si je le désire) dans le sélecteur de fichiers de Moodle. C'est pratique pour les restaurations rapides sans avoir à télécharger. Ils sont disponibles et visibles directement.

Pour la restauration en lots je n'ai pas de solution. Toutes me paraissent trop compliquées.

Une sélection multiple dans une liste suivie d'un clic sur un bouton de restauration serait l'idéal.

Daniel

En réponse à Daniel Méthot

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Jérôme DEMIAUX,
Avatar Traducteurs

@Daniel,

le "quasiment" reste important quand le site est actif et le traffic important. Le lancement de la sauvegarde (accompagné d'une mise en maintenance) permet de couvrir les toutes dernières modifications sur le site alors que les sauvegardes journalières peuvent accuser un retard de 23h59.

La restauration en lots reste la seule solution intelligente dès que le nombre de cours dépasse la dizaine. S'effectuant via un simple fichier CSV, elle est relativement simple.

Jérôme.

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs

Super,

J'en suis justement dans cette phase là, ça m’intéresse grandement !

Merci

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Jérôme DEMIAUX,
Avatar Traducteurs

Bonjour,

Quelle bonne idée de partager ses expérimentations, en les détaillant de surcroît.

Je profite donc de l'occasion pour apporter également de petites pierres à l'édifice.

D'abord pour la constitution de la liste des cours. Pour ceux qui ne sont pas à l'aise avec le PHP, ses requêtes, son éditeur ... ou qui n'ont pas accès au serveur, il est possible d'installer une extension tierce nommée "Downloaddata / catégorie Tools " qui rajoute des possibilités notamment dans le menu "administration du site / Cours", dont le téléchargement de la liste des cours accompagnés de leurs paramètres (voir image), le tout suivant le fameux format UTF8 qui va bien (pour autant que l'on utilise OpenOffice plutôt que la suite MS.
Il est alors facile de réemployer ce fichier pour créer non seulement la liste des fichiers à restaurer, mais également la liste des catégories à créer (un autre fichier) afin de restaurer non seulement les cours mais aussi toute la hiérarchie de catégories.
Cette création se fera, en amont, avec un autre petit outil ajouté "uploadcourse category". Attention, la mise à jour de cet utilitaire commence à dater sérieusement.

Je suppose que l'on retrouve des équivalents à ces commandes dans le moosh mais il faut alors avoir accès aux commandes en ligne et ce n'est pas permis à tout le monde.

Jérôme.

Annexe download.png
Annexe leFichier.png
Moyenne des évaluations Utile (2)
En réponse à Jérôme DEMIAUX

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Olivier Delhaye,

@jérôme

> le tout suivant le fameux format UTF8 qui va bien (pour autant que l'on utilise OpenOffice plutôt que la suite MS

J'y avais pas pensé. Excellente info ! cœur

En réponse à Olivier Delhaye

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Bruno Malaval,
Avatar Moodleurs particulièrement utiles

Bonjour,

J'ai également fait une migration de ma plateforme cet été, et testé pas mal de choses, puisque les conditions étaient :

  • Changer de serveur
  • Partir d'un Moodle vierge et réaliser l'importation des cours sélectionnés par les enseignants
    (env. 1500 cours sur la nouvelle plateforme contre 2500 sur l'ancienne)
  • Problème principal : conserver les méthodes d'inscription (y compris les cohortes) et les données de cours (données utilisateurs)
Il a fallut pas mal d'interventions dans la base, des scripts, etc .. pour arriver à cela. Un peu (beaucoup) galère pour y arriver.

Je ne détaille pas la procédure que j'ai utilisé, je ne conseille pas vraiment, trop lourd.
Mais juste quelques remarques que j'ai pu noter sur l'importation de cours (dans le cadre d'un changement de serveur)

  • import des cours par moosh / restauration par lots
    - la restauration par lots ne prend en compte que le contenu du cours (pas les inscriptions , ni les données utilisateurs)
    - moosh importe le cours avec les utilisateurs et les données
      Si l’utilisateur n'existe pas sur la nouvelle plateforme, le compte est créé en compte manuel, et donc le mot de passe change
    Il a donc fallut repasser les comptes en mode LDAP/CAS (je l'ai fait par une requête dans la bdd)
    Pour les comptes manuels, il est possible (toujours par requête) de recopier la chaîne password de l'ancienne table user dans la nouvelle, cela fonctionne.
  • Problèmes également sur les alias et fichiers personnels :
    Dans mon cas, les documents de cours sous forme d'alias n'ont pas pu être récupérés tels quels.
    Il a fallut remettre tous les alias un par un

    De même pour les fichiers personnels, nous avons mis en place une page pour que chaque utilisateur puisse récupérer ses fichiers personnels
    En augmentant temporairement la taille des fichiers déposés, afin qu'ils puissent déposer un zip conséquent
  • Arborescence des catégories
    Dans ce cas, moosh fonctionne très bien
    Il dispose de 2 commandes (category-export et category-import) qui permet de recréer facilement toute l'arborescence
    Par contre, les id de category ne sont pas conservés

Depuis 10 ans que nous avons Moodle, c'est la première fois que je le fais sous cette forme, je pense qu'il y aura bien à nouveau 10 ans avant que je recommence ... grand sourire

Bruno
Moyenne des évaluations Utile (2)
En réponse à Bruno Malaval

Re: Rentrée : Comment j’ai dupliqué 86 cours de l’année passée en moins de 45 minutes *

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

Bonjour

Ayant déjà pratiqué cette remise en lot de cours depuis une sauvegarde (https://moodle.org/mod/forum/discuss.php?d=267831#p1156769, https://moodle.org/mod/forum/discuss.php?d=268471), je ne peux qu'appuyer ces retours détaillés et illustrés ô combien utiles à la communauté.

Ça "risque" fort de se retrouver dans ce recueil de bonnes pratiques que je vais commencer à constituer cette année suite à l'engouement au dernier moodlemoot...

Peut-être une section "problématique de sauvegarde et de restauration" (https://moodle.org/mod/forum/discuss.php?d=356927#p1439890), à voir...