Est-il sûr de configurer mes niveaux de confiance, badges, autres paramètres de discourse avant l’importation ? Je pense que cet importateur va simplement insérer/remplacer des messages/fils/profils ? Je détesterais tout configurer dans les paramètres de discourse pour que cela efface ces paramètres, même si je ne vois rien dans le code qui s’y rapporte immédiatement.
Oui, mais faites une sauvegarde. Vous devrez probablement modifier des choses et l’exécuter plusieurs fois, en recommençant à zéro, alors conservez une sauvegarde de votre configuration sans aucune donnée importée.
Il insère. Il ne remplace la plupart des choses. Si un utilisateur existe, il ne le modifiera pas. Il n’utilisera pas les catégories que vous avez configurées. Si vous l’exécutez à nouveau, avec une base de données mise à jour de votre ancien site, il ajoutera de nouvelles données, mais ne modifiera pas les éléments qui ont été importés lors des exécutions précédentes. Cela le rend beaucoup plus rapide, mais si vous devez modifier le script pour une raison quelconque, vous devrez tout supprimer et recommencer.
Alors, deux choses. Premièrement, y a-t-il un moyen de rendre cela plus rapide ? Je suis sur un Linode avec 32 CPU et 64 Go de RAM et cela prend encore 4 à 5 heures pour importer 250 000 articles.
Deuxièmement, importe-t-il les pièces jointes avant ou après les articles ? Parce qu’en regardant le script, il semble qu’il le fasse après. C’est juste dommage de devoir attendre 4 à 5 heures pour découvrir que les pièces jointes n’ont pas été importées.
Tout dépend des données qui le précèdent, dans la plupart des cas, le post-traitement peut tirer parti des processeurs multiples, mais cela ne commence pas avant que vous ayez terminé, dans la plupart des cas. Obtenez un processeur unique plus rapide.
Vous pouvez modifier le script pour importer uniquement les téléchargements récents, mais si vous ne prévoyez pas de développement majeur, attendez simplement les 5 heures.
Eh bien, j’ai essayé plusieurs fois maintenant et les pièces jointes ne sont pas importées, et je manque d’idées. J’espère que quelqu’un pourra m’aider (merci @pfaffman pour vos contributions jusqu’à présent).
J’ai placé les fichiers *.data dans leur structure de dossiers d’origine de xenforo (donc, le dossier ‘attachments’) dans /root/attachments dans le conteneur docker. J’ai mis à jour le script d’importation vers /root/attachments. Je peux voir les fichiers dans /root/attachments en ligne de commande avec ls.
J’ai exécuté le script, et à chaque fois (après environ 4-5 heures d’attente), tous les messages avec des pièces jointes/photos affichent l’ancien bbcode de xenforo ([ATTACH]123456[/ATTACH]) et je ne vois aucune image ou pièce jointe dans l’installation de discourse.
Qu’est-ce que je fais mal ? J’ai l’impression d’être à 90%, il me manque juste quelque chose.
Vous devrez examiner le code. Le code d’attachement s’exécute-t-il ? Vos pièces jointes sont-elles dans le format attendu par le script ?
Si la fonction de pièce jointe s’exécute après l’importation des publications, vous n’avez pas besoin de tout réexécuter, elle ignorera simplement les publications (ou commentez l’importation des publications pour la rendre un peu plus rapide).
Mais il y a un tas de choses qui pourraient mal tourner, que ce soit parce que vous ne l’avez pas configuré correctement ou parce qu’il ne fonctionne tout simplement pas avec votre version de ZenForo. Vous devrez examiner le code et ajouter une sortie de débogage pour voir ce qui se passe.
Eh bien, juste pour information à quiconque tomberait sur ce fil, je n’ai pas réussi à faire fonctionner les pièces jointes avec ce script, peu importe où je les plaçais. À mon avis, le script a besoin d’être retravaillé et les instructions surtout ont besoin d’être beaucoup plus claires sur ce qui va où et comment.
En attendant, je considérerais ce script comme défectueux.
Il fonctionne probablement pour certaines personnes avec certaines versions et certaines configurations, mais pas celle que vous utilisez. Il est surprenant de voir à quel point chaque importation est différente.
Le script d’importation officiel de XenForo est-il cassé maintenant ?
L’importation des utilisateurs et des catégories fonctionne bien,
L’importation des publications avec le dossier de pièces jointes pose des problèmes
script/import_scripts/xenforo.rb:180:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:908:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:907:in `loop'
/var/www/discourse/script/import_scripts/base.rb:907:in `batches'
script/import_scripts/xenforo.rb:174:in `import_posts'
script/import_scripts/xenforo.rb:32:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/xenforo.rb:396:in `<main>'
113289 / 146471 ( 77.3%) [3766 items/min] Exception while creating post 162516. Skipping.
undefined method `synchronize' for #<DiscourseRedis:0x00005571b2d0c5b8>
/var/www/discourse/lib/discourse_redis.rb:44:in `method_missing'
/var/www/discourse/lib/distributed_mutex.rb:84:in `try_to_get_lock'
/var/www/discourse/lib/distributed_mutex.rb:61:in `get_lock'
/var/www/discourse/lib/distributed_mutex.rb:30:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'
/var/www/discourse/lib/post_creator.rb:407:in `transaction'
/var/www/discourse/lib/post_creator.rb:205:in `create'
/var/www/discourse/script/import_scripts/base.rb:580:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:528:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:515:in `each'
/var/www/discourse/script/import_scripts/base.rb:515:in `create_posts'
script/import_scripts/xenforo.rb:180:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:908:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:907:in `loop'
/var/www/discourse/script/import_scripts/base.rb:907:in `batches'
script/import_scripts/xenforo.rb:174:in `import_posts'
script/import_scripts/xenforo.rb:32:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/xenforo.rb:396:in `<main>'
113290 / 146471 ( 77.3%) [3766 items/min] Exception while creating post 162517. Skipping.
undefined method `synchronize' for #<DiscourseRedis:0x00005571b2d0c5b8>
/var/www/discourse/lib/discourse_redis.rb:44:in `method_missing'
/var/www/discourse/lib/distributed_mutex.rb:84:in `try_to_get_lock'
/var/www/discourse/lib/distributed_mutex.rb:61:in `get_lock'
/var/www/discourse/lib/distributed_mutex.rb:30:in `block in synchronize'
/var/www/disc
Quelle version de Redis avez-vous ?
J’ai à peine réussi à faire fonctionner ma communauté XenForo existante avec Discourse, j’ai donc pensé partager mon expérience ici pour aider ceux qui essaient de faire de même. Gardez à l’esprit que je ne sais pas ce que je fais, donc certaines de mes déductions peuvent être incorrectes. J’ai pu terminer l’importation vers Discourse avec une perte d’environ 20 % des pièces jointes. Je ne peux pas vraiment expliquer pourquoi, mais le problème ne semble affecter que les 2-3 dernières années de messages sur mon forum, alors que tout ce qui précède a eu un taux d’importation réussi d’environ 95 %. Ma seule supposition est que cela a quelque chose à voir avec le passage de XF 1.x à XF 2.x.
Quiconque tente cela doit savoir que ce script nécessite beaucoup de mises à jour pour fonctionner avec XF 2.x. Plus précisément, les lignes 375 à 378 n’ont pas les bonnes tables de base de données pour importer les pièces jointes de la galerie multimédia XenForo. J’ai contourné cela en déconnectant le XFMG du forum et en le désinstallant, puisque je n’utilisais le XFMG que pour refléter les pièces jointes du forum de toute façon.
Si vous êtes curieux, la ligne 376 fait référence à la table xengallery_media, qui est évidemment une référence à XFMG 1.x, car cette table a été renommée xf_mg_media_item dans XFMG 2.x. Le reste, je ne peux pas le faire correspondre et je soupçonne qu’un code supplémentaire est nécessaire pour faire correspondre les identifiants des pièces jointes aux messages.
J’ai fini par commenter la ligne 314 : s = process_xf_attachments(:gallery, s)
Pour que le script ne génère pas d’erreur à cause de la table SQL manquante.
Donc, avec cela fait, j’ai suivi le message de @Jack51 dans ce fil de discussion :
avec les modifications suivantes :
L’étape six nécessite la mise à jour de la version mariadb. changez mariadb-server-10.3 en mariadb-server-10.5
L’étape sept devrait être service mariadb start au lieu de service mysql start.
J’ai changé
frozen_string_literal: true
en
frozen_string_literal: false
Puisque j’ai eu la même erreur que quelqu’un d’autre a mentionnée dans ce fil de discussion.
Il semble qu’il y ait eu BEAUCOUP de confusion dans ce fil de discussion sur l’endroit où placer les pièces jointes pour que le script les voie, et j’avoue que j’ai eu quelques difficultés avec cela aussi. Pour les personnes complètement nouvelles à Docker (comme moi), il serait extrêmement utile de souligner que bien que les dockers soient essentiellement une machine virtuelle fonctionnant sur votre serveur (vous traitez donc avec deux systèmes d’exploitation/systèmes de fichiers différents), il existe un espace partagé pour le transfert de fichiers :
/var/discourse/shared/standalone/tmp
ce répertoire est situé sur votre machine hôte, et les fichiers qui y sont placés apparaîtront dans :
/shared/tmp
une fois que vous êtes entré dans le conteneur Docker. Donc, en supposant que vous conservez la même structure de fichiers/dossiers de XenForo, vous copiez les dossiers :
internal_data/attachments
dans
/var/discourse/shared/standalone/tmp
sur votre machine hôte, et ce dossier apparaîtra dans /shared/tmp après être entré dans votre conteneur Docker.
Ensuite, lors de la modification du script xenforo.rb, changez :
ATTACHMENT_DIR = '/tmp/attachments'
en
ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'
et vos pièces jointes seront situées au bon endroit. Il convient de noter que XenForo a également un dossier data/attachments, mais il est rempli de fichiers .jpg au lieu des fichiers .data que vous recherchez. J’ai vu quelqu’un faire cette erreur précédemment dans ce fil de discussion, donc j’ai pensé que cela valait la peine de le signaler.
De plus, j’ai eu une erreur de permissions de la part du script, vous devrez donc peut-être chmod le répertoire :
sudo chmod a+rw -R /shared/tmp/internal_data/
Je dirais que le plus grand indice que le script ne détecte pas vos pièces jointes est qu’il sera étrangement silencieux alors qu’il devrait probablement afficher des erreurs occasionnelles :
Donc, si l’importation dure plusieurs heures sans aucune erreur répertoriée, il est probable qu’elle ne détecte pas les pièces jointes.
C’est tout ce que j’ai. Ne vous méprenez pas, je suis content que ce script existe, un taux de réussite de 80 % vaut mieux que rien (j’ai eu un taux de réussite similaire lors du passage de vBulletin à XenForo en 2009), et je suis impatient de travailler avec la plateforme Discourse. J’espère que ce message aidera certaines personnes et peut-être qu’un jour quelqu’un avec de meilleures compétences que moi pourra mettre à jour ce script pour qu’il fonctionne un peu mieux.
La version actuelle du script d’importation a manqué de nombreuses pièces jointes car elles ne sont pas toujours intégrées dans le BBcode du message. J’ai créé une pull request avec pas mal d’améliorations et de corrections. Le script voit maintenant toutes les pièces jointes et importe également les likes, les avatars et les MP, et il crée des permaliens pour les catégories et les sujets.
@gerhard Je pense que cette PR est sur votre bureau pour le moment, pourriez-vous s’il vous plaît la fusionner lorsque vous aurez un peu de temps ?
Oui, j’ai remarqué ça hier.
J’avais complètement oublié. Je vais l’examiner aujourd’hui ou la semaine prochaine.
Est-ce que cela est fusionné dans le code maintenant ? J’ai dû revenir à xenforo pour d’autres raisons, mais j’aimerais passer à discourse lorsque ce script fonctionnera.
Désolé, j’aurais dû simplement vérifier le github, il semble qu’il ait été fusionné le 28 novembre.
6 messages ont été déplacées vers un nouveau sujet : La constante AVATAR_DIR n’est pas spécifiée dans le script d’importation XenForo
Je voulais juste faire un suivi et informer tous ceux qui essaient de quitter Xenforo (qui trouvent ce fil de discussion via Google ou autre) qu’un importateur est en cours de test pour le logiciel de forum Flarum ici :
Intéressant, mais ce serait encore plus intéressant si nous avions un importateur solide de XenForo vers Discourse.
Le monsieur semble très confiant dans ce qu’il fait et je l’applaudis !
J’ai récemment effectué une importation XenForo. J’ai apporté quelques modifications pour ajouter des fonctionnalités, mais je ne me souviens plus maintenant lesquelles n’étaient pas spécifiques à ce forum.

