Merci de fournir ce guide et ce script d’importation ! Je l’ai utilisé avec succès avec un groupe Google, en utilisant Google Takeout. J’ai simplement placé le fichier .mbox dans le bon répertoire et exécuté le script.
J’avais une question concernant l’importation d’e-mails dont les parents ne sont pas dans le .mbox. Par exemple, il y a de nombreux fils de discussion dans notre groupe qui sont démarrés par un transfert d’un e-mail qui n’a pas été envoyé au groupe, ou en ajoutant le groupe à la liste de réponses au milieu d’une conversation pour les inclure.
Actuellement, lors de l’importation, il semble que ces e-mails précédents ne soient pas présents. On peut les trouver en cliquant sur l’icône de l’e-mail et en visualisant le HTML. Je me demandais si d’autres avaient rencontré la même situation et avaient des solutions. Je pourrais imaginer soit inclure la chaîne d’e-mails précédente dans la publication, soit essayer de l’analyser, d’en extraire un certain nombre de messages et de les ajouter tous.
Vous devrez trouver un moyen de générer ces messages à partir du texte cité et de les ajouter au fichier mbox (probablement avec des en-têtes Id) avant d’exécuter le script d’importation.
C’est vraiment excellent. Mais j’ai quelques problèmes avec certains e-mails arrivant dans Discourse avec un e-mail initial, puis les réponses au format mbox dans le même post, non formatées. Je ne suis pas sûr de ce qui cause cela.
La question est, comment puis-je supprimer tous les e-mails importés (20 ans) sans supprimer et recréer l’instance Discourse cible ?
Je sais que la configuration RAM recommandée est de 8 Go. J’ai essayé d’importer 20 ans de publications sur une machine virtuelle de 2 Go et elle a fonctionné pendant un certain temps avant de planter avec le message « tué ». Les machines de 8 Go chez des fournisseurs d’hébergement comme DigitalOcean sont chères (pour moi). Y a-t-il un moyen de faire cela avec moins de mémoire ? Importer par lots plus petits, peut-être ?
Peut-être supprimer ces catégories, puis supprimer les champs personnalisés de sujet associés.
Non, je ne pense pas que vous puissiez faire grand-chose en matière d’importation sur une petite machine. Vous pourriez essayer sur un ordinateur de bureau, mais vous auriez alors des problèmes de bande passante pour ramener la base de données sur Internet.
Je sais qu’il n’y a pas beaucoup d’activité sur ce fil, mais je n’arrive pas à le faire fonctionner correctement. Beaucoup d’e-mails au format mbox que j’importe ne sont pas correctement divisés. Les lignes From ressemblent à ceci :
From MAILER-DAEMON Tue Nov 01 05:57:09 2022
Mais certains messages sont correctement importés puis, dans le même corps, contiennent des éléments bruts au format mbox commençant par la ligne From typique. En d’autres termes, ils ne sont pas divisés. Je ne vois pas que j’aie besoin de modifier l’expression régulière qui fait la division et je ne connais pas Ruby, donc je ne peux pas déboguer le script d’importation.
Je ne sais pas quoi faire ensuite. Il y a 20 ans de messages à importer, donc je ne peux pas parcourir les messages importés à la main pour les corriger. En bref, ce script ne fonctionne pas pour moi. Pourquoi serais-je le seul à qui cela arrive ?
Ce n’est pas le cas. Mon premier travail rémunéré sur Discourse a consisté, pendant des mois, à nettoyer d’anciens fichiers mbox qui avaient été modifiés à la main pour une raison que je ne me rappelle plus.
Il semble que vous deviez modifier les expressions régulières ou trouver un autre moyen de corriger les messages erronés. Une façon de faire est d’utiliser un autre outil pour diviser les messages en un par fichier.
Pour information, j’ai écrit plusieurs scripts d’importation avant de connaître Ruby.
Chaque importation est unique. Avec 20 ans de données, il est fort probable que vous rencontriez plusieurs problèmes différents, car les choses ont changé au fil des différents systèmes utilisés.
Je souhaite importer 20 ans de messages de mon système mailman2 dans un répertoire d’archives, mais je ne veux pas créer d’identifiants utilisateur (même pas des identifiants temporaires) pour eux, car beaucoup de nos abonnés ont déménagé ou sont décédés et cela créerait de nombreux comptes qui ne feraient que prendre de la place.
Puis-je les importer tous sous le même identifiant utilisateur (peut-être ‘archive’) ?
Et c’est peut-être une question stupide, mais comme l’application est désactivée pendant le processus d’importation, cela signifie-t-il que les utilisateurs qui se sont inscrits pour recevoir des e-mails sur les nouveaux articles ne seront pas inondés d’e-mails sur toutes les archives qui viennent d’être chargées ?
Vous pouvez commenter la fonction import_users et tous les messages appartiendront au système.
Vous n’allez pas gagner beaucoup d’espace.
Aucun utilisateur ne recevra d’e-mail tant qu’il n’aura pas utilisé le processus « mot de passe oublié » pour se connecter à son compte. Si vous importez ces données dans une communauté existante, je pense que les utilisateurs recevront des notifications concernant les nouveaux messages créés par le script d’importation.
Merci, je regardais le script d’importation et j’ai pensé que je pourrais peut-être simplement désactiver la section des nouveaux utilisateurs. Tester cela est sur ma liste.
Ce n’est pas l’espace disque qui me préoccupe, c’est d’avoir potentiellement des centaines de comptes utilisateurs mis en scène qui ne seront jamais utilisés, donc c’est plus un espace mental ou une très longue liste d’utilisateurs.
Vous connaissez vos utilisateurs, mais avoir des comptes que personne n’utilisera semble bien mieux que de ne pas savoir qui a posté des messages pendant 20 ans.
Je ne trouve pas le fichier import_mbox.sh et quand j’essaie d’exécuter le script mbox.rb directement, j’obtiens un tas d’erreurs Ruby :
root@lists-import:/var/www/discourse/script/import_scripts# ruby mbox.rb mbox
fatal: detected dubious ownership in repository at ‘/var/www/discourse’
To add an exception for this directory, call:
Salutations à tous. Quel excellent guide. Merci à Gerhard et aux autres pour leur contribution.
Quelqu’un a-t-il adapté cela pour Lyris ? Je suis intéressé par la migration d’une installation historique et j’aimerais comprendre s’ils ont rencontré des problèmes particuliers dans un projet similaire.
Pour être plus précis, j’ai réussi à modifier le code qui permettait l’importation, en ajoutant .dup à la ligne 447 du fichier /var/www/discourse/script/import_scripts/base.rb :
params[:name].dup.strip!
Une chose n’est pas claire : comment puis-je importer dans l’un des sites multisites ?
Quelqu’un a-t-il rencontré une erreur « impossible de modifier une chaîne figée » ? Mon index.db est créé correctement, mais il échoue lors de la création des catégories.
root@xxxxxxxxxx:/var/www/discourse# import_mbox.sh
Le processus d'importation mbox commence...
Chargement des groupes existants...
Chargement des utilisateurs existants...
Chargement des catégories existantes...
Chargement des publications existantes...
Chargement des sujets existants...
création de l'index
indexation des fichiers dans /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com
indexation de /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com/export.mbox
indexation des réponses et des utilisateurs
création des catégories
/var/www/discourse/script/import_scripts/base.rb:447:in `strip!': **impossible de modifier une chaîne figée : \"xxxxx-xxxxxxx@xxxxxxx.com\" (****FrozenError****)**
from /var/www/discourse/script/import_scripts/base.rb:447:in `block in create_categories'
from /var/www/discourse/script/import_scripts/base.rb:438:in `each'
from /var/www/discourse/script/import_scripts/base.rb:438:in `create_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:50:in `import_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:34:in `execute'
from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
from script/import_scripts/mbox.rb:13:in `<module:Mbox>'
from script/import_scripts/mbox.rb:11:in `<module:ImportScripts>'
from script/import_scripts/mbox.rb:10:in `<main>'