【问题标题】:Cloud Function to copy all the files from a Storage bucket to a folder inside the same GCS storage bucketCloud Function 将存储桶中的所有文件复制到同一个 GCS 存储桶内的文件夹中
【发布时间】:2021-06-13 14:22:37
【问题描述】:

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

destination = storage_client.bucket('source-bucket-name') #这里我的源桶和目标桶是一样的

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

【问题讨论】:

    标签: python pyspark google-cloud-functions google-cloud-storage gcsfuse


    【解决方案1】:

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

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

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

    【讨论】:

    • ok,是不是说我可以直接把folderName和bucket name一起传过去?例如:destination = storage_client.bucket('source-bucket-name/folderName') - @Renaud Tarnec
    • 不,一点也不。只有一个桶是storage_client.bucket('source-bucket-name'),因为你写了“我的源桶和目标桶是一样的”。在此存储桶中,您可以创建 文件,并且在定义文件名时可以使用“/”分隔符来模拟文件夹结构。因此,分层文件树的错觉是通过文件命名而不是通过存储桶命名创建的。如果你分享你的整个代码,我可以指出你在哪里适应。
    猜你喜欢
    • 2019-10-30
    • 2017-01-27
    • 2021-11-03
    • 2020-06-09
    • 2016-02-10
    • 2021-10-20
    • 1970-01-01
    • 2013-11-01
    • 2021-09-27
    相关资源
    最近更新 更多