|
|
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
Есть стороннее приложение, которое раз в 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_серверов в дистрибутиве нет. Что делать?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 21:45 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
а если клиент умеет докачку, и при обрывах доливает? Переименовывать клиентом после заливки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 23:05 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
Журавлев Дениса если клиент умеет докачку, и при обрывах доливает? Переименовывать клиентом после заливки? На клиентской стороне ничего менять нельзя. Они делают cd в известную папку и вливают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 08:57 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
MacDuck, Вы не можете на стороне сервера узнать целиком залился файл или нет, потому что сервер не знает его размера, это знает только клиент. Но так как клиента изменить Вы не можете то Ваша задача не решаема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 17:29 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
можно закостылить датой модификации файла, если файл не изменен >20минут назад, считаем его залитым ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 18:19 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
ЁшMacDuck, Вы не можете на стороне сервера узнать целиком залился файл или нет Почему, могу. По открытому дескриптору. На самом деле, сконструлячил на lsof от владельца принимающего софта. Криво, но работает. Временный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 21:45 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
Журавлев Денисможно закостылить датой модификации файла, если файл не изменен >20минут назад, считаем его залитым В скриптах приложения файлы выбираются в цикле for .. in $DIR. А как элегантно сформулировать проверку "файл не изменен >20минут назад" в терминах sh? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 21:47 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
find -mmin +20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 03:13 |
|
||
|
vsftpd 2.0.7//SLES11 SP2
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудровfind -mmin +20 Да, find. Спасибо. Но все это затычка, увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 09:42 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=38003349&tid=1483260]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 489ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...