2015-04-22 62 views
0

我有很多文件(〜50k,3Gb)的文件夹。我需要在OpenStak Swift-like存储中递归地将这个文件夹同步到我的容器中。OpenStack Swift客户端用于大量文件的最快同步?

我曾尝试使用cli duck(cyberduck),但它在准备过程中的大量文件上崩溃。 我试图使用supload工具,但它是如此缓慢:(

可能有人建议我这种情况的最佳方法(有的CLI更好)?

回答

1

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

斯威夫特不支持的rsync般的同步,但我用这个脚本在容器中删除你在本地删除的文件,并上传新文件没有要求迅速来比较每个文件:

#!/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

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

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

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