Problemi durante l'importazione degli allegati da XenForo

Ciao a tutti,

Ho migrato con successo il database di XenForo con 1500 membri e circa 75.000 post su un nuovo server che ospita Discourse.

Una domanda sugli allegati… dallo script vedo che se la cartella degli allegati esiste, lo script procederà con l’importazione. La mia domanda è: dove devo posizionare gli allegati provenienti dal vecchio server?

a) Nella parte Docker del server (da qualche parte)
b) Nella posizione originale /var/discourse/shared/standalone/tmp/attachments

?

1 Mi Piace

Qualcuno conosce il percorso???

1 Mi Piace

Posiziona i file dove preferisci, purché siano accessibili dalla macchina che esegue l’importazione, e inserisci quel percorso qui:

  ATTACHMENT_DIR = '/tmp/attachments'

Se stai eseguendo all’interno di un contenitore Docker e li hai collocati in var/discourse/shared/standalone/tmp/attachments, userai /shared/tmp/attachments come percorso. Puoi verificare controllando la presenza dei file quando sei all’interno del contenitore.

2 Mi Piace

Ok Jay, grazie per le informazioni. Questa volta sto facendo un’installazione pulita con la configurazione della cartella degli allegati; li posizionerò in /shared/tmp/attachments e tornerò qui con i risultati.

Una domanda veloce… c’è un modo per importare anche le password per gli account?

Qualcuno può vedere dove è il problema?

root@my-app:/var/www/discourse# RAILS_ENV=production bundle exec ruby script/import_scripts/xenforo.rb
Caricamento dei gruppi esistenti...
Caricamento degli utenti esistenti...
Caricamento delle categorie esistenti...
Caricamento dei post esistenti...
Caricamento degli argomenti esistenti...

creazione degli utenti
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 100 utenti già importati
Saltati 4 utenti già importati

importazione delle categorie...
       23 / 23 (100.0%)  [326682 elementi/min]
