Сначала я попытался исправить миграцию с S3, но после того, как завершил использование собственной миграции в качестве тестовой среды для разрабатываемого кода, мне сказали, что я выбрал совершенно неверный подход. Это утверждение подтвердилось повреждением данных в моем (крупном) экземпляре, который я мигрировал с S3 на локальные файлы. Недавно мне пришлось вручную исправить поврежденные данные в базе данных, и я не ожидаю, что с очисткой последствий моей попытки покончено.
Если бы я сейчас начал миграцию с S3 на собственное хранилище, я бы запустил контейнер MinIO рядом с Discourse, использовал minio-client для копирования данных из S3 в контейнер MinIO, перенастроил Discourse на новый «S3»-адрес локального MinIO, а затем выполнил posts:remap или перекомпилировал все посты для обслуживания «S3» из контейнера MinIO.
Вот пример того, как должен работать posts:remap в данном случае. Мне кажется, где-то здесь есть более подходящий пример, но этого должно быть достаточно для начала.