首页 > 解决方案 > 如何通过 Backblaze B2 API 仅列出新文件?

问题描述

根据b2_list_file_names 文档“此调用每个事务最多返回 1000 个文件名”,您可以使用该nextFileName字段获取接下来的 1000 个文件,依此类推。它没有说明这些文件的返回顺序,但类似 ​​b2_list_file_versions 的文档说“按文件名的字母顺序”,因此人们可能会怀疑 b2_list_file_names 的返回顺序相同。

这意味着在调用 b2_list_file_names 之间上传的任何新文件都不会出现在列表的末尾。

是否可以为 b2_list_file_names 选择时间顺序或以任何其他方式获取最新上传的文件?

为了避免出现XY 问题的情况,这是我真正想做的:

将所有文件的 legal_hold 设置为“on”,并为所有新文件每周执行一次。由于我有大约 400k 文件,因此每次列出所有文件都需要花钱(我认为)。

因此,解决我的问题的另一种方法是列出所有 legal_hold 未设置为“on”的文件。那可能吗?

标签: backblaze

解决方案


使用 B2(或实际上是 S3)执行此操作的方法是使用文件名。一种常见的方法是使用日期前缀,使用诸如yyyy-MM-dd/fileName. 然后,您可以使用前缀参数查询给定日期的所有文件。

由于您每周都在工作,因此您可以通过使用一年中的哪一周yyyy-ww/fileName来优化这一点。ww

另一方面,如果您想要按时间顺序排列,则可以使用yyyy-MM-dd HH:mm:ss/fileName然后使用startFileName参数来获取自给定时间点以来的所有文件。


推荐阅读