Как получить информацию, что файл по-прежнему открыт для ftp

Использую сервер (Synology NAS), на который копируются ftp, видеоклипы с регистраторов системы видеонаблюдения. При копировании файла small script преобразует его из формата DAV в AVI, используя следующую инструкцию:

find ./ -type f -name "*.dav" -exec ffmpeg -y -i {} -vcodec copy -movflags +faststart {}.avi ;

Проблема в том, что существует много клипов, передаваемых постоянно с камер видеонаблюдения на Synology. То есть многие клипы передаются с рекордеров на Synology одновременно. Таким образом, приведенное выше утверждение будет пытаться конвертировать даже клипы, где передача еще не закончена. Как я могу исключить такие неполные клипы из преобразования? Я не могу использовать функцию «inotify» или «lsof», потому что в Synology Linux нет такой возможности (я не могу установить optware на Synology по многим причинам). Я думаю, что необходимо знать, что конкретный файл все еще открыт для записи и исключить его для conwersion. Есть идеи, что делать?

1 ответ

  1. Наконец я нашел обходной путь для моей проблемы. Одиночный видеоклип чем 10Мб в размере. Так время transsmision файла sigle чем 1 min max. Из-за этого я добавляю команду find, время модификации в качестве аргумента. Это решит мою проблему. Все проблемы у меня из-за ограниченной функциональности Synology Linux. Se под новым синтаксисом команды:

    find ./ -type f -mmin +10 -name "*.dav" -exec ffmpeg -y -i {} -vcodec copy -movflags +faststart {}.avi \;
    

    Обратите внимание, что если файл не был изменен в течение последних 10 мин, это означает, что процедура передачи закончилась и в реальности моего приложения (CCTV video clips collecting) не нужно проверять, открыт файл или нет.