python - Blobstore 备份策略 Google App Engine Python

标签 python google-app-engine google-cloud-storage

我正在寻找一种方法来备份 Google App Engine 上的 blobstore,以便从意外删除中恢复。我希望能够同时备份数据存储和 blobstore,以便恢复整个系统。

我尝试过的一件事是为我的 blob 使用 Google Cloud Storage,然后制作存储桶的备份副本。但是,如果我在 blobstore 查看器中删除一个文件(它也会在谷歌云存储中删除它),然后使用 gsutil 从存储桶备份中恢复该文件,blobinfo 仍然会丢失。

我相信我必须将所有文件路径(谷歌云存储路径)存储在我的数据存储中,然后在恢复期间,使用 create_gs_key() 为所有这些文件重新创建 blob 键。 blobviewer 中存储的信息(文件名、内容类型、大小等)是否存储在数据存储中?

是否可以在不重新生成 key 的情况下备份/恢复 blobstore 数据?

最佳答案

看看 Google Cloud Storage 的 object versioning特征。在存储桶上启用版本控制,当您删除一个对象时,它会被归档。稍后您可以选择恢复或永久删除存档版本:

创建对象:

>>> PUT /bucket/obj

<<< HTTP/1.1 200 OK
<<< x-goog-generation: 12345

然后存档:

>>> DELETE /bucket/obj

<<< HTTP/1.1 200 OK

现在无法访问了:

>>> GET /bucket/obj

<<< HTTP/1.1 404 NOT FOUND

但是您仍然可以明确请求存档版本:

>>> GET /bucket/obj?generation=12345

<<< HTTP/1.1 200 OK

直到您删除归档版本:

>>> DELETE /bucket/obj?generation=12345

<<< HTTP/1.1 200 OK

当然...这并不能保护您免于意外删除存档版本。

关于python - Blobstore 备份策略 Google App Engine Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203720/

相关文章:

python - DLL加载失败: the specified module could not be found Windows 10 shell

python - 检查列表列表的函数是否具有 0 到 n 之间的所有整数元素,并且列表的长度都是给定的?

python - 乘以 pandas DataFrame 中的列列表

python - 在 Google App Engine 中上传文件并使其可下载

node.js - 如何使用云功能删除 firebase 存储中的图像?

django - 在 django 项目中配置谷歌云数据存储

python - 在python中使用tweepy从twitter获取所有关注者id的列表

python - 在 Google App Engine 上将 WTForms 与 webapp 和 Django 模板结合使用

安卓同步适配器

google-app-engine - 我的 GCP 项目正在自动创建存储桶