如何在启用版本控制的GCS存储桶中查看已删除Blob列表
解决GCS启用版本控制后查看已删除Blob列表的问题
你的代码看不到已删除Blob的核心原因是:默认调用list_blobs只会返回存储桶中当前活跃版本的Blob,已删除的Blob属于非活跃版本,必须显式指定参数才能获取。
修改后的代码
def bucketVersionHistory(self, bucket_name, serviceAccount): os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = serviceAccount # 初始化GCS客户端 client = storage.Client() # 获取存储桶对象(可选,此处主要用于确认存储桶状态) bucket = client.get_bucket(bucket_name) # 关键:设置versions=True,列出所有版本(包括已删除的非活跃版本) all_blob_versions = client.list_blobs(bucket_name, versions=True) # 筛选出已删除的Blob版本 deleted_blobs = [blob for blob in all_blob_versions if blob.deleted] # 输出已删除Blob的关键信息示例 for blob in deleted_blobs: print(f"已删除Blob名称: {blob.name}, 版本ID: {blob.generation}, 删除时间: {blob.time_deleted}") return deleted_blobs
关键说明
versions=True:这是核心参数,开启后会返回存储桶内所有Blob的所有版本,包括被标记为删除的非活跃版本blob.deleted:已删除的Blob版本会被标记为True,通过这个属性可以精准筛选出目标内容- 额外信息:可以通过
blob.generation获取版本ID,blob.time_deleted获取删除时间,方便追溯操作记录
注意事项
- 确保你的服务账号拥有
storage.objects.list权限,否则无法读取版本历史 - 确认目标存储桶确实已经启用了版本控制,未开启版本控制的存储桶不存在非活跃版本,自然看不到已删除的Blob
内容的提问来源于stack exchange,提问作者user1056388
相关产品推荐
相关产品推荐

