Итак, обновление для тех, кто, возможно, сталкивается с той же проблемой (по сути, я не могу восстановить данные из резервной копии, и сервер упал из-за сбоя при обновлении системы).
Насколько я понимаю, корень проблемы в том, что существуют как локальные загрузки, так и загрузки в S3. Поэтому при попытке восстановления инструмент восстановления начинает сбоить, так как не знает, как одновременно обрабатывать восстановление из локальных хранилищ и из S3 (возможно, пора Discourse пересмотреть подход к резервному копированию и восстановлению).
Благодарю @RGJ за этот совет: он предложил принудительно заставить Discourse игнорировать загрузку в S3 во время восстановления:
- Добавьте строку в ваш файл app.yml:
DISCOURSE_ENABLE_S3_UPLOADS=false - Пересоберите Discourse:
./launcher rebuild app - Попробуйте выполнить восстановление (либо через страницу резервного копирования в GUI, либо используя CLI)
- После восстановления удалите эту строку из app.yml и снова выполните пересборку.
Хотя это сработало, стоит отметить, что форум был сильно повреждён: категории, настройки и посты восстановились, однако все изображения, ссылки, встроенные документы и т. д. оказались нерабочими и выдавали ошибки.
Радикальное решение:
Мне удалось восстановить старый сервер, извлечь каталог /var/discourse (в формате tar/gz), скопировать его на новый сервер и выполнить ./launcher rebuild app. Это полностью вернуло работоспособность форума, однако фундаментальная проблема остаётся — резервные копии НЕ работают, так как содержат смесь локальных загрузок и загрузок в S3.
Поэтому мне действительно нужна консультация о наилучшем способе окончательно решить эту проблему. Что лучше и проще: перенести все загрузки с локального хранилища в S3 или наоборот, и как это сделать? Весь смысл резервного копирования — помогать в таких ситуациях, как эта, но оно меня подвело, поэтому мне необходимо, чтобы вы помогли разобраться с этим.