Перенос с BackBlaze B2 на Digital Ocean Spaces

Здравствуйте,

Я немного запутался в этой ситуации. У нас есть бакет BackBlaze B2 для загрузок (изображения и ресурсы) в связке с BunnyCDN. B2 Cloud Storage не поддерживает удаление объектов (tombstone), поэтому у нас накопилось много неиспользуемых изображений и скриптов. Теперь я хочу перенести эти загрузки в Digital Ocean Spaces, сохранив ту же настройку BunnyCDN, просто изменив URL источника (origin) на DO.

Мы использовали этот замечательный гайд для настройки B2 Cloud Storage. Теперь хотим адаптировать его под версию DO.


Какая лучшая практика для выполнения миграции? У нас около 10 ГБ загрузок. В B2 есть функция Snapshots, но она работает очень медленно. Код консоли rake uploads:migrate_from_s3 сначала скачивает всё из S3, а затем нам нужно заново обработать (rebake) посты, что также является очень медленным процессом из-за изображений. После этого процесса мы можем загрузить всё в DO Spaces. Так ли это?

Что произойдет, если мы создадим Snapshot в B2 Cloud Storage, затем вручную скачаем его на компьютер и загрузим всё в DO Spaces? После этого мы изменим URL источника в зоне pull BunnyCDN на DO Spaces, обновим файл app.yml и пересоберем систему. Потребуется ли в этом случае заново обрабатывать (rebake) посты?

Ещё один вопрос… Что произойдет с неиспользуемыми файлами и изображениями в DO Spaces? Система распознает эти файлы и удалит их?

Спасибо за любую помощь :slight_smile:

Я думаю, что самый простой способ — включить скрытую настройку, которая загружает все файлы S3 в резервную копию в консоли (вы сможете найти её здесь или в исходном коде), переключиться на Spaces, восстановить резервную копию и пересобрать контейнер.

Не забудьте отключить настройку загрузки изображений, иначе при каждой резервной копии вы будете загружать и выгружать все ваши файлы!

Я уже много лет пытаюсь разобраться в этом, но мои тесты постоянно проваливаются, вероятно, из-за пограничных случаев. Дайте знать, если это сработает. Вы можете протестировать это, восстановив данные на тестовом сайте.

Спасибо! :slightly_smiling_face: Значит, этот процесс резервирует всё из S3. После загрузки на компьютер и перед восстановлением будет создан огромный файл резервной копии в B2 Cloud Storage. Нужно ли изменить файл app.yml и настройки CDN, чтобы они указывали на DO Spaces? Тогда файлы будут восстановлены в DO Spaces.

Но при создании файла резервной копии в app.yml должны быть указаны данные DO Spaces для восстановления в правильное место. Или я могу отредактировать файл app.yml внутри резервной копии после её создания? :slightly_smiling_face:

О, да, я забыл, что резервная копия также находится в B2 Cloud Storage. Просто ещё один бакет.

Хорошая мысль. Вы бы изменили настройку на локальное резервное копирование.

Я нашел это, поэтому думаю: что будет, если мигрировать из облака в облако, просто изменив CDN и файл app.yml? Это сработает? :slight_smile: Если да, то, возможно, это будет самое простое и быстрое решение для этого процесса. Они также поддерживают BackBlaze.

Думаю, это должно сработать, и если CDN одинаковый, то, по-моему, трогать базу данных не потребуется.

Да, тот же CDN, просто измените URL источника зоны вытягивания на DO Spaces. :slight_smile:

Я нашёл другой способ сделать это, который попробую завтра.

  1. Перестройте сайт с использованием новых параметров
  2. Переместите файлы со старого хранилища на новое с помощью CLI aws s3
  3. Используйте DbHelper.remap для перенастройки пути со старого хранилища на новое.

Спасибо, Фалько, я попробую! :heart::slightly_smiling_face:

Я нашёл информацию о процессе переназначения на howto здесь:

Теперь я просто поищу в Google, как использовать AWS S3 CLI. Надеюсь, найду пошаговое руководство. Спасибо. :slightly_smiling_face:

Вчера я выполнил миграцию без каких-либо проблем! :slight_smile: Спасибо Falco! :heart: DO Spaces исправляет множество ошибок, которые были ранее в B2 Cloud Storage, и работает намного быстрее. Спасибо вам, ребята, за помощь! :slight_smile:

Можете рассказать подробнее об ошибках Backblaze? Я рекомендовал его (хотя в основном для резервного копирования).

У нас было много предупреждений «url forbidden» от JS-файлов в логах. Теперь логи чистые. Иногда composer зависал, возникали подобные ошибки. Теперь всё работает плавно и быстро.

Они никогда не уведомляют нас об истечении срока действия API-ключа. Это одна из самых больших проблем. Однако на панели B2 указано, что срок действия никогда не истекает, но на самом деле ключ всегда истекает через несколько месяцев и ломает наш сайт. Я думаю, у B2 есть какие-то простои или нестабильность, потому что иногда загрузка изображений не работала.

Не знаю, возможно, была проблема с push-уведомлениями, и это тоже могло стать причиной. Но точно не уверен, сейчас тестируем. :slightly_smiling_face:

Для нас это было хорошим решением перенести хранилище на DigitalOcean Spaces во Франкфурте, так как наш форум тоже там. Быстрее и стабильнее на данный момент. Надеюсь, так будет и в будущем. :slightly_smiling_face:

Отлично! Можете поделиться шагами, которые вы предприняли для выполнения миграции?