3

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

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

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

无论如何都可以在不重新生成密钥的情况下备份/恢复 blobstore 数据?

4

2 回答 2

0

您可以尝试使用datastoreadmin backup and restore

它将使用完整的 blob 键备份数据存储实体。根据以下内容,您仍然需要像已经在做的那样单独备份 blob。

注意:虽然我们会备份 BlobKey 和 Blob 类型的数据存储实体属性,但我们不会备份存储在 Blobstore 或 Google Cloud Storage 中的相关 Blob 本身。我们也不备份与这些 blob 关联的数据存储 BlobInfo 实体。

请注意,您还可以定期安排这些备份

于 2013-06-12T01:12:56.977 回答
0

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

创建一个对象:

>>> 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

当然……这并不能防止您意外删除存档版本。

于 2013-05-18T22:32:30.373 回答