Notre équipe a fonctionné en tant qu’invité sur une autre instance Discourse. Nous mettons en place notre propre instance Discourse et souhaitons migrer nos catégories de l’instance existante vers la nouvelle instance. Nous n’avons pas d’accès administrateur au serveur existant, mais les administrateurs sont disposés à effectuer une exportation de catégories pour nous. Cependant, cette exportation ne contient pas de pièces jointes ni d’images. Nous avons un accès API à l’instance existante, mais uniquement à nos catégories. Nous avons un accès administrateur à la nouvelle instance.
Est-il possible de migrer les pièces jointes et les images en utilisant uniquement l’API de l’instance existante ?
J’ai examiné le JSON exporté et les noms de fichiers des pièces jointes sont des chaînes aléatoires différentes de celles servies dans le navigateur, ce qui rend l’ingénierie inverse de l’API pour télécharger les pièces jointes et les images moins simple. Même si nous pouvions télécharger toutes les pièces jointes de l’instance existante, je ne suis pas sûr de la manière de les ajouter à la nouvelle instance. Ce post me fait croire qu’il suffit de les déposer à cet endroit en exigeant que les noms de fichiers soient identiques à ceux du JSON exporté, mais cela ne semble pas fonctionner.
Il semble n’y avoir aucune relation dans les noms de fichiers. Compte tenu de ces informations, je peux utiliser l’API pour récupérer les pièces jointes qui ne sont pas incluses dans l’exportation. Mais je ne suis pas sûr du nom de fichier à lui donner et où le placer sur le nouveau serveur.
Une fois que cela sera résolu, sera-t-il possible que les pièces jointes apparaissent sur les pages de rendu des sujets lorsqu’elles sont chargées comme avant la migration.
Retour d’information avec une solution qui fonctionne avec une instance de test que je n’ai pas essayée en production.
Ceci est pour que mon futur moi transmette à l’équipe qui effectuera réellement la migration ou à toute autre personne ayant besoin de quelque chose de similaire.
Les pièces jointes doivent recevoir le nom complet, qui peut être converti à partir de la forme courte dans le json via le script python dans Converting short upload URLs to full URLs
Les pièces jointes doivent être placées dans discourse/public/uploads/tombstone/default/original/
Ensuite, exécutez uploads:recover_from_tombstone tout en étant dans /var/discourse/