使用 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
我打算将包含所有文件和目录的整个目录从一个 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