0

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

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

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

4

1 回答 1

0

答案可能取决于您尝试上传文件的方式。由于未指定,我将使用 *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

推荐的解决方案(使用 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/

如果上传时出现网络中断,或者您必须停止/重新开始上传文件,您可以在上述命令中的“put”之后添加“--different”选项。这将告诉 Swiftly 先 HEAD 对象,并且仅在本地文件的时间或大小与其对应的对象不匹配时才上传,跳过已上传的对象。

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

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

于 2015-07-29T19:22:23.880 回答