以编程方式在python中的appengine cloudstorage上模拟"gsutil mv"

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 ...

Dav*_*vid 3

使用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)