Проверено: Images lost when migrating to self-hosting, команда posts:rebake не даёт положительного результата.
Проблема
Мы следовали официальным инструкциям и создали экземпляр Lightsail. Оттуда мы сделали выгрузку базы данных через интерфейс Discourse и применили её, чтобы достичь 80% готовности. Идея заключалась в переходе на собственный хостинг при сохранении работающей предыдущей версии.
После того как у нас появилась рабочая копия старого форума, мы приступили к миграции изображений. Для этого сначала отменили подписку, чтобы получить и перенести наши изображения.
Поскольку новые изображения будут загружаться на собственный экземпляр, нам нужно будет загрузить только те файлы с хостинга, которые были добавлены до даты перехода. Это означает, что мы не использовали дамп базы данных, который поставлялся вместе с изображениями и отменой подписки, так как миграция уже была выполнена, и этот дамп стал неактуальным.
Я наблюдаю три поведения, связанных с этим моментом времени:
- Ссылки на ресурсы в резервной копии (дамп SQL) указывают на инфраструктуру Discourse.
- Ссылки на ресурсы, созданные после создания резервной копии (например, изображения в новых постах), корректно указывают на нашу инфраструктуру и находятся там.
Следовательно, если я повторно загружу ресурс, который даёт тот же хэш, он будет ссылаться на инфраструктуру Discourse. Например, попытка исправить favicon путём загрузки того же файла не работает. Однако я могу загрузить любое другое случайное изображение, и оно будет работать.
Текущее состояние
Насколько я понимаю, путь upload://<X> проходит декодирование b62 (и, возможно, sha1) для сопоставления с папкой public/uploads. У нас есть все эти изображения:
Дамп, предоставленный командой Discourse, содержит zip-архив с папкой
default/original/1X, и в настоящее время он виден в/var/www/discourse/public/uploads/default/original/1X. Последняя папка теперь содержит 329 элементов, а в предоставленном дампе было 249 элементов — это кажется мне правильным.
Это означает, что данные должны быть доступны, даже если я не могу напрямую найти конкретную загрузку в папке. Я пытаюсь понять эту связь, чтобы каким-то образом исправить сопоставление. Изначально это казалось простой заменой строки, и это сработало для некоторых изображений. Однако некоторые из них теперь заменены на прозрачный transparent.png, тогда как раньше это были просто недоступные изображения.

