使用传输将对象从一个存储桶目录文件夹复制到另一个存储桶文件夹
Copying objects from one bucket directory folder to another bucket folder using transfer
我想使用google传输将Bucket-1中特定目录中的所有folders/files复制到Bucket-2的根目录中。
已尝试将传输与过滤选项一起使用,但没有复制任何内容。
任何关于让它在传输中工作或逐步实现功能的指示都将不胜感激。
在 Cloud Shell 项目中尝试此操作
gsutil cp -r gs://bucket1/foldername gs://bucket2
我重现了您的问题并使用 gsutil 为我工作。
例如:
gsutil cp -r gs://SourceBucketName/example.txt gs://DestinationBucketName
此外,我尝试使用传输选项进行复制,它也有效。我使用 Transfer 选项完成的步骤如下:
1 - 创建新的传输作业
面板:“Select 来源”:
2 - Select 例如你的来源 Google Cloud Storage bucket
3 - Select 包含要复制的数据的存储桶。
4 - 在“使用这些前缀传输文件”字段中添加您的数据(我使用“example.txt”)
面板“Select目的地”:
5 - Select 您的目标存储桶
面板“配置传输”:
6 - 运行 如果您想立即完成转移。
7 - 按“创建”。
有关从存储桶复制到另一个存储桶的更多信息,您可以查看 official documentation。
所以,这里有几点需要考虑:
您必须记住,Google Cloud Storage 存储桶不会按照您期望的方式处理子目录。到 bucket 基本上都是文件名的一部分。您可以在 How Subdirectories Work 文档中找到更多相关信息。
上述也是您无法传输位于“目录”内的文件并希望只看到文件名出现在目标存储桶的根目录中的原因。举个例子:
- 如果您在
gs://my-bucket/my-bucket-subdirectory/myfile.txt
有一个文件,一旦您将它传输到您的第二个存储桶,它的名称中仍将包含该子目录,因此结果将是:gs://my-second-bucket/my-bucket-subdirectory/myfile.txt
这就是为什么,如果您有兴趣将此过程自动化,您绝对应该尝试 Google Cloud Storage Client Libraries。
此外,您还可以将 GCS 客户端与 Google 云功能一起使用。但是,如果您真的需要 GCF 提供的事件触发器,我会建议这样做。如果您只想定期传输到 运行,例如在 cron 作业中,您仍然可以在 Cloud Function 以外的其他地方使用 GCS 客户端。
- Cloud Storage Tutorial 可能会给您一个很好的例子来说明如何处理存储事件。
此外,在您以后的 post 中,请尝试提供尽可能多的相关信息。对于这个 post,作为一个例子,如果知道你的存储桶上有什么文件结构以及你得到了什么作为输出,那就太好了。如果您可以直接提供您的用例,它也将阻止其他用户提出不适用于您需求的解决方案。
我想使用google传输将Bucket-1中特定目录中的所有folders/files复制到Bucket-2的根目录中。
已尝试将传输与过滤选项一起使用,但没有复制任何内容。
任何关于让它在传输中工作或逐步实现功能的指示都将不胜感激。
在 Cloud Shell 项目中尝试此操作
gsutil cp -r gs://bucket1/foldername gs://bucket2
我重现了您的问题并使用 gsutil 为我工作。 例如:
gsutil cp -r gs://SourceBucketName/example.txt gs://DestinationBucketName
此外,我尝试使用传输选项进行复制,它也有效。我使用 Transfer 选项完成的步骤如下:
1 - 创建新的传输作业 面板:“Select 来源”:
2 - Select 例如你的来源 Google Cloud Storage bucket
3 - Select 包含要复制的数据的存储桶。
4 - 在“使用这些前缀传输文件”字段中添加您的数据(我使用“example.txt”)
面板“Select目的地”:
5 - Select 您的目标存储桶
面板“配置传输”:
6 - 运行 如果您想立即完成转移。
7 - 按“创建”。
有关从存储桶复制到另一个存储桶的更多信息,您可以查看 official documentation。
所以,这里有几点需要考虑:
您必须记住,Google Cloud Storage 存储桶不会按照您期望的方式处理子目录。到 bucket 基本上都是文件名的一部分。您可以在 How Subdirectories Work 文档中找到更多相关信息。
上述也是您无法传输位于“目录”内的文件并希望只看到文件名出现在目标存储桶的根目录中的原因。举个例子:
- 如果您在
gs://my-bucket/my-bucket-subdirectory/myfile.txt
有一个文件,一旦您将它传输到您的第二个存储桶,它的名称中仍将包含该子目录,因此结果将是:gs://my-second-bucket/my-bucket-subdirectory/myfile.txt
- 如果您在
这就是为什么,如果您有兴趣将此过程自动化,您绝对应该尝试 Google Cloud Storage Client Libraries。
此外,您还可以将 GCS 客户端与 Google 云功能一起使用。但是,如果您真的需要 GCF 提供的事件触发器,我会建议这样做。如果您只想定期传输到 运行,例如在 cron 作业中,您仍然可以在 Cloud Function 以外的其他地方使用 GCS 客户端。
- Cloud Storage Tutorial 可能会给您一个很好的例子来说明如何处理存储事件。
此外,在您以后的 post 中,请尝试提供尽可能多的相关信息。对于这个 post,作为一个例子,如果知道你的存储桶上有什么文件结构以及你得到了什么作为输出,那就太好了。如果您可以直接提供您的用例,它也将阻止其他用户提出不适用于您需求的解决方案。