Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / vsftpd 2.0.7//SLES11 SP2 / 10 сообщений из 10, страница 1 из 1
16.10.2012, 21:45
    #38001359
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
Есть стороннее приложение, которое раз в 5 минут проверяет входящий каталог пользователя, в который в произвольное время вливаются по ftp некие файлы.


Если находит файлы и проверяет fuser-ом наличие pid, открывшего файл. Если проверка проходит (fuser ничего не возвращает), то файлы забираются к себе, упаковываются и т.д.

Сейчас забираются и недовлитые файлы.

В конфиге vsftpd есть параметр lock_upload_files, но он НЕ РАБОТАЕТ и ничего не лочит. Файл тупо создается как он и должен быть по завершении влива и просто растет в размере. Начало вливаемого файла можно запросто, скажем, зазипить или замувить. При этом вливающий ftp-клиент будет спокойно продолжать вливать "в никуда".
Проблема усугубляется тем, что влив происходит по софтлинкам, а fuser в таком случае не выдает ничего ни по "линкованному" пути, ни по "честному". Т.е. скрипты приложения не понимают, что файл еще открыт. lsof от рута показывает открытый файл, но от пользователя приложения - НЕТ. Как распознать, что файл недовлит еще?

Принудительная установка иной версии vsftpd (2.2, 3.0), в которой, якобы, этот баг пофикшен разрушит целостность дистрибутива, а сервер продуктивный. Т.е. отклоняться от дистрибутивной поставки библиотек и бить dependences нельзя. А на фирменных репозиториях vsftp есть только единственной версии - 2.0.7.

Почему софтлинки? Просто пути приложения и команды-пути на стороне ftp-клиентов захардкожены и не совпадают, менять их нельзя. А, скажем, pureftp софтлинков не понимает. Иных ftp_серверов в дистрибутиве нет.

Что делать?!
...
Рейтинг: 0 / 0
16.10.2012, 23:05
    #38001453
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
а если клиент умеет докачку, и при обрывах доливает? Переименовывать клиентом после заливки?
...
Рейтинг: 0 / 0
17.10.2012, 08:57
    #38001688
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
Журавлев Дениса если клиент умеет докачку, и при обрывах доливает? Переименовывать клиентом после заливки?
На клиентской стороне ничего менять нельзя. Они делают cd в известную папку и вливают.
...
Рейтинг: 0 / 0
17.10.2012, 17:29
    #38003026
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
MacDuck, Вы не можете на стороне сервера узнать целиком залился файл или нет, потому что сервер не знает его размера, это знает только клиент. Но так как клиента изменить Вы не можете то Ваша задача не решаема.
...
Рейтинг: 0 / 0
17.10.2012, 18:19
    #38003128
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
можно закостылить датой модификации файла, если файл не изменен >20минут назад, считаем его залитым
...
Рейтинг: 0 / 0
17.10.2012, 21:45
    #38003346
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
ЁшMacDuck, Вы не можете на стороне сервера узнать целиком залился файл или нет

Почему, могу. По открытому дескриптору.

На самом деле, сконструлячил на lsof от владельца принимающего софта. Криво, но работает. Временный вариант.
...
Рейтинг: 0 / 0
17.10.2012, 21:47
    #38003349
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
Журавлев Денисможно закостылить датой модификации файла, если файл не изменен >20минут назад, считаем его залитым

В скриптах приложения файлы выбираются в цикле for .. in $DIR.

А как элегантно сформулировать проверку "файл не изменен >20минут назад" в терминах sh?
...
Рейтинг: 0 / 0
18.10.2012, 03:13
    #38003496
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
find -mmin +20
...
Рейтинг: 0 / 0
18.10.2012, 09:42
    #38003633
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
Вячеслав Любомудровfind -mmin +20

Да, find. Спасибо.

Но все это затычка, увы.
...
Рейтинг: 0 / 0
07.11.2012, 11:34
    #38028140
MacDuck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsftpd 2.0.7//SLES11 SP2
Сделал совершенно тупо: есть открытые ftp-соединения - "постой, паровоз". Нету - обрабатываем.

ЗЫ: SLES - говно.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / vsftpd 2.0.7//SLES11 SP2 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]