2009-03-19 26 views
8

Para un curso actual que estoy tomando, estamos usando una computadora remota para ejecutar nuestro código (Es un clúster de cuatro nodos, programación con MPI y C++).La mejor manera de sincronizar el código en un servidor remoto usando SCP (Copia SSH)

estoy cifrando localmente en mi MacBook y yo estoy buscando una buena manera de mantener mi código local hasta la fecha en el clúster.

La forma en que lo hacía era tener un terminal abierto para el funcionamiento de SCP para copiar el directorio, y otro terminal que era SSH-ed en el clúster para realizar y ejecutar el código.

Esto parece menos que óptimo para mí. ¿Hay alguna forma de que pueda automatizar el envío de los archivos al clúster cuando se modifiquen? ¿O hay un IDE (XCode, si es posible) que me permita esto?

¿O estoy atascado con el comando de una línea para mover todo? Actualmente estoy usando TextMate para escribir el código.

Respuesta

14

Si puede usar rsync, esa sería probablemente la mejor manera.

haría con sshfs a (fusible) montar la carpeta remota (s) ser una opción? Puede editar los archivos directamente o usar rsync, unison o cualquier otra carpeta en la herramienta de sincronización de carpetas.

9

Su mejor opción, aparte de un control de versión distribuida, es usar rsync en ssh. Guardo un par de máquinas en sincronía de la siguiente manera en cada uno:

rsync -urltv --delete -e ssh /src.dir [email protected]:/src.dir 

Usted ha mencionado el uso de un MacBook - rsync es en Mac OS X. Por lo que yo sé, que no necesita ser instalado extra. Y la belleza de rsync es que busca modificaciones y solo copia los archivos modificados. No hace la fusión de modificaciones simultáneas como lo haría un sistema de control de versiones distribuidas, pero si eres como yo y trabajas en tu computadora portátil, entonces rsync es la mejor manera de enviar todos los archivos modificados. (y solo los archivos modificados) de uno a otro al cambiar de modo.

Nota: las opciones de rsync utilizados aquí son:

  • -u, --update omitir los archivos que son más recientes en el receptor
  • -r, Recurse --recursive en directorios
  • -l, - enlaces copiar enlaces simbólicos como enlaces simbólicos
  • -t, --tiempo preservar tiempos de modificación
  • -v, --verbose Incrementa la verbosidad
  • --delete borrar archivos extraños de dest directorios, actúa como --delete-during

por último, -e es la opción que le permite especificar su shell remoto, en este caso ssh

+0

¿Se ejecuta rsync solo en mi computadora? Me pregunto si no tengo acceso a rsync en el clúster. –

+0

No, necesita rsync en ambos extremos del túnel ssh. Esto es muy común sin embargo así que definitivamente lo chuparía y vería. – Evan

+0

Tendré que verificar esto cuando llegue a casa. Una pregunta más, ¿rsync busca modificaciones? –

4

Yo sé que no es la respuesta que usted sabe, pero se puede configurar un servidor SVN o CVS, lo que sería mucho más fácil.

De lo contrario, me gustaría ir por rsync.

0

Probablemente no es lo que estamos buscando, pero usted debe echar un vistazo a un DSCM como git:

  1. crear un repositorio en el servidor remoto.
  2. clonarlo en su máquina de desarrollo mediante ssh.
  3. agregar/modificar el código
  4. usar confirmar y presionar (nuevamente, sobre ssh) para fusionar los cambios.
1

Incluso mejor que rsync es el Unison file synchronizer, que le permitirá realizar cambios en cada extremo y detectará y ayudará a resolver cualquier conflicto. Funciona a través de ssh.

Cuestiones relacionadas