将 Rackspace Cloud File 存储桶复制(向下)到本地目录?

将 Rackspace Cloud File 存储桶复制(向下)到本地目录?

如何将 Rackspace Cloud File bucket 复制(下)到本地目录?或者更好的是,如何将本地目录更新为 RS bucket 的副本?

有很多用于上传或“rsync”的工具,但我正在寻找一种向另一个方向(从服务器向下)复制的工具。

答案1

您没有说清楚这是一个常规(系统)要求,还是一次性要求。

如果是后者,并且在某些情况下是前者,则应检查以下工具扩展驱动或者Cyber​​Duck它允许您将机器上的文件夹同步到云文件容器上。

就后者(系统要求)而言,我不会以同样的方式推荐这些客户端工具 - 您最好使用 API 自己编写脚本。马特已经给出了很好的答案皮拉克斯- 如果需要的话,当然要检查其他语言中类似的 API 绑定 - 完整列表位于文档在这里

答案2

您可以递归下载容器,即包括子文件夹及其内容,使用openstack/swift 工具在 Ubuntu 上,可以使用以下命令安装这些工具apt-get install python-swift

然后切换到要下载内容的目录并运行

swift -A https://auth.api.rackspacecloud.com/v1.0 -U <username> -K <api-key> download <container-name>

然后容器的内容<containername>将被下载到当前目录。您需要提供<username>用于登录云控制面板的 以及<api-key>同一控制面板中帐户/帐户设置下的 。

答案3

德韦恩,

我不知道有任何现有的应用程序可以做到这一点,但是使用官方的 Rackspace Python SDK,pyrax 我们可以实现您的目标。pyrax 不包含执行此操作所需的完全构建的功能,但我花了几分钟通过扩展 pyrax 的默认功能将一些东西放在一起。

您可以在以下位置找到代码https://gist.github.com/5602713

在代码的最底部,您需要myusername使用您的真实用户名、myapikey您的真实 API 密钥、具有适当区域的 2 个位置(可能已经是 DFW)、some-container真实容器名称以及/path/to/some/local/directory/您希望它同步到的本地目录进行更新。

sync_container_to_folder脚本底部调用的方法将删除任何远程不存在的本地文件,其工作方式与--deletersync 的参数类似。您可以添加delete=False以阻止该功能,例如:

     cf.sync_container_to_folder('some-container',
                                 '/path/to/some/local/directory/',
                                 delete=False)

的选项sync_container_to_folder与 pyrax 内置函数的选项非常相似,sync_folder_to_containerhttps://github.com/rackspace/pyrax/blob/master/docs/cloud_files.md#syncing-a-local-folder-with-a-container

我已经在一些小容器上进行了测试,没有测试过大容器,可以确认它似乎运行良好。但为了安全起见,您可能需要先使用测试容器和空的本地目录进行测试。

顺便说一句:您需要安装 pyrax 模块和 python-dateutil 模块才能使用此功能。这些不是标准的 python 模块。

相关内容