如何在使用 gsutil 保留 ACL 的同时将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2

Posted

技术标签:

【中文标题】如何在使用 gsutil 保留 ACL 的同时将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2【英文标题】:How to copy a file from Google Cloud Storage bucket 1 to bucket 2 while keeping ACLs using gsutil 【发布时间】:2021-09-01 23:33:30 【问题描述】:

我打算将 Google Cloud Storage 上的单个文件从存储桶 1 复制到存储桶 2,同时使用 gsutil 保留 ACL(访问控制列表)。

以下命令复制文件,但不会复制 ACL 信息:

gsutil cp -p rsync gs://bucket1/path/file gs://bucket2/path/file

如何同时复制文件和 ACL?

【问题讨论】:

这很奇怪。 The documentation 建议使用 -p 参数,以便保留 ACL 信息。您是在尝试同步文件还是只是将其复制过来? 【参考方案1】: 首先,如果我们想将对象从一个存储桶复制到另一个存储桶 具有完整 ACL 的存储桶,我们必须使用细粒度访问 控制两个存储桶。 如果我们使用统一访问控制,那么对象将具有 根据目标桶的权限。 要了解有关存储桶和对象的 ACL 的更多信息,您可以访问 this link。

现在回答您的问题,如果您对两个存储桶都进行了细粒度的访问控制,则下面的命令应该这样做。

gsutil cp -p  gs://source_bucket/file_name gs://destination_bucket/new_file_name 

  
您可以在this link中找到对上述命令的引用。

【讨论】:

以上是关于如何在使用 gsutil 保留 ACL 的同时将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2的主要内容,如果未能解决你的问题,请参考以下文章

在附加日期时间的同时使用 gsutil 复制文件

将文件从 GCS 复制到 AWS S3 时如何设置 acl?

如何在忽略 .git、.gitignore 等文件的同时执行 gsutil cp -R?

如何从文本语料库中删除特定的单字组,但仍保留该单词的双字组?

如何让 gsutil 在 docker 容器中使用 gcloud 凭据

如何确保 gsutil 复制不使用外部 Internet?