5

我想在谷歌云存储上实现一个 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 等等。似乎有希望我们不必跨大陆复制数据来重命名。

到目前为止我发现的有用链接...

4

1 回答 1

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)
于 2014-05-20T02:31:12.197 回答