¡Gracias por proporcionar esta guía y script de importación! Lo he utilizado con éxito con un grupo de Google, utilizando Google Takeout. Simplemente coloqué el archivo .mbox en el directorio correcto y ejecuté el script.
Tuve una pregunta sobre la importación de correos electrónicos que tienen padres que no están en el .mbox. Por ejemplo, hay muchos hilos en nuestro grupo que se inician a partir de un reenvío de un correo electrónico que no se envió al grupo, o al agregar el grupo a la lista de respuestas en medio de una conversación para incluirlos.
Actualmente, al importar, parece que estos correos electrónicos anteriores no están presentes. Puedes encontrarlos si haces clic en el ícono del correo electrónico y ves el HTML. Tenía curiosidad si alguien más se encontró con la misma situación y tenía alguna solución. Podría imaginar incluir la cadena de correos electrónicos anterior en la publicación o intentar analizarla y extraer una serie de mensajes de ella y agregarlos todos.
Tendrías que encontrar una forma de generar esos mensajes a partir del texto citado y añadirlos al archivo mbox (probablemente con encabezados Id) antes de ejecutar el script de importación.
Esto es realmente excelente. Pero tengo algunos problemas con algunos correos electrónicos que llegan a Discourse con un correo electrónico inicial y luego las respuestas en formato mbox en la misma publicación, sin formato. No estoy seguro de qué está causando esto.
La pregunta es, ¿cómo puedo eliminar todos los correos electrónicos importados (20 años) sin eliminar y recrear la instancia de Discourse de destino?
Soy consciente de que el requisito recomendado de RAM es de 8 GB. Intenté importar 20 años de publicaciones en una máquina virtual de 2 GB y funcionó durante un tiempo y se bloqueó con el mensaje ‘killed’. Las máquinas de 8 GB en proveedores de alojamiento como DigitalOcean son caras (para mí). ¿Hay alguna forma de hacer esto con menos memoria? ¿Importar en lotes más pequeños quizás?
Quizás eliminar esas categorías y luego eliminar los campos personalizados de temas asociados.
No, no creo que puedas hacer mucho con una importación en una máquina pequeña. Podrías intentarlo en un escritorio, pero luego tendrías problemas de ancho de banda para devolver la base de datos a Internet.
Sé que no hay mucha actividad en este hilo, pero no consigo que funcione correctamente. Muchos de los correos electrónicos en formato mbox que importo no se dividen correctamente. Las líneas “From” se ven así:
From MAILER-DAEMON Tue Nov 01 05:57:09 2022
Pero algunos mensajes se importan correctamente y luego, en el mismo cuerpo, tienen elementos en formato mbox sin procesar que comienzan con la línea “From” típica. En otras palabras, no se están dividiendo. No veo que necesite modificar la expresión regular que hace la división y no sé ruby, así que no puedo depurar el script de importación.
No sé qué hacer a partir de aquí. Hay 20 años de mensajes para importar, así que no puedo revisar los mensajes importados a mano para arreglarlos. En resumen, este script no me funciona. ¿Por qué soy el único al que le pasa esto?
No te pasa solo a ti. Mi primer trabajo pagado en Discourse fue durante meses limpiando archivos mbox antiguos que habían sido editados a mano por alguna razón que no recuerdo.
Parece que sí necesitas modificar la expresión regular o encontrar alguna otra forma de arreglar los mensajes erróneos. Una forma es usar alguna otra herramienta para dividir los mensajes, uno por archivo.
Por cierto, escribí varios scripts de importación antes de saber ruby.
Cada importación es única. Con 20 años de datos, es muy probable que tengas varios problemas diferentes a medida que las cosas cambiaron en los diversos sistemas que se utilizaron.
Quiero importar 20 años de mensajes de mi sistema mailman2 a un directorio de archivo, pero no quiero crear identificadores de usuario (ni siquiera provisionales) para ellos, ya que muchos de nuestros suscriptores se han mudado o han fallecido y se crearían muchas cuentas que solo ocuparían espacio.
¿Puedo importarlos todos bajo el mismo identificador de usuario (quizás ‘archive’)?
Y esta puede ser una pregunta tonta, pero dado que la aplicación se apaga durante el proceso de importación, ¿significa eso que los usuarios que se han suscrito a correos electrónicos sobre nuevas publicaciones no se verán inundados con correos electrónicos sobre todos los archivos que se acaban de cargar?
Puedes comentar la función import_users y todos los mensajes serán propiedad del sistema.
No ahorrarás mucho espacio.
Ningún usuario recibirá correos electrónicos hasta que haya utilizado el proceso de “olvidé mi contraseña” para iniciar sesión en su cuenta. Si estás importando estos datos a una comunidad existente, creo que los usuarios recibirán notificaciones sobre los nuevos mensajes creados por el script de importación.
Gracias, estaba revisando el script de importación y pensé que podría simplemente deshabilitar la sección de nuevos usuarios. Probar eso está en mi lista.
No se trata de espacio en disco, sino de tener posiblemente cientos de cuentas de usuario preparadas que nunca se usarán, por lo que es más como espacio mental o una lista de usuarios muy larga.
No encuentro el archivo import_mbox.sh y cuando intento ejecutar el script mbox.rb directamente, obtengo un montón de errores de Ruby:
root@lists-import:/var/www/discourse/script/import_scripts# ruby mbox.rb mbox
fatal: detected dubious ownership in repository at ‘/var/www/discourse’
To add an exception for this directory, call:
Saludos a todos. Qué gran guía. Gracias a Gerhard y a otros por contribuir.
¿Alguien ha adaptado esto para Lyris? Estoy interesado en migrar una instalación histórica y me gustaría entender si hubo alguna preocupación especial que encontraron en un proyecto similar.
Tengo este error can't modify frozen String. ¿Alguien puede sugerir una solución o averiguar qué estoy haciendo mal?
root@sajcf:~# /var/discourse/launcher stop app
Se detectó la arquitectura x86_64.
+ /usr/bin/docker stop -t 600 app
app
root@sajcf:~# /var/discourse/launcher enter import
Se detectó la arquitectura x86_64.
root@sajcf-import:/var/www/discourse# import_mbox.sh
La importación de mbox está comenzando...
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...
Creando índice
Indexando archivos en /shared/import/data/jjcf
Indexando /shared/import/data/jjcf/SAJCF.mbox
Indexando respuestas y usuarios
Creando categorías
/var/www/discourse/script/import_scripts/base.rb:447:in `strip!': can't modify frozen String: "jjcf" (FrozenError)
from /var/www/discourse/script/import_scripts/base.rb:447:in `block in create_categories'
from /var/www/discourse/script/import_scripts/base.rb:438:in `each'
from /var/www/discourse/script/import_scripts/base.rb:438:in `create_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:50:in `import_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:34:in `execute'
from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
from script/import_scripts/mbox.rb:13:in `<module:Mbox>'
from script/import_scripts/mbox.rb:11:in `<module:ImportScripts>'
from script/import_scripts/mbox.rb:10:in `<main>'
Para ser más específico, he modificado con éxito el código que permitía la importación, añadiendo .dup en la línea 447 del archivo /var/www/discourse/script/import_scripts/base.rb:
params[:name].dup.strip!
Una cosa no está clara: ¿cómo puedo importar a uno de los sitios múltiples?
¿Alguien ha encontrado un error de “no se puede modificar una cadena congelada”? Mi index.db se crea bien, pero falla al crear categorías.
root@xxxxxxxxxx:/var/www/discourse# import_mbox.sh
El proceso de importación de mbox está comenzando...
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...
creando índice
indexando archivos en /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com
indexando /shared/import/data/xxxxx-xxxxxxx@xxxxxxx.com/export.mbox
indexando respuestas y usuarios
creando categorías
/var/www/discourse/script/import_scripts/base.rb:447:in `strip!': **no se puede modificar una cadena congelada: \"xxxxx-xxxxxxx@xxxxxxx.com\" (****FrozenError****)**
from /var/www/discourse/script/import_scripts/base.rb:447:in `block in create_categories'
from /var/www/discourse/script/import_scripts/base.rb:438:in `each'
from /var/www/discourse/script/import_scripts/base.rb:438:in `create_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:50:in `import_categories'
from /var/www/discourse/script/import_scripts/mbox/importer.rb:34:in `execute'
from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
from script/import_scripts/mbox.rb:13:in `<module:Mbox>'
from script/import_scripts/mbox.rb:11:in `<module:ImportScripts>'
from script/import_scripts/mbox.rb:10:in `<main>'