# Отсутствуют загрузки после миграции S3 → S3

**URL:** <https://meta.discourse.org/t/missing-uploads-after-s3-s3-migration/227195>\
**Category:** Support\
**Created:** [16.Май.2022 11:43:54 UTC](https://meta.discourse.org/t/missing-uploads-after-s3-s3-migration/227195 "2022-05-16T11:43:54Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![domstubbs](https://avatars.discourse-cdn.com/v4/letter/d/898d66/32.png) [@domstubbs](https://meta.discourse.org/u/domstubbs)\
**Post date:** [16.Май.2022 11:43:54 UTC](https://meta.discourse.org/t/missing-uploads-after-s3-s3-migration/227195/1 "2022-05-16T11:43:54Z")

</div>

Я перенес файлы из одного S3-бакета в другой, следуя рекомендациям [из этого обсуждения](https://meta.discourse.org/t/how-do-i-move-my-s3-upload-bucket-from-one-provider-to-another/178484/7). С дополнительной помощью команд `uploads:recover_from_tombstone` и `posts:rebake` я практически восстановил всё – но не полностью.

Я не разработчик на Ruby, поэтому мои возможности по отладке ограничены. При запуске `uploads:recover` теперь я получаю множество сообщений вроде этих:

> Warning /t/foo/489/5 had an incorrect 4ff3ad05b76e1888161f41fd86da66efc16c290c should be 0b029ef3549e72dd5e3498abc7f979736d279a5e storing in custom field ‘rake uploads:fix\_relative\_upload\_links’ can fix this  
> Warning /t/bar/498/4 had an incorrect 0649edb23196a8c84a9d71c04147bd8f0c96d0f7 should be f5b4e4bb3eedcd0fb83a06eecc4920f20c5e2bc4 storing in custom field ‘rake uploads:fix\_relative\_upload\_links’ can fix this  
> Warning /t/bar/498/4 had an incorrect 0649edb23196a8c84a9d71c04147bd8f0c96d0f7 should be f5b4e4bb3eedcd0fb83a06eecc4920f20c5e2bc4 storing in custom field ‘rake uploads:fix\_relative\_upload\_links’ can fix this

Эти предупреждения, похоже, соответствуют постам с битыми загрузками, что звучит обнадеживающе. Однако при запуске `fix_relative_upload_links` ничего не происходит.

```plaintext
rake uploads:fix_relative_upload_links --trace
** Invoke uploads:fix_relative_upload_links (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:fix_relative_upload_links
skipping missing upload in https://foo.com/t/bar/7/2 <img src="/uploads/default/35/f450f88541e87c52.png" width="198" height="70">
skipping missing upload in https://foo.com/t/bar/7/2 <img src="/uploads/default/36/0b73d33d9df37a66.png" width="120" height="43">

```

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

Существует сообщение о [похожей проблеме](https://meta.discourse.org/t/old-image-uploads-become-broken-images/47236/64?u=domstubbs) годичной давности, но я не нашел аналогичных сообщений с решением.

Я понимаю, что делаю то, что официально не поддерживается, но буду благодарен за любые советы.

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

Спасибо.

Редакция: Я также попробовал [конвертировать](https://meta.discourse.org/t/converting-short-upload-urls-to-full-urls/131760?u=domstubbs) битые URL-адреса `upload://` и сравнить их с записями в таблице uploads, но это мне мало что прояснило.

Когда я проверяю рабочий URL `upload://`, он соответствует записи в таблице `uploads` с корректным URL, но при проверке битого URL… он также соответствует записи с корректным URL. Кажется, что в БД есть валидные данные, и файлы действительно существуют на S3 по адресу, указанному в таблице uploads. Я могу открыть эти URL-адреса S3 в браузере без проблем, поэтому я не понимаю, почему они не загружаются.

---

_[View the full topic](https://meta.discourse.org/t/missing-uploads-after-s3-s3-migration/227195)._
