Google GSutil创建文件夹

问题描述 投票:3回答:3

如何使用gsutil命令在Google云存储中的存储桶中创建新文件夹?

我尝试在创建存储桶时使用相同的命令但仍然出错

gsutil mb -l us-east1 gs://my-awesome-bucket/new_folder/

谢谢!

google-cloud-platform gsutil cl
3个回答
11
投票

目录的概念在Google云端存储中是抽象的。来自文档(How Subdirectories Work):

gsutil提供了Google云端存储服务支持的“平面”名称空间顶部的分层文件树的错觉。对于服务,对象gs://your-bucket/abc/def.txt只是一个恰好在其名称中包含“/”字符的对象。没有“abc”目录;只是一个具有给定名称的对象。

因此,您无法像创建传统文件系统那样“创建”目录。


2
投票

如果您清楚桶中已存在哪些文件夹和对象,则可以通过将对象复制到文件夹中来创建带有gsutil的新“文件夹”。

>mkdir test
>touch test/file1
>gsutil cp -r test gs://my-bucket
Copying file://test\file1 [Content- 
Type=application/octet-stream]...
/ [1 files][    0.0 B/    0.0 B]
Operation completed over 1 objects.

>gsutil ls gs://my-bucket
gs://my-bucket/test/

>gsutil ls gs://my-bucket/test
gs://my-bucket/test/file1

如果本地目录为空,它将无法工作。

更简单:

>touch file2
>gsutil cp file2 gs://my-bucket/new-folder/
Copying file://test\file2 [Content- ...

>gsutil ls gs://my-bucket/new-folder
gs://my-bucket/new-folder/file2

请注意Surprising Destination Subdirectory Naming的潜力。例如。如果目标目录已作为对象存在。对于自动化过程,更强大的方法是使用rsync

我不知道是否可以使用gsutil创建一个空文件夹。为此,请使用控制台的“创建文件夹”按钮。


0
投票

您无法使用gsutils创建文件夹,因为gsutils不支持它(解决方法见下文)。

但是,它通过以下方式支持:

  • 浏览器中的UI
  • 编写自己的GCS客户端(我们编写了自己的自定义客户端,可以创建文件夹)

因此,即使google具有平面名称空间结构,正如另一个答案正确指出的那样,它仍然可以将单个文件夹创建为单个对象。不幸的是gsutils没有暴露这个。

(丑陋)使用gsutils解决方法:将虚拟文件添加到文件夹中并上传此虚拟文件 - 但删除此文件后该文件夹将消失,除非该文件夹中存在其他文件。

© www.soinside.com 2019 - 2024. All rights reserved.