2015-04-22 3 views
0

У меня есть папка с большим количеством файлов (~ 50k, 3Gb). Мне нужно синхронизировать эту папку рекурсивно с моим контейнером в хранилище OpenStak Swift.Клиент OpenStack Swift для быстрой синхронизации огромного количества файлов?

Я попытался использовать cli duck (cyberduck), но он падает на огромный список файлов в процессе подготовки. Я пытаюсь использовать supload утилиту, но это так медленно :(

Может быть кто-то рекомендует мне лучший подход (некоторые кли лучше) для этой ситуации?

ответ

1

Вы должны использовать официальный питон-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, как синхронизации, но я использую этот небольшой скрипт для удаления в контейнере файлов, которые были удалены локально и загрузить новые файлы без запроса быстро сравнить каждые файлы:

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

Он имеет "синхронизации" работы и "Величина предела".

Если это не решит проблему с вашей скоростью, основная причина не на клиентах.

Смежные вопросы