OpenStack Swift客户端能够以最快的速度同步大量文件吗?

时间:2015-04-22 16:12:15

标签: openstack-swift

我有大量文件的文件夹(~50k,3Gb)。我需要在OpenStak类似Swift的存储中递归地将此文件夹同步到我的容器。

我曾尝试使用cli duck(cyberduck),但它在准备过程中的巨大文件列表中崩溃了。 我正在尝试使用supload实用程序,但速度很慢:(

对于这种情况,可能有人推荐我最好的方法(一些 cli 更好)?

2 个答案:

答案 0 :(得分:3)

您应该使用官方的python-swiftclient软件包,只需:

# load your openstack credentials
source openrc.sh
cd path_to_directory_you_want_to_sync
# upload all the files recursively keeping good paths
swift upload --changed your_container *

Swift不支持类似rsync的同步,但我使用这个小脚本在容器中删除你在本地删除的文件并上传新文件而不要求swift来比较每个文件:

#!/bin/bash

cd $2
diff <(find * -type f -print | sort) <(swift list $1 | sort) | while read x; do
if [[ $x == \>* ]]; then
        echo "Need to delete ${x:2}"
        swift delete $1 "${x:2}"
    elif [[ $x == \<* ]]; then
        echo "Need to upload ${x:2}"
        swift upload $1 "${x:2}"
    fi
done
cd -

使用:

./swift_sync.sh your_container directory_to_sync

答案 1 :(得分:1)

尝试http://rclone.org/docs/

它具有“同步”操作和“带宽限制”。

如果这不能解决您的速度问题,则根本原因不在客户端上。