Ayuda para migrar categoría de una instancia a otra sin administrador en la instancia de origen

Nuestro equipo ha estado operando como invitado en otra instancia de Discourse. Estamos configurando nuestra propia instancia de Discourse y nos gustaría migrar nuestras categorías de la instancia existente a la nueva. No tenemos acceso de administrador al servidor existente, pero los administradores están dispuestos a hacer una exportación de categorías para nosotros. Sin embargo, esta exportación no contiene ningún archivo adjunto o imagen. Tenemos acceso a la API de la instancia existente, pero solo a nuestras categorías. Tenemos acceso de administrador en la nueva instancia.

¿Es posible migrar archivos adjuntos e imágenes utilizando solo la API de la instancia existente?

Estuve mirando el JSON exportado y los nombres de archivo de los adjuntos son cadenas aleatorias diferentes a las que se sirven en el navegador, lo que hace que la ingeniería inversa de la API para descargar archivos adjuntos e imágenes no sea tan sencilla. Incluso si pudiéramos descargar todos los archivos adjuntos de la instancia existente, no estoy seguro de cómo agregarlos a la nueva instancia. Esta publicación me hace creer que es tan fácil como colocarlos en esa ubicación con el requisito de que los nombres de archivo sean idénticos a los del JSON exportado, pero eso no parece funcionar.

¿Alguna idea?

1 me gusta

¿Puedes explicar a qué te refieres con esto?

Si miras los datos procesados para un flujo de publicaciones json, obtendrás las URL de los adjuntos habituales.

4 Me gusta

Lo siento, no he podido responder porque soy nuevo y mi cuenta estaba en espera.

En la exportación JSON de la categoría (usando el método enlazado arriba), el adjunto en una publicación en particular se ve así:

![image|505x473](upload://yyWAy3WPpjetoctRNL9hmPvNNwm.jpeg

En el JSON cocinado de la API, la misma imagen tiene la siguiente URL:

https://my.server.com/uploads/default/original/2X/f/f23d29caba9a31b2b63b93f4104d746623703ca2.jpeg

Parece no haber relación en los nombres de archivo. Dada esta información, puedo usar la API para obtener los adjuntos que no están incluidos en la exportación. Pero no estoy seguro de qué nombre de archivo darle y dónde colocarlo en el nuevo servidor.

Una vez que eso se resuelva, ¿sería posible que los adjuntos aparecieran en las páginas de temas renderizados cuando se carguen como antes de la migración?

1 me gusta

Si miro los datos cocinados a través de la API (por ejemplo, este) entonces sí veo las URL completas de las imágenes.

Pero creo que podrías estar buscando esto:

2 Me gusta

Informando de vuelta con una solución que funciona con una instancia de prueba que no he probado en producción.

Esto es para que mi yo futuro se lo pase al equipo que realmente hará la migración o a cualquier otra persona que necesite algo similar.

Los archivos adjuntos deben tener el nombre completo, que se puede convertir de la forma corta en el json mediante el script de python en Converting short upload URLs to full URLs

Los archivos adjuntos deben colocarse en discourse/public/uploads/tombstone/default/original/

Luego, ejecute uploads:recover_from_tombstone mientras está en /var/discourse/

3 Me gusta