Escenario: un IDE se configura en una caja de escritorio de Linux, editando archivos PHP localmente. Cada vez que guardo un archivo, quiero que este cambio aparezca en el servidor Linux donde se está ejecutando Apache. El servidor tiene ssh (y samba y nfs para el caso).
Como referencia, cuando edité archivos en Windows, finalmente encontré WinSCP como la herramienta exacta que necesitaba: WinSCP tiene esta característica presente, con sincronización inicial y luego actualización continua, usando el servicio de observación del sistema de archivos: "Mantenga el Directorio Remoto actualizado Fecha".
En Linux, se podría argumentar que sshfs podría emplearse para evitar por completo la necesidad de sincronización. En Windows, un samba-share haría lo mismo. Sin embargo, quiero que el IDE funcione con archivos locales (¡en un disco SSD!), Sin tener que pasar por la red para indexar PHP y demás, lo que lleva años.
Sin embargo, sshfs podría ser parte de la solución, de modo que la sincronización continua solo debía hacerse entre dos directorios locales.
¿Alguna idea o puntero?
Respuestas:
También puede usarlo
inotifywait
desde el paquete inotify-tools.fuente
rsync
/scp
tiene un retraso molesto al establecer la conexión ssh.Lsyncd sería una buena solución para esto.
En pocas palabras, utiliza el mismo tipo de herramientas para hacer el trabajo (inotify y rsync) como lo sugieren otras respuestas, pero es más fácil de configurar para alguien que no esté familiarizado con los scripts de shell.
fuente
Necesito esto mucho ya que mi código debe ejecutarse en cajas remotas y escribo código en la máquina local. Encontré una buena herramienta que puede usar para monitorear continuamente sus carpetas locales y sincronizarlas con la carpeta remota o local: https://github.com/axkibe/lsyncd
Un comando simple para sincronizar continuamente un directorio local con una máquina remota a través de ssh será:
Al igual que con cualquier otro comando rsync, asegúrese de dar la ruta correcta a la carpeta y verifique antes de ejecutar el comando. Casi había matado una de mis máquinas remotas porque no pude dar un directorio de destino correcto. Asegúrese de no perderse la ruta remota y no use '/' a menos que sepa lo que está haciendo.
fuente
Si necesita observar el sistema de archivos, entonces inotify es la forma de hacerlo. Escribiría una secuencia de comandos simple de python usando pyinotify para realizar la sincronización cuando se cambie el sistema de archivos. Ver documentación . También puede consultar autosync.py para obtener algo de inspiración. Que te diviertas.
fuente
Lo que hice una vez es tener un script bash ejecutándose
ls -l
en un bucle (con algo de suspensión) y comparándolo con el resultado anterior. Si cambió, realice su sincronización.Inicie este script en una nueva terminal con los nombres de archivo como argumentos (después de poner en su herramienta de sincronización).
(Usé esto para comenzar una compilación, no para sincronizar, pero funcionaría de manera similar).
fuente
Enfoque mucho más simple:
Exporte su / var / www con samba (o nfs) y trabaje en los archivos directamente en el servidor.
Otra solución: la mayoría de los IDE permiten varias configuraciones de implementación: compruebe si hay una que le convenga.
O configure un sistema de gestión del código fuente como Git, Bazaar, etc.
Buena suerte !!
fuente