Миграция загрузок из S3 в локальное хранилище

Я хочу перенести файлы из S3 обратно на локальный сервер. Я вручную перемещаю все файлы из S3 в папку uploads. Достаточно ли будет изменить базовый URL ссылок на загрузку обратно на базовый URL форума, чтобы завершить задачу?

Почему вы не используете встроенную задачу rake? Насколько я знаю, она называется uploads:migrate_from_s3

cd /var/discourse
./launcher enter app
rake uploads:migrate_from_s3

Затем отключите настройку сайта enable s3 uploads:

И наконец, выполните ребейк:

rake posts:rebake

Потому что мой S3 — это Minio, и я не уверен, совместима ли эта функция с ним.

Я попробовал это, но после завершения никаких изменений в загрузках не произошло. Загрузки всё ещё обслуживаются из S3. Кстати, эта rake-задача показалась мне странной. Она завершилась так быстро, хотя у меня тысячи файлов в S3. Это должно было занять какое-то время.

Я вручную перенёс все свои загрузки на локальный сервер. Есть ли способ изменить все ссылки в базе данных и в постах напрямую? Мне не нужно использовать эту rake-задачу.

Вы уже разобрались с этим? Я тоже планирую перенести все ресурсы (кроме резервных копий) из S3 обратно на локальный сервер. Есть ли простой способ это сделать?

Я тоже ищу похожий вариант. Но я где-то на этом самом сайте прочитал, что для корректной работы сначала нужно решить несколько серьезных проблем. Поэтому на данный момент они рекомендуют не переносить S3 на локальный сервер.

Хотя я тоже с нетерпением жду решения этой проблемы.

Существует скрытая настройка сайта с названием вроде «скачивать загрузки S3 на локальный диск при резервном копировании». Думаю, вы можете использовать её для восстановления на другом сервере (или, возможно, на вашем сервере, если измените настройки, используя скрытые настройки сайта в переменных окружения). Именно так cdck поступает при закрытии аккаунта, и у меня никогда не возникало проблем с восстановлением их резервных копий.

Я выполнил команду для этой настройки в консоли Rails: SiteSetting.include_s3_uploads_in_backups = true. Но это, похоже, не имело никакого эффекта. Размер резервной копии остался прежним (примерно 375 МБ, даже когда мои загрузки составляют около 700 МБ–1 ГБ).

Если под «перекрытыми настройками сайта» вы имеете в виду все настройки S3 в веб-интерфейсе Disco, то да, у меня все эти поля заполнены соответствующими значениями.

Я также планирую перенести свои загрузки из S3 на локальный сервер (отдельный VPS). Есть ли документированная процедура для этого?

Не совсем. Я бы попробовал использовать настройку, которую я описал выше

Есть ли способ найти эти скрытые настройки?

Та, которая может понадобиться в контексте этого обсуждения, указана выше. Вы можете увидеть их все в файле site_settings.yml в исходном коде Discourse.

Эта задача rake больше недоступна в версии 2.9.0 BETA 8.

У кого-нибудь есть идеи, как выполнить миграцию с S3 на локальное хранилище?

Вы можете включить скрытую настройку сайта, которая называется примерно download_s3_with_backups (точно не помню, сейчас на телефоне не могу найти), а затем восстановить эту резервную копию. Именно так происходит при переходе с хостинга cdck, и это работает. Возможно, вам понадобится восстановить данные на другом сервере (а в любом случае это нужно для тестирования).

Редактирование: спасибо @Benjamin_D! Это include_s3_uploads_in_backups

Думаю, это оно:

Разве эта опция недоступна на странице настроек в панели управления администратора сайта Backup? И разве это не противоположность скачиванию файлов из S3?

Нет.

backup_with_uploads не то же самое, что include_s3_uploads_in_backups. Одна из них включает локальные файлы в резервную копию. Другая загружает каждый отдельный файл из S3 при каждом создании резервной копии. А весь смысл использования S3 заключается в том, что вам не нужно делать его резервные копии.

Таким образом, это включает локальные файлы при создании резервной копии на S3.

Это загружает файлы из хранилища S3 для включения в резервную копию (которая может быть локальной или на S3).


Я пытаюсь понять правильные шаги здесь. Цель — перенести все файлы из S3 на локальный сервер. Если я правильно понимаю ваши слова:

  1. Включить backup_with_uploads из консоли Rails.
  2. Создать резервную копию (либо локальную, либо на S3).
  3. Восстановить систему из резервной копии.
  4. Отключить backup_with_uploads из консоли Rails.

Правильно ли я понимаю?

Итак, какой на самом деле лучший подход для переноса из S3 в локальное хранилище? :slight_smile:

  • Ручное перемещение файлов (папки optimized/original) и выполнение post-rebake после отключения опции S3 в Discourse?
  • Использование скрытой административной опции download_s3_with_backups для скачивания и распаковки этих файлов?
  • Выполнение rake uploads:migrate_from_s3?