¿Cómo estar atento a la llegada de archivos si inotifywait no está disponible?

¿Cómo estar atento a la llegada de archivos si inotifywait no está disponible?

Tengo un directorio en el que se escribe cuando otras máquinas envían archivos a través de FTP. Quiero implementar algo que note cuándo llegan los archivos y si su nombre de archivo contiene una subcadena particular (como "jpg"), mueva el archivo a algún otro directorio (solo después de que el archivo haya terminado de llegar, no antes).

Quiero implementar esto en muchos tipos diferentes de máquinas Linux. Una de esas cajas tiene el kernel de Linux 2.4.22. Es posible que haya otros más antiguos. Todavía estoy comprobando.

En las máquinas más antiguas, veo esto: inotifywait: command not found.

También he visto esto:The inotify API is available in Linux 2.6.13 and later

Y esto:bash: watch: command not found

Las ideas en POSIX sh, bash o C podrían funcionar. Perl y Python probablemente no estén disponibles en todos los lugares donde quiero ejecutar esto. No tengo permiso para instalar paquetes.

Respuesta1

Escribí este programa Perl hace mucho tiempo que podría ayudarte a comenzar si lo entiendes. Utiliza la función inotify en el kernel.

http://www.win2ix.ca/2013/05/31/606/

Tendrás que cambiar el código de sincronización para hacer lo que necesites, pero casi todo está ahí.

Sé que tienes un problema con Perl, pero quería darte esto por si acaso.

Si te ayuda, aquí tienes una demostración de cómo hacerlo con C.

http://man7.org/tlpi/code/online/diff/inotify/demo_inotify.c.html

información relacionada