LINUX.ORG.RU
ФорумAdmin

Синхронизация с фтп по требованию


0

0

Есть фтп сервер с обновлениями, 12 машин и узкий инет. Хотелось бы что-бы машины загружали обновления только один раз. Как сделать локальный фтп сервер, который синхронизируется с сервером в инете, причём так, чтобы закачивались только файлы, которые были нужны, т.к на серваке в инете много обновлений, которые никогда закачены не будут.

squid не помогает, т.к в запросах стоит TCP_REFRESH и он из кеша файлы не берёт. Даже если его можно настроить на то, чтобы он это игнорировал, хочется чтобы обновления лежали в каталоге, откуда их можно легко скопировать.

★★★★★

Например, локально поднять произвольный FTP-сервер, указать машинам брать обновления с него и написать несложный скрипт, который, скажем, по крону забирал бы с удаленного FTP-сервера нужные файлы (man fltp на предмет --mirror и --exclude) и складывал бы их в FTPROOT локального FTP-сервера

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

А этот скрипт где писать? Как мне от фтп сервера получать события, что клиент захотел такой-то файл? С помощью vsftp как это можно сделать? Или посоветуйте другой фтп сервер.

Сорри, я новичёк.

snizovtsev ★★★★★
() автор топика
Ответ на: комментарий от snizovtsev

Ещё обнаружил, что есть доступ к обновлениям по http. Может можно просто какой-нибудь скрипт-обработчик к apache прикрутить можно? Или надо разбираться, как для него модули писать?

snizovtsev ★★★★★
() автор топика
Ответ на: комментарий от snizovtsev

Тогда не совсем понятно условие задачи - известно ли заранее, какие именно файлы нужны клиентам, или нет? Если да, то принципиально ли лезть за ними в инет именно в тот момент, когда они потребуются тому или иному клиенту, или можно их закачать на локальный сервер заранее?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Нет, неизвестно конечно. Иначе можно было бы их просто закачать и синхронизировать.

Т.е мне надо, чтоб когда юзер обращался на локальный сервер (фтп или хттп), то если такого файла нет или он обновился, закачивался на локальный сервер и отдавался, иначе просто отдавался бы локально.

Можно сделать, чтобы Apache переделывал запрос вида http://somehost/somepath/somefile на http://somehost/getfile.php?file=somefile ?

Чтобы клиенту это было не заметно. На всех машинах openSUSE 10.2, обновления качаются Yast-ом. Инет 128кбит на всех, поэтому качать обновления для каждой машины долго.

snizovtsev ★★★★★
() автор топика
Ответ на: комментарий от snizovtsev

> Можно сделать, чтобы Apache переделывал запрос вида http://somehost/somepath/somefile на http://somehost/getfile.php?file=somefile ?

Можно, см. mod_rewrite. В httpd.conf дописать примерно следующее:

LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine on
RewriteRule ^(http://somehost/somepath)/(.*) $1/getfile.php?file=$2 

dexpl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.