Pyt*_*ist 5 cloud-storage google-cloud-storage
不小心在错误的存储桶上运行删除命令,对象版本控制已打开,但我不太明白应该采取哪些步骤来恢复文件,或者更重要的是,如何批量执行此操作,因为我已经删除了数百个文件其中。
将不胜感激任何帮助。
要恢复数百个对象,您可以执行以下简单操作:
gsutil cp -AR gs://my-bucket gs://my-bucket
Run Code Online (Sandbox Code Playgroud)
这将使用仅元数据复制将所有对象(包括已删除的对象)复制到实时生成,即不需要复制实际字节。注意事项:
它会将已删除的世代保留在原处,因此会花费您额外的存储空间。
如果您的存储桶不为空,此命令将重新复制所有活动对象(最终还会为每个对象提供一个额外的存档版本,这也会花费您额外的存储空间)。
如果您想要恢复大量对象,这个简单的脚本运行速度会太慢 - 您需要并行化各个 gsutil cp 操作。在这种情况下,您不能使用 gsutil -m 选项,因为 gsutil 会阻止这种情况的发生,以便保留生成顺序(例如,如果有多代具有相同名称的对象,则并行复制它们最终将成为实时生成)来自不可预测的一代)。如果您只有一代,则可以通过执行以下操作来并行复制:
gsutil ls -a gs://my-bucket/** | sed 's/\(. \)\(#[0-9] \)/gsutil cp \1\2 \1 \&/' > gsutil_script.sh
这会生成所有对象(包括已删除的对象)的列表,并将其转换为一系列 gsutil cp 命令,以并行地将这些对象(按特定于生成的名称)复制回实时生成。如果列表很长,您将需要分成几个部分,这样您就不会(例如)尝试分叉 100k 个进程来进行并行复制(这会使您的计算机超载)。
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |