Problemas ao importar anexos do XenForo

Oi galera,

Migrei com sucesso o banco de dados do XenForo, com 1.500 membros e ~75.000 posts, para um novo servidor onde está o Discourse.

Uma dúvida sobre os anexos… Pelo script, vi que, se a pasta de anexos existir, o script fará a importação. Minha pergunta é: onde devo colocar os anexos do servidor antigo?

a) Na parte Docker do servidor (em algum lugar)
b) Na localização original /var/discourse/shared/standalone/tmp/attachments

?

1 curtida

Alguém sabe o caminho???

1 curtida

Coloque os arquivos onde quiser, desde que sejam acessíveis pela máquina que está fazendo a importação, e insira esse caminho aqui:

  ATTACHMENT_DIR = '/tmp/attachments'

Se estiver executando dentro de um contêiner Docker e os arquivos estiverem em var/discourse/shared/standalone/tmp/attachments, use /shared/tmp/attachments como caminho. Você pode verificar isso procurando pelos arquivos quando estiver dentro do contêiner.

2 curtidas

Ok, Jay, obrigado pelas informações. Desta vez estou fazendo uma instalação limpa com a configuração da pasta de anexos. Vou colocá-los em /shared/tmp/attachments e retornarei aqui com os resultados.

Uma pergunta rápida… existe alguma maneira de importar a senha das contas também?

Alguém pode verificar onde está o problema?

root@my-app:/var/www/discourse# RAILS_ENV=production bundle exec ruby script/import_scripts/xenforo.rb
Carregando grupos existentes...
Carregando usuários existentes...
Carregando categorias existentes...
Carregando posts existentes...
Carregando tópicos existentes...

criando usuários
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 100 usuários já importados
Ignorando 4 usuários já importados

importando categorias...
       23 / 23 (100.0%)  [326682 itens/min]
criando tópicos e posts
       74 / 74752 (  0.1%)  [99817 itens/min]  Traceback (última chamada na pilha):
        18: de script/import_scripts/xenforo.rb:396:in `\u003cmain\u003e'
        17: de /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
        16: de script/import_scripts/xenforo.rb:32:in `execute'
        15: de script/import_scripts/xenforo.rb:174:in `import_posts'
        14: de /var/www/discourse/script/import_scripts/base.rb:869:in `batches'
        13: de /var/www/discourse/script/import_scripts/base.rb:869:in `loop'
        12: de /var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
        11: de script/import_scripts/xenforo.rb:180:in `block in import_posts'
        10: de /var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
         9: de /var/www/discourse/script/import_scripts/base.rb:490:in `each'
         8: de /var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
         7: de script/import_scripts/xenforo.rb:186:in `block (2 levels) in import_posts'
         6: de script/import_scripts/xenforo.rb:315:in `process_xenforo_post'
         5: de script/import_scripts/xenforo.rb:324:in `process_xf_attachments'
         4: de /usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
         3: de /usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
         2: de script/import_scripts/xenforo.rb:326:in `block in process_xf_attachments'
         1: de /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!': não é possível modificar String congelada (FrozenError)
root@my-app:/var/www/discourse#

Desta vez, coloquei os anexos em: var/discourse/shared/standalone/tmp/attachments

Encontrei o problema: uma pasta contendo os anexos para importação DEVE estar dentro da aplicação Docker no caminho /var/www/discourse/…/tmp/attachments.

Agora está tudo bem, o script está em execução e deve terminar em cerca de 1h30.

Edição: Parece que a importação de anexos não está funcionando novamente… Estou atualmente em 78% da importação, e em cada post onde tínhamos alguma imagem ou anexo, permanece [ATTACH]9788[/ATTACH], com o número entre as tags e o número de uploads, então o próximo será [ATTACH]9789[/ATTACH]…

Qualquer ajuda com isso será muito bem-vinda :confused:

1 curtida

Se você importou qualquer postagem antes de configurar corretamente o attachment_dir, será necessário excluir todas as postagens e iniciar a importação novamente.

Infelizmente, a importação já foi concluída e não vejo nenhuma informação sobre anexos no log?

Se você executou o script de importação e o diretório de anexos não existia, os anexos foram ignorados.

Eu não fiz isso… Executei uma importação fresca com os anexos no lugar.

Acho que não posso ajudá-lo aqui. Se você tem um orçamento, consulte Redirecting…

Aqui está meu último conselho: tenho quase certeza de que os anexos não estão no local onde o script consegue encontrá-los e que você precisará apagar tudo e começar novamente.

Antes de executar o script novamente, dentro da pasta, você deve digitar

 ls /tmp/attachments

onde /tmp/attachments é o que você colocou na linha

  ATTACHMENT_DIR = '/tmp/attachments'

Se ele não listar os anexos, você precisará continuar tentando descobrir onde eles estão.

2 curtidas

Certo, você poderia me dizer exatamente onde colocar os anexos do XenForo no novo servidor para que eu possa ter certeza de que o script os encontrará?

Alguém?

Estou fazendo agora uma importação nova (a 5ª vez)… Estou cansado… :roll_eyes:

Preciso ordenar os anexos do XenForo de alguma forma ou basta copiar/colar a estrutura e a pasta /tmp/attachments?

Estou fazendo a instalação em uma nova VM com um snapshot, para que possa alterar detalhes rapidamente e recomeçar a migração.

Ontem, coloquei a pasta de anexos do XenForo, que tem a seguinte estrutura: uma pasta principal chamada “attachments” e, dentro dela, 9 subpastas nomeadas de 0 a 9. Dentro de cada uma delas, há cerca de 600 a 700 anexos (.jpg). Coloquei a pasta em var/discourse/shared/standalone/tmp/attachments e alterei o script xenforo.rb, adicionando:

ATTACHMENT_DIR = '/shared/tmp/attachments'

Testei com ls /tmp/attachments e a estrutura estava correta, mas enfrentei o mesmo erro da primeira vez:

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#Texto pré-formatado`

2019-11-15T23:00:00Z

Removi o ! do método gsub! no seguinte local:

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

Agora, o script de importação não para mais, continua e exibe estas informações sobre os anexos:

De qualquer forma, por exemplo, a última mensagem:

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

…o arquivo ESTÁ nesse caminho, mas não há arquivo .data. Em vez de .data, há um arquivo .JPG.

Qualquer ajuda é bem-vinda.

2019-11-15T23:00:00Z

O script tinha um bug. Encontrei e corrigi; agora consigo importar os anexos.

1 curtida