Имеется следущая система:
FTP сервер. На сервере создаются файлы в дериктории. Клиент скриптом по расписанию по FTP копирует файлы себе и удаляет с сервера. Проблема в том, когда имеем файл, который ещё не записан до конца, он не удаляется и в итоге дублируется. Как этого избежать? как сделатья так чтобы не записаный до конца файл не копирывался?
>Имеется следущая система:
>FTP сервер. На сервере создаются файлы в дериктории. Клиент скриптом по расписанию
>по FTP копирует файлы себе и удаляет с сервера. Проблема в
>том, когда имеем файл, который ещё не записан до конца, он
>не удаляется и в итоге дублируется. Как этого избежать? как сделатья
>так чтобы не записаный до конца файл не копирывался?а клиент каким образом должен узнать, до конца файл записан на сервере или нет? постановка задачи весьма интересная)
>>Имеется следущая система:
>>FTP сервер. На сервере создаются файлы в дериктории. Клиент скриптом по расписанию
>>по FTP копирует файлы себе и удаляет с сервера. Проблема в
>>том, когда имеем файл, который ещё не записан до конца, он
>>не удаляется и в итоге дублируется. Как этого избежать? как сделатья
>>так чтобы не записаный до конца файл не копирывался?
>
>а клиент каким образом должен узнать, до конца файл записан на сервере
>или нет? постановка задачи весьма интересная)клиент ни как не узнает. в этом то и проблема :)
>[оверквотинг удален]
>>>FTP сервер. На сервере создаются файлы в дериктории. Клиент скриптом по расписанию
>>>по FTP копирует файлы себе и удаляет с сервера. Проблема в
>>>том, когда имеем файл, который ещё не записан до конца, он
>>>не удаляется и в итоге дублируется. Как этого избежать? как сделатья
>>>так чтобы не записаный до конца файл не копирывался?
>>
>>а клиент каким образом должен узнать, до конца файл записан на сервере
>>или нет? постановка задачи весьма интересная)
>
>клиент ни как не узнает. в этом то и проблема :)Копировать во временный файл на том же разделе диска. По окончании копирования - переименовать/переместить в директорию FTP сервера.
respect,
ronin
>[оверквотинг удален]
>>>или нет? постановка задачи весьма интересная)
>>
>>клиент ни как не узнает. в этом то и проблема :)
>
>Копировать во временный файл на том же разделе диска. По окончании копирования
>- переименовать/переместить в директорию FTP сервера.
>
>
>respect,
>roninбыло бы всё так просто - небыло бы вопроса. файлы создаются приложением, код которого закрыт.
>[оверквотинг удален]
>>
>>Копировать во временный файл на том же разделе диска. По окончании копирования
>>- переименовать/переместить в директорию FTP сервера.
>>
>>
>>respect,
>>ronin
>
>было бы всё так просто - небыло бы вопроса. файлы создаются приложением,
>код которого закрыт.напрягу свои телепатические способности )))
вероятно у тебя создается какойто лог или датафайл на сервере - создается он у тебя скорей всего регулярно те старые файлы через определенный промежуток времени уже закрыты
те есть некий таймаут спустя который можно по дате модификации файла с определенной долей уверенности сказать что он закрыт - скриптом учитывает этот таймут и все - те не копируем самые последние файлы
если я ошибаюсь изложи задачу поподробнее
>[оверквотинг удален]
>>код которого закрыт.
>
>напрягу свои телепатические способности )))
>вероятно у тебя создается какойто лог или датафайл на сервере - создается
>он у тебя скорей всего регулярно те старые файлы через определенный
>промежуток времени уже закрыты
>те есть некий таймаут спустя который можно по дате модификации файла с
>определенной долей уверенности сказать что он закрыт - скриптом учитывает этот
>таймут и все - те не копируем самые последние файлы
>если я ошибаюсь изложи задачу поподробнееДумал обойдётся без этого.
Есть софт который генерит лог. Логов много (порядка 150 файлов в минуту) этот лог вырезается клиентом, который этот лог анализирует и ложит в базу. Повторятеся это каждые 5 минут. И всё бы хорошо, но некоторые лог файлы пишутся быстро, а некотороые медленно(разный объём данных в файле). Т.е. то что файл послдний - не гарантирует, что именно он не закрыт.Есть вариант формировать список файлов, у которых закрыты дескрипторы за пару секунд до того как выполница клиентский скрипт.
Так же есть вариант на клиенте удалять файлы, которые не удалось удалить на сервере.Просто интересно, какие ещё решения возможны. Хотел уже было написать демона, который отслеживал файлы в одной директории и при закрытии файла перемещал их в другую :) Но не знаю с какой стороны подстуиться.