Какой инструмент я могу использовать для синхронизации содержимого локального каталога с содержимым корзины Rackspace Cloud Files?
Мне нужно приложение, подобное rsync, для создания зеркала, а не приложение для резервного копирования. Я хочу иметь возможность делать
rsync --update --delete /local/dir/ cloudfiles://bucket
чтобы удаленная корзина содержала точное зеркало файлов, находящихся в /local/dir/
.
Метаданные файлов (владелец, права доступа) не важны, и внутри основного каталога нет каталогов.
Самый простой способ синхронизировать локальный каталог с облачными файлами 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
псевдопуть контейнера - скорее всего, это не то, что вам нужно.
Вы можете использовать модуль Rackspace Cloud Files FUSE (http://www.rackspace.com/knowledge_center/article/mounting-rackspace-cloud-files-to-linux-using-cloudfuse) для создания монтируемой файловой системы, но помните о следующих предостережениях:
Для Linux я нашел этот старый проект: http://code.google.com/p/cloudfiles-sync/wiki/Instructions
Для Windows есть этот инструмент с графическим интерфейсом: http://www.cloudberrylab.com/free-openstack-storage-explorer.aspx
Я также только что нашел этот инструмент, который может позволить вам монтировать облачное хранилище файлов: http://smestorage.com/?p=static&page=LinuxDrive
Другой потенциальный вариант, в качестве альтернативы CloudFuse для монтирования Rackspace Cloud Files в качестве тома, для которого вы запускаете rsync, вы можете запустить Caimito как мост Cloud-Files-to_WebDAV.
Затем, хотя вы могли бы попытаться использовать плагин файловой системы Fuse DAV2 с rsync и кучей специальных параметров командной строки для передачи файлов в Cloud Files через мост, я вместо этого рекомендую "копирование сайта", которое по сути не является ужасно не похож на Unison.
https://www.howtoforge.com/maintain-remote-web-sites-with-sitecopy-debian-squeeze-ubuntu-11.10
Sitecopy выполняет ОТЛИЧНУЮ работу по отправке файлов через WebDAV к своей цели (даже если наша цель - фронтальный слой эмуляции для Cloud Files). Это связано с тем, что sitecopy поддерживает локальную базу данных метаданных удаленных файлов, что позволяет быстро сравнивать пакеты с rsync.
Caimito оказался на удивление стабильным и простым в установке и настройке, несмотря на его корни в Java.
Вы можете сделать вывод, что использование «swift» (упомянутого выше) может быть более прямым вектором решения, но это решение дает вам еще несколько мест для исследования, анализа, отладки и управления потоком данных.
Я думаю, вы можете использовать для этого rsync, но он не работает для вас по любой причине, которую вы также пытаетесь: Синхронизатор файлов Unison, это действительно отлично работает!