将 Google Cloud Storage 备份到另一个存储桶

bry*_*yan 2 php google-app-engine google-cloud-storage

我知道有可用于备份 google 数据存储的 cronjob,但是否有任何简单的方法可以创建 cronjob 以将 Google Cloud Storage 每日备份到另一个 Cloud Storage 存储桶?

我知道我可以使用这样的东西:

gsutil cp -D -R gs://<bucket>/* gs://<backup>/folder
Run Code Online (Sandbox Code Playgroud)

或者我已经准备了一些关于对象版本控制的东西,但不确定这是否与我想要做的有关。

但是我想在使用 php appengine 而不是在计算引擎中的 cronjob 中执行此操作。

我知道我可以像这样创建对象:(但是有没有一种方法可以轻松迁移和复制数据?)

$document_data = "123456789";
$object_url = "gs://<bucket>/file.ext";
$options = stream_context_create(['gs'=>['acl'=>'private']]);
$my_file = fopen($object_url, 'w', false, $options);
fwrite($my_file, $document_data);
fclose($my_file);
Run Code Online (Sandbox Code Playgroud)

Sim*_*onH 5

有点晚了,但是GCS Transfer正是您要找的。

从文档:

将数据从 Amazon Simple Storage Service (S3)、HTTP/HTTPS 服务器或其他存储桶传输到您的 Cloud Storage 存储桶。您可以安排一次性或每日传输,并且您可以根据名称前缀和更改时间来过滤文件。


Bra*_*ugh 2

没有像数据存储的备份/恢复工具那样的等效自动化 GCS 工具。正如您所指出的,在 GCE 实例上运行的 cronjob 是完成此类任务的最简单方法。

对象版本控制可能会满足您的需求,具体取决于您想要备份的原因。对象版本控制的工作原理是保留对象的多个副本,以便每次覆盖或删除对象时,其先前的状态都会保留为具有相同名称但不同“代”编号的对象。您还可以将 Google Cloud Storage 配置为定期删除早于一定时间的世代或已存在一定数量的后续世代。

如果您最担心的是意外覆盖重要数据,那可能没问题。或者,如果您担心意外删除存储桶中的所有对象(包括旧代对象),则可能不太好。或者,如果您需要能够将存储桶重置为特定日期的状态,则可能不太好。

如果对象版本控制不适合您,并且您不想设置运行 gsutil 的 cronjob,并且您想使用应用程序引擎,那么是的,您必须编写一个迭代所有对象的程序并将它们复制到另一个存储桶中。