Conseguí a duras penas que mi comunidad XenForo existente funcionara con Discourse, así que pensé en compartir mi experiencia aquí para ayudar a cualquiera que intente hacer lo mismo. Ten en cuenta que no sé lo que estoy haciendo, así que algunas de mis inferencias pueden ser incorrectas. Pude completar la importación a Discourse con alrededor de un 20% de pérdida de archivos adjuntos. Realmente no puedo explicar por qué, pero el problema parece afectar solo a los últimos 2-3 años de publicaciones en mi foro, mientras que todo lo anterior tuvo una tasa de importación exitosa de alrededor del 95%. Mi única suposición es que tiene algo que ver con el cambio de XF 1.x a XF 2.x.
Cualquiera que intente esto debe saber que este script necesita muchas actualizaciones para funcionar con XF 2.x. Específicamente, las líneas 375-378 no tienen las tablas de base de datos correctas para importar archivos adjuntos de XenForo Media Gallery. Lo solucioné desconectando XFMG del foro y desinstalándolo, ya que solo estaba usando XFMG para duplicar los archivos adjuntos del foro de todos modos.
Si tienes curiosidad, la línea 376 se refiere a la tabla xengallery_media, que obviamente es una referencia a XFMG 1.x, ya que esta tabla ha sido cambiada a xf_mg_media_item en XFMG 2.x. El resto no puedo hacerlo coincidir y sospecho que se necesita código adicional para hacer coincidir los IDs de los archivos adjuntos con las publicaciones.
Terminé comentando la línea 314: s = process_xf_attachments(:gallery, s)
Para que el script no diera error por la tabla SQL faltante.
Así que, con eso hecho, seguí la publicación de @Jack51 en este hilo:
con las siguientes ediciones:
el paso seis necesita la versión de mariadb actualizada. cambia mariadb-server-10.3 a mariadb-server-10.5
el paso siete debería ser service mariadb start en lugar de service mysql start.
Cambié
frozen_string_literal: true
a
frozen_string_literal: false
Ya que obtuve el mismo error que alguien más mencionó en este hilo.
Parece que hubo MUCHA confusión en este hilo sobre dónde colocar los archivos adjuntos para que el script los viera, y admito que yo también tuve algunas dificultades con esto. Para personas completamente nuevas en docker (como yo), sería extremadamente útil señalar que, si bien los dockers son esencialmente una máquina virtual que se ejecuta en tu servidor (por lo que estás tratando con dos sistemas operativos/sistemas de archivos diferentes), hay un espacio compartido para transferir archivos:
/var/discourse/shared/standalone/tmp
este directorio se encuentra en tu máquina host, y los archivos colocados allí aparecerán en:
/shared/tmp
cuando hayas entrado en el contenedor docker. Entonces, asumiendo que mantienes la misma estructura de archivos/carpetas de xenforo, copiarías las carpetas:
internal_data/attachments
a
/var/discourse/shared/standalone/tmp
en tu máquina host, y esa carpeta aparecería en /shared/tmp después de entrar en tu contenedor docker.
A continuación, al editar el script xenforo.rb, cambia:
ATTACHMENT_DIR = '/tmp/attachments'
a
ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'
y tendrás tus archivos adjuntos ubicados en la ubicación correcta. Vale la pena señalar que xenforo también tiene una carpeta data/attachments, pero está llena de archivos .jpg en lugar de los archivos .data que buscas. Vi que alguien cometió este error anteriormente en este hilo, así que pensé que valía la pena señalarlo.
Además, obtuve un error de permisos del script, por lo que es posible que tengas que chmod el directorio:
sudo chmod a+rw -R /shared/tmp/internal_data/
Diría que la mayor pista de que el script no está detectando tus archivos adjuntos es que estará extrañamente silencioso, cuando en realidad debería estar mostrando algún error ocasional:
Por lo tanto, si la importación dura varias horas sin un solo error listado, probablemente no está detectando los archivos adjuntos.
Eso es todo lo que tengo. No me malinterpretes, me alegro de que este script exista, una tasa de éxito del 80% es mejor que nada (tuve una tasa de éxito similar al pasar de vBulletin a XenForo en 2009), y estoy emocionado de trabajar con la plataforma Discourse. Espero que esta publicación ayude a algunas personas y quizás algún día alguien con mejores habilidades que yo pueda actualizar este script para que funcione un poco mejor.
