google-cloud-storage - 从 Google Cloud Storage 批量恢复文件

标签 google-cloud-storage cloud-storage

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

将不胜感激任何帮助。

最佳答案

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

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

这将使用仅元数据复制将所有对象(包括已删除的对象)复制到实时生成,即不需要复制实际字节。注意事项:
  • 它将保留已删除的代,因此会花费您额外的存储空间。
  • 如果您的存储桶不为空,则此命令将重新复制所有事件对象(最终每个对象都有一个额外的存档版本,也会花费您额外的存储空间)。
  • 如果您想恢复大量对象,这个简单的脚本会运行得太慢 - 您需要并行化各个 gsutil cp 操作。在这种情况下,您不能使用 gsutil -m 选项,因为 gsutil 会阻止这种情况,以保留生成顺序(例如,如果有几代具有相同名称的对象,并行复制它们将最终以实时生成来自不可预测的一代)。如果您只有 1 代,您可以通过执行以下操作来并行复制:

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

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

    关于google-cloud-storage - 从 Google Cloud Storage 批量恢复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43278683/

    相关文章:

    ios - Firebase 不适用于 iOS 的生产版本

    macos - 适用于 OS X 的 Amazon S3 GUI 客户端,允许 AWS STS 担任角色

    javascript - 允许对 S3 存储桶的子目录进行完全同步的文件系统读/写访问吗?

    cloud - 在 owncloud 中创建用户时获取状态代码 997

    google-app-engine - 使用 ffmpeg 转码 GCS 文件

    google-cloud-platform - 谷歌云功能 : missing main. py

    node.js - 在 Web 应用程序中公开存储桶 URL 安全吗?

    java - 如何轻松地将本地文件发送到 Scala 中的 Google Cloud Storage

    amazon-s3 - 将数百万个文件从 S3 复制到 GCS 的最佳方式?

    android - com.google.appengine.tools.cloudstorage 包不存在