从Google云端存储中恢复批量文件

时间:2017-04-07 12:51:28

标签: google-cloud-storage cloud-storage

在错误的存储桶上意外运行删除命令,对象版本控制已打开,但我并不真正了解应该采取哪些步骤来恢复文件,或者更重要的是,如何执行此操作我已经删除了几百个。

将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:2)

要恢复数百个对象,您可以执行以下简单操作:

gsutil cp -AR gs://my-bucket gs://my-bucket

这将使用仅元数据复制将所有对象(包括已删除的对象)复制到实时生成,即不需要复制实际字节。注意事项:

  1. 它会留下已删除的代数,因此会耗费额外的存储空间。

  2. 如果您的存储桶不是空的,此命令将重新复制任何活动对象(最终还会有一个额外的存档版本,同时也需要额外的存储空间)

  3. 如果要恢复大量对象,这种简单的脚本运行速度太慢 - 您希望并行化各个gsutil cp操作。在这种情况下你不能使用gsutil -m选项,因为gsutil会阻止它,为了保留生成顺序(例如,如果有几代具有相同名称的对象,并行复制它们最终会导致来自不可预测的一代的活着的一代)。如果您只有1代,则可以通过执行以下操作来并行化复制:

    gsutil ls -a gs:// my-bucket / ** | sed' s / \(。 \)\(#[0-9] \)/ gsutil cp \ 1 \ 2 \ 1 \& /' > gsutil_script.sh

  4. 这将生成所有对象(包括已删除的对象)的列表,并将其转换为gsutil cp命令序列,以将这些对象(按生成特定名称)并行复制回实时生成。如果列表很长,你会想要分成几部分,所以你不要(例如)尝试分叉100k进程来进行并行复制(这会使你的机器过载)。