tagger tag puddletag para mp3tag mac kid3 for easytag linux upload ftp

tag - LINUX: cómo detectar que se ha terminado la carga del archivo ftp



puddletag (5)

En mi proyecto tengo una función para subir archivos. Los archivos se cargan a través de FTP. Necesito configurar una escucha que compruebe si hay nuevos archivos e invoque una secuencia de comandos solo cuando finalice la carga del archivo. Porque si ejecuto este script inmediatamente después de detectar el nuevo archivo, puede comenzar a procesar el archivo que no está completamente cargado, lo que causará un error. ¿Alguien puede decir si esto es posible en LINUX y cómo puedo hacer esto?


Apache "Mina" ftp server (java) podría hacer lo que quiera, incluida la detección de una carga fallida, como se menciona here

Citar:

Desde Ftplet.afterCommand, debería poder ver la respuesta. Para aquellas transferencias fallidas que FtpServer puede detectar (que causa una SocketException o IOException), esto debería ser algo así como 426 o 551.

Visión general de Ftplet here , incluidos los códigos de respuesta.

La firma del método afterCommand:

FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)

Verificará reply.getCode() en su método reply.getCode() . Debe subclasificar DefaultFtplet lugar de implementar la interfaz Ftplet desde cero.

Tenga en cuenta que DefaultFtplet::afterCommand muestra cómo detectar a qué comando del cliente se está respondiendo. Puede verificar STOR o STOU y el código de respuesta 426 o 551 para detectar subidas fallidas.

Sin embargo, esto puede no detectar una carga terminada intencionalmente por el cliente, si la aplicación cliente decide tratar la transferencia como si el archivo fuera más corto de lo que es. En el caso de una conexión interrumpida involuntariamente, creo que la verificación del código de respuesta funcionará. Una prueba podría ser matar la aplicación cliente o desactivar la interfaz de red de la máquina cliente.

Para manejar las subidas exitosas (su pregunta original), puede buscar el código de respuesta exitoso en su lugar, es decir, 226 .


Echa un vistazo a inotify

Sin embargo, no vigila automáticamente los subdirectorios, por lo que si necesita monitorear muchas cuentas ftp (o el cliente de FTP quiere crear un subdirectorio y cargarlo allí), deberá manejarlo usted mismo.




Intentaría usar inotify , código de evento IN_CLOSE_WRITE.