使用 Django 将目录从 Google Cloud Storage Bucket 递归复制到另一个 Google Cloud Storage Bucket

Copy a directory recursively from Google Cloud Storage Bucket to another Google Cloud Storage Bucket using Django

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

以下代码从本地到 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)

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

虽然rsync已经在评论中指出了,我再补充一点。 如果你有大量的目录,你可以使用-m来提高速度。这有助于并行化。 -r 当存在需要复制的文件夹结构时,有助于递归复制。

所以对于 rsync 你可以这样使用它:-

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

请参阅此 public 文档以获得 reference