【问题标题】:How to create a empty folder in google storage(bucket) using gsutil command?如何使用 gsutil 命令在谷歌存储(桶)中创建一个空文件夹?
【发布时间】:2020-03-09 07:30:24
【问题描述】:

我们如何使用 gsutil 命令创建文件夹。我在气流中使用 Bashoperator,我需要使用 gsutil Bash 命令,桶已经创建我想在桶内创建一个文件夹。 我已经尝试过使用以下命令,但它不适合我。

$ gsutil cp <new_folder> gs://<bucketname>/  

我收到错误 - CommandException:没有匹配的 URL:new_folder

【问题讨论】:

标签: google-cloud-storage airflow bucket gsutil


【解决方案1】:

Google 存储与 Windows/Linux 中的常规文件系统不同。它似乎有文件夹,但在后台它的行为却没有。它只允许我们创建“文件夹”,以便我们可以更好地组织和舒适。

如果您想从 gsutil 将数据保存在特定文件夹中,请尝试此操作。

gsutil cp [filetocopy] gs://your-bucket/folderyouwant/your-file

它将项目存储在“文件夹”中。

查看此链接了解更多gsutil cp information

这就是谷歌云存储“文件夹”背后的逻辑。

gsutil 将为指定的存储桶发出存储桶列表请求,使用 分隔符="/" 和前缀="abc"。然后它将检查存储桶 列出结果并判断桶中是否有对象 其路径以 gs://your-bucket/abc/ 开头,判断是否 将目标视为对象名称或目录名称。反过来这 影响您创建的对象的名称:如果上述检查 表示有一个“abc”目录,您最终会得到该对象 gs://your-bucket/abc/your-file;否则你最终会得到 对象 gs://your-bucket/abc.

如果您愿意,这里有更多关于此的 interesting information

【讨论】:

  • 文件夹不存在,是错觉!仅对于人类对象组织,它只是对象角度的元数据。
【解决方案2】:

显然,使用gsutil 创建一个空的文件夹 的请求已经被看到过几次但还没有得到满足。通过使用可以编写脚本的 API 似乎有一些解决方法。可以在此处找到有关通过脚本创建空文件夹的 GitHub 问题:

https://github.com/GoogleCloudPlatform/gsutil/issues/388

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2019-01-24
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2014-11-04
    相关资源
    最近更新 更多