Version 1.00
App::DistSync - готовое решение для синхронизации двух и более WEB ресурсов между собой. Данный проект отлично зарекомендовал себя в синхронизации сайтов на которых размещаются дистрибутивы программного обеспечения.
Перед началом установки, Вам необходимо проверить наличие следующих пакетов, установленных в Вашей системе где будет "работать" App::DistSync:
Рассмотрим процесс добавления файла на зеркала сайтов на примере с файлом foo.dat
До того как начать процесс, следует установить и настроить зеркала.
Первым делом пользователь инициализирующий размещения файла foo.dat должен подключиться к любому
из имеющихся ресурсу. Далее необходимо скопировать исходный локальный файл foo.dat в каталог назначения
на удаленном ресурсе. После этого процесс можно назвать инициализированным.
Спустя некоторое время, на данном удаленном ресусре без участия пользователя в автоматическом режиме произойдет пересборка файла MANIFEST. Затем, спустя еще какое-то время каждый из зеркал-участников группы заберет файл foo.dat с ресурса, где был изначально файл foo.dat, переданный пользователем. по окончании процееса забора файла всеми участниками, исходный файл будет размещен на всех ресурсах, учавствующих в группе.
Установка выполняется двумя путями. Первый - автоматизированный; второй - ручной.
В автоматизированном режиме для установки достаточно выполнить команду:
# cpan install App::DistSync
или (для ActivePerl):
# ppm install App-DistSync
В ручном режиме Вам потребуется выполнить следующий набор операций:
Скачать дистрибутив с CPAN или официальный релиз с сайта SourceForge:
Разархивировать полученный архив, и перейти в извлеченную папку с помощью консоли
Находясь в извлеченной папке выполнить последовательно следующие команды:
# perl Makefile.PL # make # make test # make install
В процессе установки система предложит установить необходимые модули (пакеты), их не так много и большая часть уже установлена на Вашей системе.
Процесс инициализации создает структуру каталога ресурса. О файлах входящих в эту структуру см. в следующем разделе.
Для инициализации следует выполнить следующую команду:
# distsync -D /var/www/dist.mysite.com/path init
Опция -D указывает на ресурс, который будет объявлен зеркалом и там развернется структура системных файлов, необходимых для работы
Каталог WEB-ресурса это корневой каталог зеркала, где размещена структура файлов ресураса. На одном WEB-сервере может размещаться несколько ресурсов, иеющие различные URI и каталоги. В каталоге WEB-ресурса размещается ряд систеных файлов описанных ниже. Данные файлы описывают весь механизм работы процесса синхронижации, потому следует очень тчательно подходить к вопросу изменения данных файлов. Некоторые файлы не подлежат изменению и редактировать напрямую их не следует.
НЕ РЕДАКТИРУЕМЫЙ YAML файл содержащий информацию о текущем ресурсе (каталоге на WEB сервере) и дате последней синхронизации
НЕ РЕДАКТИРУЕМЫЙ файл, создаваемый автоматически при каждом запуске программы и отражающий текущую структуру каталога. По окончании синхронизации этот файл создается а в файле META модифицируется значение поля mtime. Структура файла:
DIRNAME/FILENAME MTIME SIZE MTIME_AS_STRING
Следует заметить, что имена каталогов и файлов отделяются друг от друга с помощью слеша (/). Все пути относительны каталога самомго ресурса. Данное правило распространяется на все файлы MANIFEST.* и MIRRORS.
Редактируемый файл, соедержит по умолчанию список текущих системных файлов, а также тех, которые не следует учитывать при создании файла MANIFEST. Все файлы перечисленные в этом списке НЕ БУДУТ синхронизироваться с зеркалами. Список файлов игнорируемых совместно со списком данного файла:
META MANIFEST MANIFEST.DEL MANIFEST.SKIP MANIFEST.LOCK README
Структура файла:
DIRNAME/FILENAME COMMENT
Редактируемый файл, содержит в себе имена файлов, которые следует удалить с ресурса в указанное dtime время. В процессах синхронизации список обрабатывается также как в случае с файлом MANIFEST.SKIP. DTIME - это смещение относительно времени модификации самого файла MANIFEST.DEL. По умолчанию, значение равное "+3d". Файл MANIFEST.DEL не синхронизируется, но удаленные ресурсы его скачивают, и мгновенно удаляют файлы объявленного списка у себя. По окончании процесса удаления старых файлов данный фал MANIFEST.DEL удаляется. Структура файла:
DIRNAME/FILENAME DTIME
НЕ РЕДАКТИРУЕМЫЙ системный файл. Создается в процессе начала работы программы. Если ДРУГАЯ программа на ДРУГОМ ресурсе встречает данный файл, то она перестает выполнять синхронизацию с данным хостом. Помимо этого файл содержит в себе токен-ключ, который укажет программе создавшей этот файл что происходит обращение к текущему ресурсу, и обработку следует прекратить а текущий адрес нужно внести в META. Использование данного файла предотвращает одновременный запуск копии синхронайзера на одном и том же ресурсе.
НЕ РЕДАКТИРУЕМЫЙ системный файл. Данный файл содержит в себе временные данные, скаченные с удаленных ресурсов.
Список URI ресурсов (зеркал). Адрес текущего ресурса должен быть также в данном файле. Файл MIRRORS должен скачиваться ресурсом аналогично всем остальным файлам. Файл является редактируемым. Есть хитрость - при начале процесса синхронизации происходит создание контрольного файла MANIFEST.LOCK. Данный файл содержит в себе "секретный ключ". Первым делом скачивается он, если он есть. И если скачавши его получено содержимое в виде нашего собственного ключа, то синхронизация данного каталога прекращается, т.к. удалось распознать самого себя. Далее, данный распознанный URI вносится в META файл. Таким образом ресурс распознает сам себя. Структура файла:
URI COMMENT
Редактируемый файл, содержит краткое описание данного ресурса. Файл опционален и не является обязательным
После успешной инициализации - переходим к редактированию системных файлов.
Если Вы уже создали ранее зеркало, то Вам достаточно будет отредактировать список зеркал, который следует модифицировать, добавив в него адрес нового ресурса. Файл списка зеркал - MIRRORS. Помимио этого, вновь созданный файл MIRRORS следует передать на сервер любого из зеркал, объявленных в исходном файле MIRRORS. Это необходио для того, чтобы другие зеркала смогли пользоваться новым, Вами созданным зерклом.
Далее необходио выполнить первую синхронизацию. Для этого следует выполнить команду:
# distsync -D /var/www/dist.mysite.com/path sync -d
Данная команда выполнит первую синхронизацию. Процесс может быть долгим, т.к. роизойдет скачивание всех файлов зеркал. Ключ -d позволит контролировать процесс на экране Вашей консоли.
Существует ряд ключевых опций команды:
-D DATADIR
Данная опция (ключ) определяет локальную папку текущего ресурса, в которую будут помещаться все файлы.
Для уточнения синтаксиса всегда можно воспользоваться командой:
# distsync -h
После того, как удаленные ресурсы смогут обратиться к вновь созданному зеркалу, можно смело приступать к включению ресурса в работу, для выполнения в автоматическом режиме. Для этого существует несколько способов и один из активно применяемый - cron.
Вот таким образом может выглядеть задача по выполнению автоматической синхронизации:
37 * * * * /usr/bin/distsync -D /var/www/dist >/dev/null 2>>/var/log/distsync.log
Задача говорит, что необходимо выполнять синхронизацию строго в 37 минут каждого часа
Всю информацию об ошибках, можно смотреть в файле /var/log/distsync.log
Для добавления новых файлов в синхронизируемое зеркало, достаточно просто скопировать его в каталог назначения. Также можно по необходимости создавать подкаталоги.
Для удаления файлов следует редактировать файл MANIFEST.DEL, далее система сделает все сама. По желанию после добавления строк в MANIFEST.DEL можно удалить файл с диска физически.
Для изменения файла (обновления), также, достаточно скопировать его в требуемый каталог/подкаталог, заменив тем самым прежний файл.
Следует заметить, что НЕЛЬЗЯ переименовывать и перемещать файлы и папки, т.к. при следуюшей синхронизации будет автоматически созданы отсутствующие файлы и на других зерклах будут создны новые созданные файлы и папки.
Serż Minus (Lepenkov Sergey) http://www.serzik.com <abalama@cpan.org>
Copyright (C) 1998-2014 D&D Corporation. All Rights Reserved
$Id: index.shtml 18 2014-10-14 09:09:58Z abalama $