云功能将所有文件从存储桶复制到同一 GCS 存储桶内的文件夹

问题描述

我在 Google Cloud Storage 存储桶中有文件,我想从存储桶中复制收到的所有文件,并在同一个存储桶的文件夹中创建所有这些文件的副本。 (我找到了复制到存储桶的解决方案,但如何复制到存储桶内的文件夹?)

destination = storage_client.bucket('source-bucket-name') #这里我的源和目标存储桶是相同的

有没有办法将文件名称与存储桶名称一起传递?

解决方法

实际上 Google Cloud Storage 没有真正的“文件夹”。在 Cloud Storage 控制台中,存储桶中的文件以文件夹的分层树状结构呈现(就像本地硬盘上的文件系统一样),但这只是呈现文件的一种方式:没有真正的文件夹/目录在一个桶里。 Cloud Storage 控制台只是使用文件路径的不同部分,通过使用“/”分隔符来“模拟”文件夹结构。

Cloud Storage 和 gsutil 上的这个 doc 很好地解释并说明了这种“分层文件树的错觉”。

因此,换句话说,您可以使用由“文件夹/目录”名称、“/”分隔符和最后是文件名。例如:fileName = "summer1970/pic1234.jpg"。正如下面的评论所阐明的,分层文件树的错觉是通过文件命名而不是通过存储桶命名创建的。