creazione di argomenti e post
       74 / 74752 (  0.1%)  [99817 elementi/min]  Traceback (most recent call last):
        18: from script/import_scripts/xenforo.rb:396:in `\u003cmain\u003e'
        17: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
        16: from script/import_scripts/xenforo.rb:32:in `execute'
        15: from script/import_scripts/xenforo.rb:174:in `import_posts'
        14: from /var/www/discourse/script/import_scripts/base.rb:869:in `batches'
        13: from /var/www/discourse/script/import_scripts/base.rb:869:in `loop'
        12: from /var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
        11: from script/import_scripts/xenforo.rb:180:in `block in import_posts'
        10: from /var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
         9: from /var/www/discourse/script/import_scripts/base.rb:490:in `each'
         8: from /var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
         7: from script/import_scripts/xenforo.rb:186:in `block (2 levels) in import_posts'
         6: from script/import_scripts/xenforo.rb:315:in `process_xenforo_post'
         5: from script/import_scripts/xenforo.rb:324:in `process_xf_attachments'
         4: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
         3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
         2: from script/import_scripts/xenforo.rb:326:in `block in process_xf_attachments'
         1: from /usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in `squish!'
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in `gsub!': impossibile modificare una Stringa congelata (FrozenError)
root@my-app:/var/www/discourse#

Questa volta ho spostato gli allegati in: var/discourse/shared/standalone/tmp/attachments

L’ho trovato… il problema è che una cartella contenente gli allegati da importare DEVE trovarsi all’interno dell’app Docker nel percorso /var/www/discourse/…/tmp/attachments

Adesso va tutto bene, lo script sta procedendo e terminerà in circa 1,5 ore.

Modifica: Sembra che l’importazione degli allegati non funzioni di nuovo… sono attualmente al 78% dell’importazione e in ogni post in cui c’erano immagini o allegati rimane [ATTACH]9788[/ATTACH] e il numero tra i tag corrisponde al numero di allegati caricati, quindi il successivo sarà [ATTACH]9789[/ATTACH]…

Qualsiasi aiuto su questo sarà gradito :confused:

1 Mi Piace

Se hai importato dei post prima di impostare correttamente la directory degli allegati, dovrai eliminare tutti i post e ricominciare l’importazione.

Purtroppo l’importazione è stata completata ora e non vedo alcuna informazione nei log relativa agli allegati?

Se hai eseguito lo script di importazione e la directory degli allegati non esisteva, gli allegati sono stati saltati.

Non l’ho fatto… Ho eseguito un’importazione fresca con gli allegati al loro posto.

Non credo di poter aiutarti in questo caso. Se hai un budget, consulta Redirecting…

Ecco il mio ultimo consiglio: sono abbastanza certo che gli allegati non si trovino nella posizione in cui lo script riesce a individuarli e che dovrai cancellare tutto e ricominciare da capo.

Prima di eseguire nuovamente lo script, dalla cartella in cui ti trovi, dovresti digitare

 ls /tmp/attachments

dove /tmp/attachments è il percorso che hai inserito nella riga

  ATTACHMENT_DIR = '/tmp/attachments'

Se non vengono elencati gli allegati, dovrai continuare a cercare di capire dove si trovano.

2 Mi Piace

Ok, potresti dirmi esattamente dove mettere gli allegati da XenForo sul nuovo server, così posso essere sicuro che lo script li trovi?

Qualcuno?

Sto facendo ora un’importazione fresca (la quinta volta)… sono stanco… :roll_eyes:

Devo ordinare in qualche modo gli allegati da XenForo o basta copiare/incollare la struttura e la cartella /tmp/attachments?

Attualmente sto eseguendo l’installazione su una nuova VM con uno snapshot, così posso modificare rapidamente i dettagli e ricominciare con la migrazione.

Ieri ho spostato la cartella degli allegati da XenForo, che ha una struttura con una cartella principale denominata “attachments” e all’interno 9 sottocartelle numerate da 0 a 9, ciascuna contenente circa 600-700 allegati (.jpg). Ho posizionato la cartella in var/discourse/shared/standalone/tmp/attachments e modificato lo script xenforo.rb impostando:

ATTACHMENT_DIR = '/shared/tmp/attachments'

Ho testato con il comando “ls /tmp/attachments” e ho ottenuto la struttura corretta, ma incontro lo stesso errore della prima volta:

creating topics and posts
74 / 74752 ( 0.1%) [99817 items/min] Traceback (most recent call last):
18: from script/import_scripts/xenforo.rb:396:in \u003cmain\u003e' 17: from /var/www/discourse/script/import_scripts/base.rb:47:in perform’
16: from script/import_scripts/xenforo.rb:32:in execute' 15: from script/import_scripts/xenforo.rb:174:in import_posts’
14: from /var/www/discourse/script/import_scripts/base.rb:869:in batches' 13: from /var/www/discourse/script/import_scripts/base.rb:869:in loop’
12: from /var/www/discourse/script/import_scripts/base.rb:870:in block in batches' 11: from script/import_scripts/xenforo.rb:180:in block in import_posts’
10: from /var/www/discourse/script/import_scripts/base.rb:490:in create_posts' 9: from /var/www/discourse/script/import_scripts/base.rb:490:in each’
8: from /var/www/discourse/script/import_scripts/base.rb:491:in block in create_posts' 7: from script/import_scripts/xenforo.rb:186:in block (2 levels) in import_posts’
6: from script/import_scripts/xenforo.rb:315:in process_xenforo_post' 5: from script/import_scripts/xenforo.rb:324:in process_xf_attachments’
4: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each' 3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each_key’
2: from script/import_scripts/xenforo.rb:326:in block in process_xf_attachments' 1: from /usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in squish!’
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in gsub!': can't modify frozen String (FrozenError) root@my-app:/var/www/discourse#Preformatted text`

2019-11-15T23:00:00Z

Ho rimosso il ! dalla stringa gsub! in questa posizione:

/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb

Ora lo script di importazione non si ferma più, continua ed esegue mostrando queste informazioni sugli allegati:

Comunque, ad esempio, l’ultima riga:

Could not find file /shared/tmp/attachments//2/2485-c3da9f6ee1e33d3ebf418c5dea1f9e8a.data. Skipping attachment id 2485

…il file È effettivamente in quel percorso, ma non c’è il file .data. Al posto di .data c’è .JPG.

Qualsiasi aiuto è benvenuto.

2019-11-15T23:00:00Z

Lo script aveva un bug: l’ho individuato e risolto. Ora riesco a importare gli allegati.

1 Mi Piace