我可以使用什么工具将本地目录的内容与 Rackspace Cloud Files 存储桶的内容同步?
我需要一个类似 rsync 的应用程序来做镜像,而不是备份应用程序。我想要的是能够做
rsync --update --delete /local/dir/ cloudfiles://bucket
这样远程存储桶就包含其中文件的精确镜像/local/dir/
。
文件的元数据(所有者、权限)并不重要,并且主目录内没有目录。
答案1
将本地目录同步到 Rackspace 云文件的最简单方法是通过openstack/swift 项目在 Ubuntu 上,可以使用以下命令安装这些工具apt-get install python-swiftclient
然后,假设您位于要上传的目录中,在终端中运行以下命令:
$ swift -A https://auth.api.rackspacecloud.com/v1.0 -U <username> -K <api-key> upload <containername> . --changed
这将递归地将文件从当前目录上传到容器<containername>
,通过仅上传更改的文件来节省时间。您需要提供<username>
用于登录云控制面板的 以及<api-key>
同一控制面板中帐户/帐户设置下的 。
注意力:如果你使用相对或绝对路径,swift 将使用伪路径上传它们在命令行上提供进入容器。因此,如果.
您不同步而是 sync /var/www/test
,则文件最终将位于/var/www/test
容器的伪路径下 - 这很可能不是您想要的。
答案2
对于 Linux,我发现了这个旧项目:http://code.google.com/p/cloudfiles-sync/wiki/Instructions
对于 Windows,有以下 GUI 工具: http://www.cloudberrylab.com/free-openstack-storage-explorer.aspx
我还刚刚发现这个工具可以让你挂载云文件存储:http://smestorage.com/?p=static&page=LinuxDrive
答案3
您可以使用 Rackspace Cloud Files FUSE 模块 (http://www.rackspace.com/knowledge_center/article/mounting-rackspace-cloud-files-to-linux-using-cloudfuse)创建可挂载的文件系统,但请注意以下事项:
- 使用类似 --size-only 的方法来确定文件是否已完全写入,而不是 -a 或类似的东西,因为不支持设置权限和时间
- 使用 --bwlimit 不会起作用,因为模块将写入缓存在内存中的临时文件中,然后在上传时占用所有带宽;我正在使用 trickle 实用程序进行实验,看看是否有帮助
答案4
我认为您可以使用 rsync 来实现这一点,但无论出于什么原因它都不适合您,也可以尝试:Unison 文件同步器,效果确实很棒!