30 tháng 9, 2026 · 5 phút đọc

Cách tự động xóa tệp sau vài ngày trên S3, R2 và B2

Các lượt chia sẻ tạm thời cứ thế chồng chất: ảnh chụp màn hình để duyệt, bản build cho người kiểm thử, một tệp cho khách hàng. Quy tắc vòng đời giúp bucket tự dọn dẹp. Mẹo là quyết định thời hạn ngay khi tải lên, bằng cách đặt tệp dưới một tiền tố đã có quy tắc.

Mẫu tiền tố

Tạo một quy tắc cho mỗi thời hạn, mỗi quy tắc giới hạn trong thư mục riêng:

  • tmp/1d/ xóa sau 1 ngày
  • tmp/7d/ xóa sau 7 ngày
  • tmp/30d/ xóa sau 30 ngày

Tải một tệp lên tmp/7d/2026/09/report.pdf và một tuần sau nó sẽ biến mất. Mọi thứ nằm ngoài tmp/ không bao giờ bị động đến.

Cloudflare R2

  1. Mở Settings của bucket, tìm Object lifecycle rules, rồi chọn Add rule.
  2. Đặt tên, ví dụ expire-7d, và đặt tiền tố là tmp/7d/.
  3. Chọn xóa đối tượng 7 days sau khi tải lên và lưu.

Hoặc dùng Wrangler:

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

Amazon S3

  1. Mở bucket, vào Management và chọn Create lifecycle rule.
  2. Đặt tên quy tắc và chọn Limit the scope using filters với tiền tố tmp/7d/.
  3. Trong phần hành động, chọn Expire current versions of objects và nhập 7 ngày. Với bucket có bật versioning, hãy chọn thêm xóa vĩnh viễn các phiên bản không còn hiện hành.

Với 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

Lệnh này thay thế toàn bộ cấu hình vòng đời của bucket, nên hãy đưa vào cả những quy tắc đã có.

Backblaze B2

Trong Lifecycle Settings của bucket, chọn quy tắc tùy chỉnh và thêm một quy tắc với tiền tố tên tệp tmp/7d/. B2 hoạt động theo hai giai đoạn: days from uploading to hiding và days from hiding to deleting. Đặt lần lượt là 6 và 1 để tệp biến mất sau khoảng một tuần.

Chính xác khi nào tệp bị xóa?

Quy tắc vòng đời chạy ngầm, thường mỗi ngày một lần. Amazon S3 tính từ thời điểm tải lên, làm tròn lên nửa đêm UTC tiếp theo, rồi đưa đối tượng vào hàng đợi xóa; bạn ngừng trả phí cho đối tượng ngay khi nó hết hạn. Trên thực tế, tệp có thể vẫn truy cập được thêm khoảng một ngày sau hạn. Nếu liên kết phải ngừng hoạt động vào đúng một thời điểm, hãy dùng presigned URL.

Câu hỏi thường gặp

Quy tắc vòng đời có xóa tệp khi máy tính của tôi tắt không?

Có. Quy tắc được lưu trong bucket và chạy ở phía nhà cung cấp, nên phía bạn không cần chạy gì cả.

Tôi có thể xóa tệp sau vài giờ thay vì vài ngày không?

Không. Quy tắc vòng đời tính theo ngày tròn. Với liên kết cần hết hạn trong vài giờ, hãy giữ tệp riêng tư và chia sẻ presigned URL.

Quy tắc vòng đời có xóa tệp ngoài tiền tố không?

Không. Quy tắc có bộ lọc tiền tố chỉ ảnh hưởng đến các khóa bắt đầu bằng tiền tố đó. Quy tắc không có bộ lọc áp dụng cho cả bucket, nên luôn đặt bộ lọc.