【发布时间】:2019-01-07 07:00:05
【问题描述】:
我有一个“旧”的 Google 存储桶,在这里我称之为“foo-test”,还有一个“新”的桶,“foo-01”(不是他们的真名)。 I was able to copy the contents of the old bucket into the new bucket 使用“gsutil cp”。
成功了。或者我是这么想的。如果我转到 Google 存储浏览器,旧存储桶的内容会出现在新存储桶中。
但是我的 Google Compute 实例什么都看不到!
当我安装旧桶时
gcsfuse -o allow_other -file-mode=777 -dir-mode=777 foo-test /var/foo
然后我做
ls /var/foo
我得到了存储桶的内容。
但是当我用
挂载新存储桶时gcsfuse -o allow_other -file-mode=777 -dir-mode=777 foo-01 /var/foo
然后我做
ls /var/foo
我什么都得不到!
【问题讨论】:
-
你能用 --debug_gcs 标志运行你的挂载命令吗,比如
gcsfuse --debug_gcs -o allow_other ...看看它是否给出任何指示? -
@LundinCast 使用挂载点:/var/foo 正在打开 GCS 连接...正在打开存储桶...正在挂载文件系统...文件系统已成功挂载。另一个注意事项:如果 INSTANCE 将任何内容放入存储桶中,它会显示出来,同时从实例和存储浏览器查看存储桶。
-
您还可以检查新对象的 ACL 吗?默认情况下,gsutil cp 命令不会将对象 ACL 复制到新对象,而是使用默认存储桶 ACL,这可能不会授予您访问权限。
-
现在,我们正在取得进展。什么是 ACL,如何检查?
-
@LundinCast "gsutil acl get" 显示出差异。当我尝试“gsutil acl get”它们时,新存储桶中复制的目录显示“CommandException:没有匹配的 URL”。我尝试将新桶擦干净,然后执行“gsutil cp -r -p”(而不仅仅是“-r”)。结果相同。最后我把新的桶擦干净,将两个桶安装在一个实例中,然后从一个桶到另一个桶执行“cp -r -P -p”。那行得通。
标签: google-cloud-storage gcsfuse