当前位置: 首页 > 知识库问答 >
问题:

使用Django将目录从Google云存储桶递归复制到另一个Google云存储桶

姜飞飙
2023-03-14

我打算将包含所有文件和目录的整个目录从一个谷歌云存储桶递归复制到另一个谷歌云存储桶。

从本地到Google云存储桶,以下代码运行良好:

import glob
from google.cloud import storage

def upload_local_directory_to_gcs(local_path, bucket, gcs_path):
    assert os.path.isdir(local_path)
    for local_file in glob.glob(local_path + '/**'):
        if not os.path.isfile(local_file):
           upload_local_directory_to_gcs(local_file, bucket, gcs_path + "/" + os.path.basename(local_file))
        else:
           remote_path = os.path.join(gcs_path, local_file[1 + len(local_path):])
           blob = bucket.blob(remote_path)
           blob.upload_from_filename(local_file)


upload_local_directory_to_gcs(local_path, bucket, BUCKET_FOLDER_DIR)

如何在同一个项目中将目录从一个bucket递归复制到另一个bucket?

共有1个答案

隆扬
2023-03-14

尽管注释中已经指出了rsync,但我还要补充一点。如果有大量目录,可以使用-m提高速度。这有助于并行化-r有助于在存在需要复制的文件夹结构时进行递归复制。

因此,使用rsync可以这样使用它:-

gsutil -m rsync -r gs://source_bucket gs://destination_bucket

请参考这份公开文件

 类似资料:
  • 问题:我想从谷歌云存储桶中的文件夹(例如桶1中的文件夹1)复制文件到另一个桶(例如桶2)。我找不到任何谷歌云存储的气流操作员来复制文件。

  • 我有一个谷歌云存储桶,我可以使用python中的函数下载对象,我也可以使用或函数下载整个目录。 有没有一种方法可以使用python作为单个zip文件从存储桶下载整个目录。 这样做Python——从谷歌云存储下载整个目录需要我逐个文件下载。 有没有办法一次下载整个目录?

  • 我在谷歌云存储桶中有文件。 如何将这些文件设置为Cloudflare CDN的原点? (Cloudflare控制面板似乎只想要根域上的网站...?)

  • 我希望有一个私有的Python包,可以从用户友好的(或者可以说开发人员友好的URL)访问,比如https://storage.googleapis.com/pypi-packages/my-package/my-package-1.0.0.tar.gz。 我希望这个包可以从其他谷歌云平台工具访问,如Dataflow,Cloud ML,Composer或GKE 你认为这是可行的吗?

  • 我正在使用Spring引导连接到谷歌云存储。 我能够连接到一个文件,并从谷歌云存储桶中读取内容。 但是我不能得到谷歌云存储桶中所有文件的列表。 请帮帮我。 这很有效 这不工作。 有什么原因吗?