You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在启用版本控制的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:53:12