OK, понятно, разобрался после глубокого анализа БД. Похоже, это остатки (71 загрузка) из изначально давно отключенной среды S3 (или, в данном случае, доступной, но не основной среды S3, так как её использование было бы экономически нецелесообразным).
В итоге сделал следующее:
С исходного сервера:
./launcher enter app
sudo -u postgres psql discourse
SELECT url FROM uploads WHERE url NOT LIKE '%ExpectedS3DomainGoesHere%
(замените ExpectedS3DomainGoesHere на фактический URL, используемый в вашей конфигурации S3)
Это позволит получить URL-адреса для дальнейшей работы, так как нам нужно выполнить несколько действий.Если URL-адреса относятся к старым бакетам на других доменах, используйте клиент Amazon S3 (или клиент вашего бэкенда хранилища S3) и:
a. Синхронизируйте бакеты с неожиданными URL-адресами (если они доступны) в локальное хранилище.
b. Синхронизируйте элементы из локального хранилища в новый бакет.
discourse remap OLD-URL-FROM-DB NEW-URL-FROM-DB
Хотя в этой теме предлагалось использовать DbHelper.remap, функция remap из Discourse сработала отлично.Убедитесь, что данные мигрированы.
rails uploads:migrate_to_s3Время пересоздания (rebake)!
rails posts:rebakeСнова создайте резервную копию сайта на исходной машине/сервере. Скачайте последнюю версию.
С нового целевого сервера:
Настройте Discourse как обычно, скопируйте app.yml и другие файлы с исходного сервера на новый сервер в
/var/discourse/containers/, чтобы убедиться, что пересборка затрагивает необходимые плагины и т. д.
Однако, если вы работаете с локальными резервными копиями, обязательно закомментируйте любые записиDISCOURSE_BACKUP_LOCATION: s3в файле app.yml. У меня возникли проблемы с S3: файлы резервных копий обрезались, поэтому я выбрал локальный подход для восстановления.Следуйте инструкциям по адресу Restore a backup from the command line, чтобы загрузить резервную копию на сервер и восстановить её. Включая шаги пересборки.
Мне было довольно больно это исправлять, но после глубокого анализа таблицы uploads в БД проблема была решена. Тем не менее, похоже, всё сработало, так что…