Я использую Backblaze в качестве S3-хранилища и включил настройку очистка сиротских загрузок. Проблема в том, что вместо удаления сиротской загрузки создаётся дубликат файла размером 0 байт.
См. пример ниже. (2) указывает на количество файлов с одинаковым именем. Если развернуть, вы увидите, что оригинальный файл всё ещё существует, а также файл размером 0 байт. У кого-нибудь была похожая проблема? Это проблема Backblaze или настройки? Спасибо.
Там стоит многоточие, что указывает на то, что имя файла размером 0 байт было обрезано. Как его полное имя? Я бы поставил на то, что в бакете настроен жизненный цикл файлов, а этот файл является «маркером скрытия», как они его называют.
Когда жизненный цикл истечёт, обе версии должны исчезнуть.
Обрезанная часть «скрыта». Я думаю, вы правы. Похоже, все дублирующиеся файлы были недавно загружены. Я подожду немного и посмотрю, исчезнут ли они. Спасибо.
Привет!
Можете, пожалуйста, сообщить, решена ли уже проблема?
С вашего последнего сообщения прошло больше года, так что надеемся, что сейчас всё в порядке…
Проблема пока не решена. Я только что вручную удалил все лишние файлы из BackBlaze. Думаю, сейчас стоит перейти на S3, так как регулярная очистка хранилища сама по себе становится отдельной задачей.
Просто делюсь своим опытом…
У меня бесплатный аккаунт B2 (то есть первые 10 ГБ), и способ оплаты не привязан.
Файлы резервных копий ротятся, а «скрытые» файлы удаляются навсегда через несколько дней. У меня никогда не бывает больше 7 файлов одновременно (в Discourse включена ротация максимум из 5 ежедневных резервных копий). Поскольку размер моих резервных копий никогда не превышает ~500 МБ, мне никогда не приходилось платить за что-либо или вручную удалять «сиротские» файлы.
Спасибо. Я вижу, что здесь задействована функция copy_to_tombstone. Я не смог найти никакой документации о tombstone и сиротских файлах, поэтому могу лишь предполагать, как это работает, исходя из того, что прочитал на форуме. Поправьте меня, если я ошибаюсь:
Когда сиротский файл идентифицирован (после истечения периода grace period для очистки сиротских загрузок), он копируется в папку tombstone (copy_object).
Затем он удаляется (или должен удаляться) с помощью delete_object.
Когда наступает время (после истечения периода grace period для удаления удаленных загрузок), он удаляется из папки tombstone.
Это верно?
Судя по тому, что я вижу в Backblaze, файл действительно копируется в папку tombstone. Однако он не удаляется, а вместо этого создается пустая скрытая версия.
Итак, я связался со службой поддержки, и, похоже, проблема с «осиротевшими» файлами решается. Вот что сказала поддержка Backblaze:
Здесь происходит несколько вещей. При просмотре вашего аккаунта видно, что у вас в правилах жизненного цикла бакета установлено значение Сохранять все файлы. Если вы измените правила жизненного цикла на Сохранять только последнюю версию файла, скрытые файлы будут удаляться через 24 часа после скрытия, что освободит место на диске.
Теперь добавим ещё один слой: при использовании совместимого с S3 сервиса всякий раз, когда вызывается удаление объекта, он становится скрытым. Далее, в зависимости от правил жизненного цикла бакета, он либо удаляется, либо остаётся скрытым. В вашем случае файлы остаются скрытыми и не удаляются из-за настройки «Сохранять все файлы».
Чтобы объект удалялся при вызове его удаления, необходимо указывать ID версии файла вместе с вызовом удаления. Я не думаю, что интеграция это делает, если файлы просто скрываются.
Чтобы эти файлы удалялись из бакета, вам нужно войти в свой аккаунт Backblaze, перейти к бакету и обновить его настройки жизненного цикла на Сохранять только последнюю версию файла**. Это приведёт к удалению скрытого файла из бакета через 24 часа.
По умолчанию Backblaze устанавливает правило жизненного цикла «Сохранять все файлы» для newly созданных бакетов. Вероятно, именно поэтому у всех возникают проблемы с осиротевшими файлами. Изменение правила жизненного цикла на «Сохранять только последнюю версию файла» удаляет осиротевшие файлы через 24 часа после их скрытия.