Какой инструмент можно использовать для синхронизации содержимого локального каталога с содержимым контейнера 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 загрузит их с псевдопутемпредоставляется в командной строкев контейнер. Так что если вместо синхронизации .
вы синхронизируете /var/www/test
, то файлы окажутся по /var/www/test
псевдопути контейнера - скорее всего, это не то, что вам нужно.
решение2
Для Linux я нашел этот старый проект:http://code.google.com/p/cloudfiles-sync/wiki/Инструкции
Для Windows есть такой графический инструмент: 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, это действительно отлично работает!