30 вересня 2026 р. · 5 хв читання

Як автоматично видаляти файли через кілька днів у S3, R2 і B2

Тимчасові файли накопичуються: знімки екрана для рев’ю, збірка для тестувальника, файл для клієнта. Правила життєвого циклу дають бакету змогу прибирати за собою. Секрет у тому, щоб визначати термін життя файлу під час вивантаження, кладучи його під префікс, для якого є правило.

Схема з префіксами

Створіть по одному правилу для кожного терміну, кожне зі своєю папкою:

  • tmp/1d/ видаляє через 1 день
  • tmp/7d/ видаляє через 7 днів
  • tmp/30d/ видаляє через 30 днів

Вивантажте файл у tmp/7d/2026/09/report.pdf, і за тиждень його не стане. Усе, що поза tmp/, ніколи не зачіпається.

Cloudflare R2

  1. Відкрийте Settings бакета, знайдіть Object lifecycle rules і виберіть Add rule.
  2. Дайте правилу назву, наприклад expire-7d, і задайте префікс tmp/7d/.
  3. Виберіть видалення об’єктів через 7 days після вивантаження й збережіть.

Або через Wrangler:

npx wrangler r2 bucket lifecycle add your-bucket expire-7d tmp/7d/ --expire-days 7

Amazon S3

  1. Відкрийте бакет, перейдіть до Management і виберіть Create lifecycle rule.
  2. Назвіть правило й виберіть Limit the scope using filters із префіксом tmp/7d/.
  3. У діях виберіть Expire current versions of objects і введіть 7 днів. У бакеті з версіонуванням також остаточно видаляйте неактуальні версії.

Через AWS CLI:

{
  "Rules": [
    {
      "ID": "expire-7d",
      "Status": "Enabled",
      "Filter": { "Prefix": "tmp/7d/" },
      "Expiration": { "Days": 7 }
    }
  ]
}
aws s3api put-bucket-lifecycle-configuration --bucket your-bucket \
  --lifecycle-configuration file://lifecycle.json

Ця команда замінює всю конфігурацію життєвого циклу бакета, тож додайте до неї й ті правила, що вже існують.

Backblaze B2

У Lifecycle Settings бакета виберіть власні правила й додайте правило з префіксом назви файлу tmp/7d/. B2 працює у два етапи: days from uploading to hiding (днів від вивантаження до приховування) і days from hiding to deleting (днів від приховування до видалення). Задайте 6 і 1, щоб файл зникав приблизно через тиждень.

Коли саме видаляються файли?

Правила життєвого циклу виконуються у фоновому режимі, зазвичай раз на добу. Amazon S3 рахує від часу вивантаження, округлює до наступної півночі за UTC, а потім ставить об’єкт у чергу на видалення; платити за нього ви перестаєте, щойно спливе термін. На практиці файл може лишатися доступним ще приблизно добу після своєї дати. Якщо посилання має перестати працювати в точно визначений час, використайте натомість підписану URL-адресу.

Поширені запитання

Чи видаляють правила життєвого циклу файли, коли мій комп’ютер вимкнено?

Так. Правила зберігаються в бакеті й виконуються на боці провайдера, тож з вашого боку нічого не має бути запущено.

Чи можна видаляти файли через кілька годин, а не днів?

Ні. Правила життєвого циклу працюють лише з цілими днями. Для посилань, які мають перестати працювати за кілька годин, залиште файл приватним і поділіться підписаною URL-адресою.

Чи видалить правило життєвого циклу файли поза префіксом?

Ні. Правило з фільтром за префіксом стосується лише ключів, що починаються з цього префікса. Правило без фільтра діє на весь бакет, тож завжди задавайте фільтр.