Доброго времени суток!
Есть такая задача: некоторый демон получает данные в виде файлов. Файлы складываются пользователями в определенный каталог. Демон периодически смотрит в каталог и забирает оттуда файлы (при этом файлы перемещаются в другое место).
Проблема: при больших файлах часто возникает ситуация, когда файл еще копируется (уже создан, но не до конца заполнен), а демон уже его увидел и пытается забрать. Как можно разруливать эту ситуацию?
Мне пока пришло в голову смотреть на временную метку модификации файла и забирать только файлы, которые не менялись в последние N секунд/минут. Но файловые системы часто монтируются с noatime. Можно еще периодически проверять размер файла и забирать файл только когда его размер перестает меняться.
Но все это не очень надежно, т.к. ПО, которое копирует файл (в моей задаче каталог по SMB открыт для виндовых клиентов и те проводником копируют, изредка Far'ом), может вдруг притормозить на неопределенный промежуток времени (по крайней мере, есть подозрения, что некоторые паузы возможны).
Могут ли быть другие варианты (кроме административного разделения времен доступа к каталогу у приемника и у поставщиков)? Доступ к каталогу со стороны поставщиков только через специальное ПО - это понятно, но не подходит.