将Google云端存储备份到另一个存储桶

时间:2015-03-05 16:47:40

标签: php google-app-engine google-cloud-storage

我知道有可用于备份谷歌数据存储的cronjob,但是有没有简单的方法可以创建一个cronjob来将Google云端存储的每日备份转换到另一个云存储桶?

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

gsutil cp -D -R gs://<bucket>/* gs://<backup>/folder

或者我已经准备好了Object Versioning,但不确定这是否属于我想要做的事情。

但是我想在cronjob中使用php appengine而不是在计算引擎中这样做。

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

$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);

2 个答案:

答案 0 :(得分:1)

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

根据您需要备份的原因,对象版本控制可能符合您的需求。对象版本控制的工作原理是保持对象的多个副本,以便每次覆盖或删除对象时,其先前的状态保持为具有相同名称但具有不同“生成”编号的对象。您还可以将Google云端存储配置为定期删除超过一定时间或已存在一定数量的后续代的代。

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

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

答案 1 :(得分:1)

有些迟了,但是GCS Transfer是您要寻找的。

从文档中:

  

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

相关问题