Google cloud storage 延迟从google云存储桶中永久删除

Google cloud storage 延迟从google云存储桶中永久删除,google-cloud-storage,Google Cloud Storage,我想确保删除的文件有一个恢复窗口。我希望使用谷歌云存储提供的原语,这样我就不必维护必要的逻辑来防止错误删除的文件无法恢复 我认为没有比这样做更好的方法: 为显示给用户的文件创建normalbucket 为挂起永久删除的文件创建trashbucket,在创建N天后删除对象 当从normal存储桶发出文件删除请求时,首先将文件复制到trash存储桶,然后从normal存储桶删除文件 实现延迟永久删除GCP云存储的“惯用”方式是什么 注意:我试图避免计时作业或额外的数据库交互 注意:这不是软删除,因为

我想确保删除的文件有一个恢复窗口。我希望使用谷歌云存储提供的原语,这样我就不必维护必要的逻辑来防止错误删除的文件无法恢复

我认为没有比这样做更好的方法:

  • 为显示给用户的文件创建
    normal
    bucket
  • 为挂起永久删除的文件创建
    trash
    bucket,在创建N天后删除对象
  • 当从
    normal
    存储桶发出文件删除请求时,首先将文件复制到
    trash
    存储桶,然后从
    normal
    存储桶删除文件
  • 实现延迟永久删除GCP云存储的“惯用”方式是什么

    注意:我试图避免计时作业或额外的数据库交互


    注意:这不是软删除,因为该文件最终将被永久删除,而不会有任何与之相关的跟踪/存储

    您可以像这样将所有文件保存在同一个存储桶中,前提是:

  • 每个文件也在数据库中引用,您正在查询该数据库以构建UI
  • 您可以编写后端代码来管理bucket—人们不会直接使用云存储SDK处理文件
  • 它使用云任务计划删除:

  • 用户请求删除文件
  • 文件在数据库中被标记为“已删除”,而不是从bucket中实际删除
  • 用于计划从现在起5天内的实际删除
  • 按计划,任务触发一个函数,该函数删除文件及其数据库记录

  • 您的用户界面必须查询数据库,以区分已删除文件和垃圾文件。

    非常感谢@Doug Stevenson处理此问题。如果可能的话,我会尽量避免另一个单独的数据库。也就是说,如果这是在谷歌云存储中实现这一功能的“惯用”方式,那么我将把它标记为公认的答案。一般来说,我对GCP很陌生。再次感谢您的帮助!由于云存储无法对其内容进行灵活的查询,因此许多人选择使用数据库对其进行扩充,以便更容易找到具有特定属性的文件。我不知道这是否被认为是“惯用的”,但它对于许多用例来说是常见和必要的。您应该使用最能满足您个人需求的解决方案。我所指的
    normal
    存储桶中存储的对象数量是最小的,因此我只需要从
    gsutil ls gs://
    中简单列出内容。也就是说,可能是因为其他原因,我的做法是错误的。再次感谢您分享您的经验!没有答案和否决票……我能做些什么来改进这个问题吗?