Обычно Вы просто пишете сценарий в него и помещаете, делают запись крона для сценария, таким образом, это работает так часто, как Вы хотите. Существует набор примеров здесь.
Интенсивный курс резервного копирования базы данных для программиста:
Плохо:
outfile = ''
i = 0
while backup:
version = i % 7;
//In this case, the dump is from from the previous iteration of loop
Tape_Backup(outfile);
DB_Dump(outfile=strcat('dump.' + version + '.tar.gz'));
Sleep(1 day);
Хороший:
outfile = ''
i = 0
while backup:
version = i % 7;
DB_Dump(outfile=strcat('dump.' + version + '.tar.gz'));
Tape_Backup(outfile);
Sleep(1 day);
У нас есть аналогичная установка с nginx перед серверами приложений ruby. В этом сценарии мы используем блеск. Веб-серверы с балансировкой нагрузки - это серверы gluster, а серверы приложений - клиенты gluster.
Gluster использует FUSE, поэтому его может быть проще запустить в среде VPS.
Лучше, чем запускать rsync каждые три секунды (или что-то подобное), запускать rsync всякий раз, когда файлы действительно изменяются. Это легко сделать с помощью incron . Incron похож на cron, но вместо того, чтобы указывать что-то вроде «запускать каждую минуту», вы можете сказать «запускать каждый раз при изменении файла». Вы можете указать incrontab следующим образом:
/path/to/webroot IN_MODIFY,IN_CREATE rsync -az $@/$# user@otherserver:$@/$#
/path/to/webroot IN_DELETE rsync --delete $@ user@otherserver:$@
http://www.csync.org/ похож на rsync, но разработан с учетом этой конкретной ситуации; Я думаю, вам все равно может понадобиться что-то для его запуска, например incron
Ваши исходные файлы меняются так часто, что вы даже можете подумать о rsyncing каждые 3 секунды, или это динамически генерируемые файлы?
Если это действительно исходные файлы, вам лучше запустить повторная синхронизация при обнаружении изменения во время последнего изменения файла / папки.
Если создается динамически, вам следует рассмотреть возможность сохранения содержимого в базе данных, совместно используемой обеими машинами, и воссоздания их в виде файлов, если версия базы данных новее, чем физический файл (сравните поле отметки времени к отметке времени файла).
Просто наткнулся на этот ответ, когда искал собственное решение. Проблема с incron в том, что он не контролирует подкаталоги и папки.
Альтернативой является lsyncd: http://code.google.com/p/lsyncd/