从 Google 云存储批量恢复文件

Bulk file restore from Google Cloud Storage

不小心运行在错误的存储桶上删除命令,对象版本控制被打开,但我真的不明白我应该采取什么步骤来恢复文件,或者更重要的是,如何去做批量删除,因为我已经删除了数百个。

将不胜感激任何帮助。

要恢复数百个对象,您只需执行以下操作即可:

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

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

  1. 它会将已删除的世代保留在原位,因此会花费您额外的存储空间。

  2. 如果您的存储桶不为空,则此命令将重新复制任何活动对象到它们自身之上(最终还会为每个对象提供一个额外的存档版本,这也会让您付出额外的费用存储)。

  3. 如果您想恢复大量对象,这个简单的脚本会 运行 太慢 - 您需要并行化各个 gsutil cp 操作。在这种情况下,您不能使用 gsutil -m 选项,因为 gsutil 会阻止这种情况,以便保留生成顺序(例如,如果有几代对象具有相同的名称,则并行复制它们将以实时生成结束来自不可预测的一代)。如果每个人只有 1 代,则可以通过执行以下操作来并行化复制:

    gsutil ls -a gs://我的桶/** | sed 's/\(.\)\(#[0-9]\)/gsutil cp \&/' > gsutil_script.sh

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