如何使用gsutil命令在谷歌存储(bucket)中创建一个空文件夹



如何使用gsutil命令创建文件夹。我在气流中使用Bashoperator,我需要使用gsutil Bash命令,Bucket已经创建,我想在Bucket中创建一个文件夹。我已经尝试了下面的命令,但它对我不起作用。

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

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

Google Storage不像Windows/Linux中的常规文件系统那样工作。它看起来有文件夹,但在后台它的行为与它没有一样。它只允许我们创建"文件夹",这样我们就可以更好地组织起来,让我们感到舒适。

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

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

它将把项目存储在"文件夹"中。

有关更多gsutil cp信息,请查看此链接。

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

gsutil将使用delimiter="/"和prefix="abc"。然后它将检查铲斗列出结果并确定bucket中是否有对象其路径以gs://yourbucket/abc/开头,以确定是否将目标视为对象名或目录名。反过来,这影响您创建的对象的名称:如果以上复选框表示有一个"abc"目录,您将使用该对象结束gs://你的bucket/abc/你的文件;否则你会对象gs://yourbucket/abc。

如果您愿意,这里有更多有趣的信息。

显然,使用gsutil创建一个空文件夹的能力是一个已经出现过几次但尚未满足的请求。使用API似乎有一些变通方法,然后可以编写脚本。GitHub通过脚本创建空文件夹的能力问题可以在这里找到:

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

根据我的研究和尝试,您无法使用gsutil创建或复制一个空文件夹到GCS。是的,不知何故,这很不方便。

文件夹不能为空才能创建或复制到GCS,并且不要忘记标志"-r〃创建文件夹或将文件夹复制到GCS,如下所示,否则如果文件夹为空或您忘记了标志-r

gsutil cp -r <non-empty-folder> gs://your-bucket
// "-r" is needed for folder

最新更新