2008-09-30 14 views
8

Me gustaría experimentar con ideas sobre la sincronización/replicación de archivos distribuidos. Para hacerlo eficiente cuando el usuario está trabajando, me gustaría implementar algún tipo de daemon para monitorear los cambios en algún directorio (por ejemplo/home/user/dirToBeMonitored o c: \ docs and setts \ user \ dirToBeMonitored). Entonces, podría ser capaz de saber qué nombre de archivo se agregó/cambió/eliminó en todo momento (o dentro de un intervalo razonable).API independiente del sistema operativo para supervisar el sistema de archivos?

Es esto posible con cualquier lenguaje de alto nivel medio ?. ¿Conoces alguna API (y en qué idioma?) Para hacer esto?

Gracias.

+2

OP está pidiendo una solución multiplataforma, ninguna de las respuestas a continuación dirección este. Idealmente, dicha solución debería implementarse en un lenguaje de bajo nivel como C++ y luego proporcionar enlaces a varios lenguajes de alto nivel, es decir, Python. –

Respuesta

9

Una respuesta Bonified, aunque uno que requiere una dependencia biblioteca bastante grande (bien vale la pena OMI)!

QT proporciona la clase QFileSystemwatcher, que utiliza el mecanismo nativo de la plataforma subyacente.

Aún mejor, puede utilizar los enlaces de lenguaje Qt para Python o Ruby. Here es una aplicación simple de PyQT4 que usa QFileSystemWatcher.

Notas

  • Una buena referencia en el creating deployable PyQT4 apps, especialmente en OSX, pero debería funcionar también para Windows.
  • La misma solución publicada anteriormente here.
  • Otros juegos de herramientas multiplataforma también pueden hacer el truco (por ejemplo Gnome 's GIO tiene GFileMonitor, aunque es sólo para UNIX y no soporta el mecanismo de OSX FSEvents que yo sepa).
10

Las APIs son totalmente diferentes para Windows, Linux, Mac OS X, y cualquier otra Unix se puede nombrar, parece. No conozco ninguna biblioteca multiplataforma que maneje esto de manera consistente.

0

Y en OS X que se llama fsevents. Es una API de nivel de sistema operativo, por lo que es más fácil acceder desde C o C++. Es debe ser accesible desde casi cualquier idioma, aunque las encuadernaciones para su idioma preferido pueden no haber sido escritas todavía.

Cuestiones relacionadas