我想将 12GB 页 blob 从一个存储帐户复制到另一个存储帐户。目前双方都是“公共(public)容器”。但它不起作用:HTTP/1.1 409 blob 类型对此操作无效。
以相同的方式但在同一存储帐户中复制它不会出现错误。
我错过了什么?
谢谢!
//编辑:这就是我尝试将 blob.dat 从 account1 复制到 account2 (casablanca lib)的方式:
http_client client(L"https://account2.blob.core.windows.net");
http_request request(methods::PUT);
request.headers().add(L"Authorization", L"SharedKey account2:*************************************");
request.headers().add(L"x-ms-copy-source", L"http://account1.blob.core.windows.net/dir/blob.dat");
request.headers().add(L"x-ms-date", L"Sat, 23 Nov 2013 16:50:00 GMT"); // I'm keeping this updated
request.headers().add(L"x-ms-version", L"2012-02-12");
request.set_request_uri(L"/dir/blob.dat");
auto ret = client.request(request).then([](http_response response)
{
std::wcout << response.status_code() << std::endl << response.to_string() << std::endl;
});
存储帐户是几天前创建的,因此没有任何限制。 此外,目标目录为空(account2/dir/blob.dat 不存在)。
//编辑2: 我做了更多测试并发现了这一点:上传一个新的页面 blob(几 MB)然后将其复制到另一个存储帐户是有效的! 然后,我尝试重命名无法复制的 12GB 页 blob(从 mydisk.vhd 重命名为 test.dat),突然间,复制到另一个存储也能正常工作了! 但下一个问题是:将目标存储帐户中的 test.dat 重命名回 mydisk.vhd 后,我无法从中创建磁盘(错误如“不是有效的 vhd 文件”)。但复制已经完成(x-ms-copy-status:成功)。 现在可能是什么问题? (哦我忘了:源 mydisk.vhd 租约状态在复制之前是“已解锁”) //编辑3: 好吧,看来问题已经解决了......即使使用原始的 mydisk.vhd,我也无法再次创建磁盘(无效的 vhd)。我不知道为什么,因为我没有改变它,但我在 Xbox 发布的一天创建了它,这一切都很慢,所以也许那里出了问题。现在,当我创建新的虚拟机时,我可以毫无问题地将 .vhd 复制到另一个存储(删除磁盘后)。最佳答案
我建议使用 AzCopy - 跨帐户复制 Blob。 在这里查看: http://blogs.msdn.com/b/windowsazurestorage/archive/2013/04/01/azcopy-using-cross-account-copy-blob.aspx
关于Azure 将 blob 复制到另一个帐户 : invalid blob type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164849/