Это похоже на проблему, описанную в Can't restore a backup if it includes link to Discourse onebox ![]()
Вы должны иметь возможность исправить это во время восстановления, но для этого потребуется работа в командной строке.
cd /var/discourse
./launcher enter app
# Запустите восстановление с аргументом --pause
discourse restore --pause <backup_filename>
Процесс восстановления приостановится в двух точках:
- Перед выполнением миграций базы данных — это можно проигнорировать; нажмите любую клавишу, чтобы продолжить.
- Перед восстановлением файлов. У вас будет доступ к неизменённой таблице
uploads(переназначения ещё не выполнены), что позволит исправить файлы до того, как процесс восстановления прервётся из-за них.
Теперь откройте ещё одну сессию SSH на вашем сервере и запустите rails console:
cd /var/discourse
./launcher enter app
rails c
Вам нужно будет определить, какой Post вызывает сбой восстановления. Если вам повезёт, вы найдёте его, выполнив в rails console следующую команду:
current_db = RailsMultisite::ConnectionManagement.current_db
cdn_path = SiteSetting.cdn_path("/uploads/#{current_db}/original").sub(/https?:/, "")
Post.where("cooked LIKE '%#{cdn_path}%'")