如何通过Backblaze B2 API仅列出新增文件并配置legal_hold?
关于Backblaze B2 API查询新增文件与批量设置legal_hold的解答
问题一:b2_list_file_names排序与最新文件获取
- 你的推测符合实际规则:
b2_list_file_names接口返回结果固定按文件名字母升序排列,官方不支持修改为按上传时间排序 - 获取最新上传文件的可行方案:
- 改用
b2_list_file_versions接口,该接口返回结果同样按文件名升序排列,但会附带每条文件的uploadTimestamp(上传时间戳)字段,你可以遍历返回结果筛选符合时间范围的上传记录 - 如果你的业务允许调整命名规则,后续上传的文件增加时间前缀(例如
20240520/业务标识/文件名),即可直接通过b2_list_file_names的startFileName参数,直接拉取指定日期之后上传的文件,无需全量遍历
- 改用
问题二:批量开启legal_hold的低成本实现
- 目前B2原生的文件列举接口不支持按legal_hold状态过滤,无法直接仅拉取未开启legal_hold的文件,以下是两种可落地的低成本方案:
- 时间戳增量处理:每次执行任务时记录当前的时间戳作为本次任务的截止时间,下次执行时只处理
uploadTimestamp大于上次截止时间的文件。你只需要首次全量遍历现有40万文件完成初始化,后续每周仅需要遍历当周新增的文件,接口调用成本极低 - 存储桶清单处理:开启存储桶的定期清单导出功能,导出的清单文件会包含所有文件的上传时间、legal_hold状态等元数据,你直接下载清单后过滤出未开启legal_hold的文件处理即可,该方案的成本远低于全量调用列举API
- 时间戳增量处理:每次执行任务时记录当前的时间戳作为本次任务的截止时间,下次执行时只处理
内容的提问来源于stack exchange,提问作者Peter Jaric
相关产品推荐
相关产品推荐

