当我在web UI中的Google Cloud Storage存储桶中创建一个文件夹时,我可以设置并获取该文件夹的ACL。
gsutil acl ch -u user@domain.com:R gs://testbucket/my-folder/
gsutil acl get gs://testbucket/my-folder/
当从终端(Linux或Mac OS)创建文件夹时,我无法获取或设置文件夹的ACL,它总是返回:
CommandException:没有匹配的URL
此外,Python API也会发生这种情况。
对于如何使用从本地操作系统创建的文件夹,您有什么建议吗?
发布于 2018-09-19 05:06:58
根据this documentation的说法,这可能是因为通过使用云控制台并创建一个文件夹,创建了一个以"/“字符结尾的对象,因为在Linux和MacOS上不允许以这种字符结尾的文件。此外,您还可以在this document中找到有关云存储子目录工作方式的详细信息
如果您认为这并不像预期的那样工作,我建议打开一个解释此行为的public issue tracker,以便得到适当的关注。
发布于 2018-09-19 06:55:06
运行这些Bash命令,它将执行存储桶的“平面”前缀列表(即,不会尝试使用/
作为分隔符来拆分路径组件,它使用前缀来提供真实目录的假象):
$ BUCKET=my-bucket-name-here
$ gsutil ls gs://${BUCKET}/my-folder** | grep "gs://${BUCKET}/my-folder/\$"
如果您的输出包含一行,则"my-folder/“对象存在。如果输出为空,那么给出的错误是正确的,并且您可以运行该命令,而不使用管道到grep部分,以查看您的存储桶中确实存在哪些带有前缀"my-folder“的对象。
如果您使用的是较旧版本的gsutil,请尝试更新并重新尝试。
发布于 2018-09-29 00:26:11
问题出在编码字符上。从OS将空白字符转换为'\xa0‘表示。如果文件夹是从web UI创建的,则终端中的空白字符为‘’。
https://stackoverflow.com/questions/52383932
复制相似问题