我想在谷歌云存储上实施一个mv(云端复制)操作,类似于gsutil的工作方式(http://developers.google.com/storage/docs/gsutil/commands/mv)。
我之前在某处读过这涉及数据的读写(下载和重新上载),但我再也找不到这些段落了。
这是在云存储中移动文件的正确方法,还是必须降级到boto库以避免通过网络复制数据以重命名文件?
istream = cloudstorage.open(src, mode='r')
ostream = cloudstorage.open(dst, content_type=src_content, mode='w')
while True:
buf = istream.read(500000)
if not buf:
break
ostream.write(buf)
istream.close()
ostream.close()
更新:我发现其余的api支持复制和撰写操作等等。我们似乎希望我们不必在各大洲之间复制数据来重命名。
有用的链接我找到了沙发......
答案 0 :(得分:3)
使用JSON API,有一个copy method。以下是使用Python Google Api Client lib:
的Python的官方示例# The destination object resource is entirely optional. If empty, we use
# the source object's metadata.
if reuse_metadata:
destination_object_resource = {}
else:
destination_object_resource = {
'contentLanguage': 'en',
'metadata': {'my-key': 'my-value'},
}
req = client.objects().copy(
sourceBucket=bucket_name,
sourceObject=old_object,
destinationBucket=bucket_name,
destinationObject=new_object,
body=destination_object_resource)
resp = req.execute()
print json.dumps(resp, indent=2)