Sup*_*Eye 1 python google-cloud-storage digital-ocean google-cloud-platform digital-ocean-spaces
我想以编程方式将文件从 Digital Ocean Storage 迁移到 Google Cloud Storage,而不使用 rclone。
我知道驻留在数字海洋存储 (DOS) 中的确切位置文件,并且我有 Google 云存储 (GCS) 的签名 URL。
如何修改以下代码,以便将 DOS 文件直接复制到 GCS 中,而无需中间下载到我的计算机?
def upload_to_gcs_bucket(blob_name, path_to_file, bucket_name):
""" Upload data to a bucket"""
# Explicitly use service account credentials by specifying the private key
# file.
storage_client = storage.Client.from_service_account_json(
'creds.json')
#print(buckets = list(storage_client.list_buckets())
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
blob.upload_from_filename(path_to_file)
#returns a public url
return blob.public_url
Run Code Online (Sandbox Code Playgroud)
Google 的存储传输服务应该是此类问题的答案(特别是因为大多数DigitalOcean Spaces都是 S3 兼容的。但是(!)我认为(我不熟悉它并且不确定)它不能用于此配置。
如果没有某种形式的中间传输,就无法将文件从源传输到目标,但您可以做的是使用内存而不是使用文件存储作为中介。内存通常比文件存储更受限制,如果您希望同时运行多个传输,每个传输都会消耗一定量的存储。
奇怪的是您使用的是签名 URL。通常,签名 URL 由第 3 方提供,以限制对第 3 方存储桶的访问。如果您拥有目标存储桶,那么直接从 Google 客户端库之一(例如Python 客户端库 )使用 Google Cloud Storage 存储桶会更容易。
Python 示例包括从文件上传和从内存上传。如果您不想创建中间文件,最好将文件流式传输到 Cloud Storage。这是一个Python 示例
归档时间: |
|
查看次数: |
857 次 |
最近记录: |