Помощь в переносе категории с одного инстанса на другой без прав администратора на исходном инстансе

Наша команда работала как гость на другом экземпляре Discourse. Мы разворачиваем собственный экземпляр Discourse и хотим перенести категории с существующего экземпляра на новый. У нас нет доступа администратора к существующему серверу, но администраторы готовы сделать экспорт категорий для нас. Однако этот экспорт не содержит никаких вложений или изображений. У нас есть доступ к API существующего экземпляра, но только к нашим категориям. На новом экземпляре у нас есть доступ администратора.

Возможно ли перенести вложения и изображения, используя только API существующего экземпляра?

Я изучил экспортированный JSON, и имена файлов вложений представляют собой различные случайные строки, отличные от тех, что отображаются в браузере, что делает обратную разработку API для загрузки вложений и изображений не такой простой. Даже если мы сможем загрузить все вложения с существующего экземпляра, я не уверен, как добавить их на новый экземпляр. Этот пост заставляет меня поверить, что это так же просто, как поместить их в это место при условии, что имена файлов идентичны тем, что указаны в экспортированном JSON, но это, похоже, не работает.

Есть какие-либо идеи?

Не могли бы вы пояснить, что вы имеете в виду?

Если вы посмотрите обработанные данные для потока JSON-сообщений, то увидите обычные URL-адреса вложений.

Извините, я не смог ответить, так как я новичок, и моя аккаунт был приостановлен.

В JSON-экспорте категорий (используя метод, ссылку на который я предоставил выше) вложение в конкретном сообщении выглядит следующим образом:

image

В обработанном JSON от API у того же изображения следующий URL:

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

Между именами файлов, по-видимому, нет никакой связи. С учётом этой информации я могу использовать API для получения вложений, которые не включены в экспорт. Однако я не уверен, какое имя файла указать и куда разместить файл на новом сервере.

После того как этот вопрос будет решён, возможно ли будет отображать вложения на отрисованных страницах тем при их загрузке, как это было до миграции?

Если я посмотрю на отформатированный текст через API (например, этот), то я вижу полные URL-адреса изображений.

Но, думаю, вы ищете вот это:

Сообщаю о решении, которое работает на тестовом экземпляре, но я ещё не пробовал его на продакшене.

Это запись для меня на будущее, чтобы передать команде, которая будет заниматься миграцией, или любому другому, кому понадобится что-то подобное.

К вложениям следует применять полное имя, которое можно преобразовать из краткой формы в JSON с помощью Python-скрипта по ссылке: Converting short upload URLs to full URLs

Вложения следует разместить в discourse/public/uploads/tombstone/default/original/.

Затем выполните команду uploads:recover_from_tombstone, находясь в каталоге /var/discourse/.