È sicuro impostare i livelli di fiducia, i badge e altre impostazioni di Discourse prima dell’importazione? Sto pensando che questo importatore inserirà/sostituirà solo post/thread/profili? Odio dover configurare tutto nelle impostazioni di Discourse e poi far sì che questo elimini tali impostazioni, anche se non vedo immediatamente nulla nel codice correlato a ciò.
[citazione=“moshbit, post:76, topic:45232”]
È sicuro impostare i miei livelli di fiducia, badge, altre impostazioni di Discourse prima dell’importazione?
[/citazione]
Sì, ma fai un backup. Probabilmente dovrai cambiare le cose ed eseguirlo più volte, ricominciando da zero, quindi conserva un backup della tua configurazione senza dati importati.
[citazione=“moshbit, post:76, topic:45232”]
l’importatore si limiterà a inserire/sostituire post/thread/profili
[/citazione]
Inserisce. Per lo più non sostituisce nulla. Se un utente esiste, non lo cambierà. Non utilizzerà le categorie che hai impostato. Se lo esegui di nuovo, con un database aggiornato dal tuo vecchio sito, aggiungerà nuovi dati, ma non cambierà le cose che sono state importate nelle esecuzioni precedenti. Questo lo rende molto più veloce, ma se hai bisogno di modificare lo script per qualche motivo dovrai cancellare tutto e ricominciare da capo.
Quindi, due cose. Primo, c’è un modo per rendere questo più veloce? Sono su un Linode con 32 CPU e 64 GB di RAM e ci vogliono ancora 4-5 ore per importare 250.000 post.
Secondo, importa gli allegati prima o dopo i post? Perché guardando lo script sembra che lo faccia dopo. È solo un peccato dover aspettare 4-5 ore solo per scoprire che gli allegati non sono stati importati.
Tutto dipende dai dati precedenti, per la maggior parte, l’elaborazione successiva può sfruttare le CPU multiple, ma ciò non inizia finché non hai finito, per la maggior parte. Ottieni una singola CPU più veloce.
Puoi modificare lo script per importare solo i caricamenti recenti, ma se non hai intenzione di fare uno sviluppo importante, aspetta semplicemente le 5 ore.
Beh, ci ho provato diverse volte e gli allegati non vengono importati, e sto esaurendo le idee. Spero che qualcuno possa aiutarmi (grazie @pfaffman per il tuo contributo finora).
Ho inserito i file *.data nella loro struttura di cartelle originale da xenforo (quindi, la cartella ‘attachments’) in /root/attachments nel container docker. Ho aggiornato lo script di importazione a /root/attachments. Posso vedere i file in /root/attachments dalla riga di comando con ls.
Ho eseguito lo script e ogni volta (dopo circa 4-5 ore di attesa), tutti i post con allegati/foto mostrano il vecchio bbcode di xenforo ([ATTACH]123456[/ATTACH]) e non vedo immagini o allegati nell’installazione di discourse.
Cosa potrei star sbagliando? Mi sento al 90% del lavoro, mi manca solo qualcosa.
Dovrai esaminare il codice. Il codice di allegato viene eseguito? I tuoi allegati sono nel formato previsto dallo script?
Se la funzione di allegato viene eseguita dopo l’importazione dei post, non è necessario eseguirla di nuovo per intero, salterà semplicemente i post (o commenta l’importazione dei post per renderla un po’ più veloce).
Ma ci sono un sacco di cose che potrebbero essere sbagliate, dal fatto che non l’hai configurato correttamente al fatto che semplicemente non funziona con la tua versione di zenforo. Dovrai esaminare il codice e aggiungere un po’ di output di debug per vedere cosa sta succedendo.
Comunque, solo per informazione a chiunque si imbatta in questo thread, non sono riuscito a far funzionare gli allegati con questo script, non importa dove li abbia messi. Secondo me, lo script necessita di miglioramenti e le istruzioni soprattutto necessitano di molti miglioramenti per essere più chiare su cosa va dove e come.
Fino ad allora, considererei questo script non funzionante.
Probabilmente funziona per alcune persone con alcune versioni e configurazioni, ma non per quella che stai usando. È sorprendente quanto ogni importazione sia diversa.
Lo script di importazione ufficiale di XenForo è rotto ora?
Gli utenti e le categorie vengono importati correttamente,
Importando i post con la cartella degli allegati si verificano problemi
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
Che versione di Redis hai?
Sono appena riuscito a far funzionare la mia community XenForo esistente in Discourse, quindi ho pensato di condividere la mia esperienza qui per aiutare chiunque ci stia provando. Tieni presente che non so cosa sto facendo, quindi alcune delle mie deduzioni potrebbero essere errate. Sono riuscito a completare l’importazione in Discourse con una perdita di circa il 20% degli allegati. Non riesco davvero a spiegare il perché, ma il problema sembra interessare solo gli ultimi 2-3 anni di post sul mio forum, mentre tutto ciò che è precedente ha avuto un tasso di importazione di successo di circa il 95%. La mia unica ipotesi è che abbia a che fare con il passaggio da XF 1.x a XF 2.x.
Chiunque tenti questa operazione dovrebbe sapere che questo script necessita di molti aggiornamenti per funzionare con XF 2.x. In particolare, le righe 375-378 non hanno le tabelle di database corrette per importare allegati dalla Xenforo Media Gallery. Ho aggirato questo problema disconnettendo XFMG dal forum e disinstallandola, poiché stavo usando XFMG solo per rispecchiare gli allegati dal forum.
Se sei curioso, la riga 376 si riferisce alla tabella xengallery_media, che è ovviamente un riferimento a XFMG 1.x, poiché questa tabella è stata rinominata in xf_mg_media_item in XFMG 2.x. Il resto non riesco a farlo corrispondere e sospetto che sia necessario del codice aggiuntivo per far corrispondere gli ID degli allegati ai post.
Ho finito per commentare la riga 314: s = process_xf_attachments(:gallery, s)
In modo che lo script non generasse errori a causa della tabella SQL mancante.
Quindi, fatto ciò, ho seguito il post di @Jack51 in questo thread:
con le seguenti modifiche:
il passo sei necessita dell’aggiornamento della versione di mariadb. cambia mariadb-server-10.3 in mariadb-server-10.5
il passo sette dovrebbe essere service mariadb start invece di service mysql start.
Ho cambiato
frozen_string_literal: true
in
frozen_string_literal: false
Poiché ho ricevuto lo stesso errore che qualcun altro ha menzionato in questo thread.
Sembra che ci sia stata molta confusione in questo thread su dove posizionare gli allegati in modo che lo script li vedesse, e devo ammettere che anch’io ho avuto qualche difficoltà. Per chi è completamente nuovo a docker (come me), sarebbe estremamente utile far notare che mentre i docker sono essenzialmente una macchina virtuale in esecuzione sul tuo server (quindi hai a che fare con due diversi sistemi operativi/file system), esiste uno spazio condiviso per il trasferimento di file:
/var/discourse/shared/standalone/tmp
questa directory si trova sulla tua macchina host, e i file inseriti lì appariranno in:
/shared/tmp
una volta entrato nel container docker. Quindi, supponendo che tu mantenga la stessa struttura di file/cartelle da xenforo, copieresti le cartelle:
internal_data/attachments
in
/var/discourse/shared/standalone/tmp
sulla tua macchina host, e quella cartella apparirebbe in /shared/tmp dopo essere entrato nel tuo container docker.
Successivamente, modificando lo script xenforo.rb, cambia:
ATTACHMENT_DIR = '/tmp/attachments'
in
ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'
e avrai i tuoi allegati nella posizione corretta. Vale la pena notare che xenforo ha anche una cartella data/attachments, ma è piena di file .jpg invece dei file .data che stai cercando. Ho visto qualcuno commettere questo errore in precedenza in questo thread, quindi ho pensato che valesse la pena sottolinearlo.
Inoltre, ho ricevuto un errore di permessi dallo script, quindi potresti dover usare chmod sulla directory:
sudo chmod a+rw -R /shared/tmp/internal_data/
Direi che il più grande indizio che lo script non sta rilevando i tuoi allegati è che sarà stranamente silenzioso mentre invece dovrebbe probabilmente generare qualche errore occasionale:
Quindi, se l’importazione va avanti per diverse ore senza un singolo errore elencato, probabilmente non sta rilevando gli allegati.
Questo è tutto quello che ho. Non fraintendermi, sono contento che questo script esista, un tasso di successo dell’80% è meglio di niente (ho avuto un tasso di successo simile passando da vBulletin a Xenforo nel 2009), e sono entusiasta di iniziare a lavorare con la piattaforma Discourse. Spero che questo post aiuti alcune persone e forse un giorno qualcuno con competenze migliori delle mie potrà aggiornare questo script per farlo funzionare un po’ meglio.
Lo script di importazione attuale ha perso molti allegati perché non sono sempre incorporati nel BBcode del post. Ho creato una pull request con diversi miglioramenti e correzioni. Lo script ora vede tutti gli allegati e importa anche like, avatar e messaggi privati, e crea permalink per categorie e argomenti.
@gerhard Penso che quella PR sia al momento nel tuo piatto, potresti per favore unire quando hai un po’ di tempo?
Sì, l’ho notato ieri.
Me ne ero completamente dimenticato. Lo esaminerò oggi o la prossima settimana.
È stato unito al codice ora? Ho dovuto tornare a xenforo per altri motivi, ma mi piacerebbe passare a discourse quando questo script funzionerà.
Mi dispiace, avrei dovuto controllare solo github, sembra che sia stato unito il 28 novembre.
6 post sono stati divisi in un nuovo argomento: Costante AVATAR_DIR non specificata nello script di importazione XenForo
Volevo solo fare un follow-up e far sapere a chiunque stia cercando di abbandonare Xenforo (che trova questo thread tramite Google o altro) che c’è un importatore in fase di test per il software del forum Flarum qui:
Interessante, ma sarebbe ancora più interessante se avessimo un solido importatore da Xenforo a Discourse.
Il signore sembra molto sicuro di ciò che sta facendo e lo applaudo!
Ho recentemente eseguito un’importazione di XenForo. Ho apportato alcune modifiche per aggiungere funzionalità, ma ora non ricordo quali non fossero specifiche per quel forum.

