cat*_*cat 5 google-app-engine python-2.7 google-cloud-storage
我想在谷歌云存储上实施一个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()
Run Code Online (Sandbox Code Playgroud)
更新:我发现其余的api支持复制和撰写操作等等.我们似乎希望我们不必在各大洲之间复制数据来重命名.
有用的链接我找到了sofar ...
使用JSON API,有一个复制方法。这是 Python 的官方示例,使用Python Google Api Client lib:
# 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)
Run Code Online (Sandbox Code Playgroud)