OpenStack Swift客户端可实现海量文件的最快同步



我有一个文件夹,里面有很多文件(大约50k,3Gb)。我需要在类似OpenStak Swift的存储中递归地将这个文件夹同步到我的容器中。

我尝试过使用cli duck(cyberduck),但在准备过程中,它会在大量文件列表中崩溃。我正在尝试使用supload实用程序,但它太慢了:(

可能有人向我推荐了这种情况的最佳方法(一些cli更好)?

您应该使用官方的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

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

它有"同步"操作和"带宽限制"。

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

最新更新