# Перенос на S3 не удаётся из-за логотипов

**URL:** <https://meta.discourse.org/t/migrate-to-s3-fails-because-of-logo-images/262313>\
**Category:** Self-hosting\
**Tags:** s3\
**Created:** [19.Апрель.2023 18:17:03 UTC](https://meta.discourse.org/t/migrate-to-s3-fails-because-of-logo-images/262313 "2023-04-19T18:17:03Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![jfmontanaro](https://avatars.discourse-cdn.com/v4/letter/j/f14d63/32.png) [@jfmontanaro](https://meta.discourse.org/u/jfmontanaro)\
**Post date:** [19.Апрель.2023 18:17:03 UTC](https://meta.discourse.org/t/migrate-to-s3-fails-because-of-logo-images/262313/1 "2023-04-19T18:17:03Z")

</div>

Я перемещаю существующий сайт с локального хранения загрузок на S3, следуя [этому руководству](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229). Всё работает корректно для новых загрузок: я вручную проверил, что они отображаются в S3. Однако при попытке запустить `rake uploads:migrate_to_s3` я получаю следующий вывод:

```plaintext
Обратите внимание, что миграция на S3 в настоящее время необратима!
Нажмите [CTRL+c] для отмены или [ENTER] для продолжения.

Миграция загрузок на S3 для 'default'...
Некоторые загрузки не были перенесены по новой схеме. Запускаю миграцию, это может занять некоторое время...
rake aborted!
FileStore::ToS3MigrationError: Некоторые загрузки не удалось перенести по новой схеме. Вам необходимо исправить это вручную.
/var/www/discourse/lib/file_store/to_s3_migration.rb:162:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:127:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)

```

Изучив файл, в котором возникает ошибка (`lib/file_store/to_s3_migration.rb`), я вижу, что там выполняется проверка таблицы `uploads` на наличие строк, где `url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'`. В моём случае `seeded_image_url`, как я предполагаю, разрешается в `uploads/default/original/_X/`.

Я вручную выполнил аналогичную проверку в базе данных и получил следующие результаты:

 ![image](https://global.discourse-cdn.com/meta/original/4X/8/c/5/8c57c4ef781020ce888111f6f9c12d6bc1111d07.png)  
Две нижние записи меня не беспокоят: скорее всего, это случайные артефакты переключения — если у них нет `url`, то сайт, вероятно, не знает, где их найти, поэтому их можно безопасно удалить. Однако меня больше беспокоят логотипы. Это стандартные логотипы, которые мы всё ещё используем, но они распространяются вместе с кодовой базой, а не загружаются отдельно.

Безопасно ли добавить третье условие в `to_s3_migration.rb` (строка 146), которое также будет игнорировать загрузки, URL-адрес которых начинается с `/images/`? Или мне просто удалить эти строки, поскольку эти файлы теперь обрабатываются отдельно от загрузок, и это лишь артефакт более старой версии Discourse? Или же я неправильно понял, что делает эта задача (я не очень хорошо знаком с Rails), и проблема заключается в чём-то другом?

---

_[View the full topic](https://meta.discourse.org/t/migrate-to-s3-fails-because-of-logo-images/262313)._
