我今天早些时候为CDN创建了一个Rackspace帐户,以便从Rackspace提供我的openart图像。
我已经创建了一个容器,我将上传超过500,000张图像,但更喜欢将它们作为压缩文件上传,感觉更灵活。
如果我上传所有的图像在一个压缩文件我如何提取文件时,它是在容器?什么压缩类型的文件可以工作?
答案可能取决于您试图上传文件的方式。由于没有指定,所以我将在*nix环境下使用CLI来回答您的问题。
回答你的问题(使用curl)
使用curl,您可以上传压缩文件,并使用extract-archive功能对其进行提取。
$ tar cf archive.tar directory_to_be_archived
$ curl -i -XPUT -H'x-auth-token: AUTH_TOKEN' https://storage101.iad3.clouddrive.com/v1/MossoCloudFS_aaa-aaa-aaa-aaa?extract-archive=tar -T ./archive.tar
您可以在这里找到此特性的文档:http://docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.html
推荐解决方案(使用quickly)
使用上述方法上传和提取那么多对象可能需要很长时间才能完成。此外,如果在此期间出现网络中断,您将不得不从头开始。
我建议你使用像quick这样的工具,它可以让你同时上传文件。这样,如果在上传过程中出现问题,您就不必重新上传已经成功上传的对象。
如何做到这一点的例子如下:
$ swiftly --auth-url="https://identity.api.rackspacecloud.com/v2.0"
--auth-user="{username}" --auth-key="{api_key}" --region="DFW"
--concurrency=10 put container_name -i images/
如果在上传时网络中断,或者你必须停止/重新启动上传文件,你可以在上面命令中的'put'后添加"——different"选项。这将告诉快速HEAD对象,只有在本地文件的时间或大小与相应对象不匹配时才上传,跳过已经上传的对象。
可以在github上找到:https://github.com/gholt/swiftly
还有其他客户端可能做同样的事情,但我知道快速工作,所以我推荐它。