在 CDN 的 Rackspace 云文件容器上解压缩文件

Uncompress file on Rackspace cloud files container for CDN

我今天早些时候为 CDN 创建了一个 Rackspace 帐户,用于从 Rackspace 提供我的 Opencart 图片。

我创建了一个容器,我将在其中上传超过 500,000 张图像,但更喜欢将它们作为压缩文件上传,感觉更灵活。

如果我将所有图像上传到一个压缩文件中,当文件在容器中时,我该如何提取文件?什么压缩类型的文件可以工作?

答案可能取决于您尝试上传 file/files 的方式。由于未指定,我将使用 *nix 环境中的 CLI 回答您的问题。

回答你的问题(使用 curl)

使用 curl,您可以上传压缩文件并使用解压缩存档功能将其解压缩。

$ 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

推荐方案(使用Swiftly)

使用上述方法上传和提取这么多对象可能需要很长时间才能完成。此外,如果在此期间出现网络中断,您将不得不从头开始。

我建议改用像 Swiftly 这样的工具,它可以让您同时上传文件。这样如果在上传过程中出现问题,您不必重新上传已经上传成功的对象。

如何执行此操作的示例如下:

$ 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/

如果上传时网络中断,或者您必须stop/restart上传您的文件,您可以在上述命令的'put'后添加“--different”选项。这将告诉 Swiftly 首先对对象进行 HEAD,只有当本地文件的时间或大小与其对应的对象不匹配时才上传,跳过已经上传的对象。

Swiftly 可以在 github 上找到:https://github.com/gholt/swiftly

还有其他客户端可能做同样的事情,但我知道 Swiftly 有效,所以我推荐它。