inotify-updater.py
Resulta que donde yo trabajo tenemos un setup bastante curioso. Tenemos un repositorio SVN central, un servidor de pruebas, un servidor de backups y nuestras computadoras. El problema es que nosotros desarrollamos en nuestras propias computadoras y copiamos los cambios al servidor de prueba a mano. Antes, cuando usábamos Dreamweaver esto era fácil porque DW tiene una opción para especificar servidor de pruebas y que queremos que copie todo cada vez que salvamos. Yo dejé de usar DW hace rato cuando me cambié a Ubuntu, con lo cual lo de copiar los archivos a mano me tiene harto.
El problema tiene tres soluciones:
- Bajarnos los repositorios al servidor de prueba directamente y desarrollar ahí vía SMB
- Montar servidores apache en cada una de nuestras computadoras y hacer las pruebas en
localhost
, y copiar solo cuando tengamos que mostrar a clientes o haya cambios grandes. - Escribir un programa que monitorice cambios y los copie
La opcion 1 no va porque a mi me gusta tener todo bien separado. La opción 2 es viable, pero tener desarrolladores+1
servidores de prueba desperdigados por ahí es un quilombo. Y hace unos días leyendo sobre inotify me enteré que una librería para python llamada pyinotify. Así que como hace rato que quería probar python y me aburría, modificando uno de los ejemplos escribí un pequeño script que hace justamente lo que necesito.
inotify-updater.py
Por el momento solo vigila creaciones y modificaciones porque es todo lo que necesito, puede que en el futuro (algún otro fin de semana aburrido) implemente borrado y alguna que otra funcion. La idea es que uno especifica que directorios tiene que vigilar y a donde tiene que repetir los cambios. Las relaciones son de uno a uno, es decir, un directorio como fuente y otro como destino.
/home/hermann/folder1 /home/hermann/folder2
/home/hermann/folder3 /home/hermann/folder4
Esto copia todo lo que uno guarda y crea en folder1 y folder3, y lo repite en folder2 y folder4 respectivamente.
Estas instrucciones se guardan en un archivo, con una instruccion por linea y se ejecuta así:
$ ./inotify-updater.py ~/.inotify_instrucciones
start monitoring /home/hermzz/folder1 with mask 0x00000102
start monitoring /home/hermzz/folder3 with mask 0x00000102
touch /home/hermzz/folder2/prueba.txt
cp /home/hermzz/folder1/prueba.txt /home/hermzz/folder2/prueba.txt
mkdir /home/hermzz/folder2/carpeta
touch /home/hermzz/folder4/prueba.txt
cp /home/hermzz/folder3/prueba.txt /home/hermzz/folder4/prueba.txt
cp /home/hermzz/folder3/prueba.txt /home/hermzz/folder4/prueba.txt
stop monitoring...
La prueba que generó eso fue la siguiente:
~/folder1$ echo "texto" > prueba.txt
~/folder1$ mkdir carpeta
~/folder1$ cd ../folder3
~/folder3$ echo "texto" > prueba.txt
~/folder3$ echo "mas texto" >> prueba.txt
Dandole a ctrl+c termina el programa.
Si a alguien le resulta útil lo puede encontrar acá: inotify-updater.py.
-
Articles
- October 2014
- May 2011
- April 2011
- January 2011
- December 2010
- November 2010
- September 2010
- August 2010
- July 2010
- February 2010
- December 2009
- August 2009
- June 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- August 2005
- July 2005
- December 2004
- November 2004
- October 2004
- September 2004
- August 2004
- July 2004
- June 2004
- May 2004
- April 2004
- March 2004
- February 2004
- January 2004
- December 2003
- November 2003
- October 2003
- September 2003
- August 2003
- July 2003
-
Meta