gsutil mv 命令是否在飞行中公开共享文件?

Does gsutil mv command share files publicly in flight?

我刚刚通过

将大约 33.7k 文件从存储桶的顶级移动到子目录

gsutil -m mv gs://[BUCKET_NAME]/\*.json gs://[BUCKET_NAME]/dumps/

在文件传输过程中,我的老板在 Cloud Storage 的网络界面中看到一些文件已公开共享:

我立即通过 gsutil ls -L gs://[BUCKET_NAME]/dumps/[SOME_FILE].json 检查了所列文件的权限,但在移动之后以及未公开共享任何内容之前它们看起来都很好。

检查 the documentation 后,我看到有一个 -p 选项可以保留 ACL。但我不知道这是否会阻止这种情况,因为我的默认存储桶 ACL 如下所示:

gsutil defacl get gs://[BUCKET_NAME]
[
  {
    "entity": "project-owners-xxx",
    "projectTeam": {
      "projectNumber": "xxx",
      "team": "owners"
    },
    "role": "OWNER"
  },
  {
    "entity": "project-editors-xxx",
    "projectTeam": {
      "projectNumber": "xxx",
      "team": "editors"
    },
    "role": "OWNER"
  },
  {
    "entity": "project-viewers-xxx",
    "projectTeam": {
      "projectNumber": "xxx",
      "team": "viewers"
    },
    "role": "READER"
  }
] 

gsutil mvthe same options by default than gsutil cp, and this command, by default, does not copy the objects ACL.

-p 将考虑每个对象的 ACL。由于源存储桶和目标存储桶在本例中是相同的,因此如果要将文件保密,则必须 set an ACL on the bucket

查看您提供的屏幕截图,您似乎在桶的 top-level 中(我假设 top-left 角中的蓝色 "s" 来自单词 "Buckets",就在 "Name" 列的正上方)。在这种情况下,您正在查看 尚未移动的对象 。将对象从 gs://BUCKET/ 移动到 gs://BUCKET/subdir/ 后,如果您的默认设置正确,则 subdir/ 前缀下的对象应该不会公开显示。

至于为什么你的 top-level 对象首先是公开可见的,你的猜测和我的一样好:)