¿Hay algún software de sincronización de archivos que pueda sincronizar todos mis servidores/clientes (sin GUI)?

Tengo dos servidores en la nube de Ubuntu (sin GUI), dos computadoras portátiles Ubuntu (con GUI) y una computadora de escritorio de Windows. Cuando escribo código web, me gusta tener el código (en la carpeta www) sincronizado en todos mis dispositivos para que cuando cambie el archivo HTML en mi computadora portátil, se cambie automáticamente en el servidor (y en la otra computadora portátil). Sé que esta es una práctica horrible porque me permitiría estropear mi(s) página(s) web, pero no me importa porque es más conveniente que ingresar a mi servidor mediante SFTP cada vez que cambio una página. Tampoco me gusta tener que confirmar y sincronizar cada pequeño cambio al actualizar mi código personal.

¿Hay algún software de sincronización de archivos que pueda sincronizar (la carpeta www) en todos mis servidores/clientes?

Quiero algo que NO requiera que instale una GUI en mis servidores en la nube.

Mi software de sincronización de archivos ideal se ejecutaría en la terminal de Ubuntu de la siguiente manera:

$: filesync /var/www -username -password

O

$: filesync /var/www MyCloudServer.net -password

donde "MyCloudServer.net" actúa como un servidor de sincronización/retransmisión.

¿Hay algún software como ese? Y si no, ¿hay alguna manera de hacer que mi computadora portátil transfiera automáticamente cualquier archivo HTML modificado en mi carpeta /var/www a mi servidor en tiempo real sin tener que hacer clic en nada?

Respuestas (2)

Sincronización de BitTorrent

Instálelo en su cliente y su servidor y mantendrá las carpetas de su elección sincronizadas, con un historial de sincronización en caso de que haya errores.

Sync salta la nube y encuentra la ruta más corta entre dispositivos al transferir datos. Sin Nube. Sin carga a servidores de terceros. Sincronización de archivos simple y rápida.

Sync puede manejar archivos de cualquier tamaño. Sincronice y comparta fácilmente carpetas que contengan gigabytes (o terabytes) de datos.

Mantenga las carpetas sincronizadas entre múltiples plataformas y sistemas operativos. Sync está disponible para OS X, Windows, Linux, dispositivos NAS y más.

Con su servidor Ubuntu, puede consultar esta guía , pero básicamente:

  1. Agregar un repositorio:add-apt-repository ppa:tuxpoldo/btsync
  2. Instalarlo:apt-get update && apt-get install btsync
  3. Configúralo respondiendo a la serie de preguntas que te plantea durante la instalación. Si cometió algún error, simplemente reconfigure ( dpkg-reconfigure btsync)
  4. Otorgue al btsyncusuario permisos para acceder a la carpeta que desea sincronizar ( chown you:btsync && chmod 775)

Como solicitó, no hay GUI per se, pero es más fácil configurar su sincronización si usa la interfaz web. La ejecución del btsyncproceso establece una interfaz en http://your_ip_or_domain:8888la que se autentica con el nombre de usuario y la contraseña que especificó durante la instalación. Luego puede usar esto para administrar la sincronización de sus carpetas.

¿Puedo sugerir que una forma mucho mejor de trabajar sería usar un sistema de control de versiones como mercurial (hg) o git y cuando esté satisfecho con sus cambios en una computadora simplemente confirme y empuje el repositorio, si sus otras máquinas tienen un ejecución de la tarea cron que extrae y actualiza, digamos cada 10 minutos, automáticamente usarán la última versión dentro de 10 minutos.

El uso de un VCS tiene muchas ventajas y significa que, si se equivoca, puede revertir los cambios, confirmar la reversión posiblemente con cambios adicionales, confirmar y presionar nuevamente, entonces está listo para continuar.

Tanto hg como git están disponibles para la mayoría de las plataformas y están preinstalados en muchas.

Cualquier flujo de trabajo profesional debería permitirle volver a su trabajo anterior.

Odio a git. Odio hacer commits. Odio escribir mi contraseña. Odio el control de versiones.
Preferiría tener una copia de seguridad diaria y volver a la última copia de seguridad diaria en caso de que algo salga mal que perder el tiempo escribiendo "git commit -m "none-of-your-business-I-solo-necesitaba- -actualizar-algunas-pequeñas-cosas-no-creo-que-tengo-que-escribir-nada-para-justificar-cambiar-cualquier-código-en-mi-servidor" ". Cada vez que quiero empujar y sincronizar un pequeño cambio.
Entonces les deseo suerte a usted y a sus empleadores; ambos la necesitarán. ¿Alguna vez has oído hablar del llavero? No hay necesidad de contraseñas.
Me refiero a publicar y compartir código, uso git después de que finaliza un gran cambio (cambio de versión importante, compartir código con amigos, etc.). Algo que sucede tal vez una vez al mes. Para ser totalmente honesto, la única forma en que usaría git para mis propios proyectos personales es si git automáticamente hizo una confirmación, envió esa confirmación al servidor y luego extrajo los cambios que se realizaron después de cada vez que guardé un texto. expediente.
Quiero decir que lo he usado: fusión, sucursales múltiples, deshacer compromisos, etc. Si mi empleador me obligara a usarlo, lo haría. Pero para mis proyectos de codificación personales, es simplemente una mierda.
Pensándolo bien, podría escribir un complemento de Eclipse que haga exactamente eso (compromiso automático y sincronización después de cada guardado), lol. Pero hasta entonces, esta respuesta no es aceptable.
"Odio git. Odio hacer confirmaciones. Odio escribir mi contraseña". Si bien no puedo discutir sobre lo primero por usted (aunque me encanta git), no entiendo lo segundo: tengo una configuración de trabajo de Cron que se preocupa por mí automáticamente, y nunca tengo que escribir la contraseña (después de la configuración inicial, eso es). Para su caso, incluso pensaría en ir un paso más allá y verificar con GitAnnex, para que pueda definir qué archivos irán a dónde y cuáles en todas partes.
Lo consideraré. Quiero decir que la frecuencia con la que tendría que ejecutarse es bastante alta (codifico en tres computadoras diferentes en tres partes diferentes de mi casa a la vez). Quiero decir, tendré una computadora instalada en la cocina, una en el baño y otra en el dormitorio y cada vez que vaya al baño escribiré algunas líneas de código y luego, cuando termine, Iré a la cocina, comeré algo y escribiré algunas líneas de código (continuando desde donde lo dejé cuando estaba codificando en el baño), y luego iré al dormitorio y codificaré allí hasta que necesite volver a usar el baño.
Pero sí, mi entorno de codificación óptimo está sincronizado en tiempo real en todas mis computadoras. A veces, cuando no estoy en casa (como en la biblioteca de la escuela), conecto SSH a uno de mis servidores y hago un cambio de código allí y luego quiero que ese cambio de código se propague a mis computadoras portátiles cuando llegue a casa. Lo que solía hacer era usar el escritorio de mi casa como mi servidor, y todas mis computadoras sincronizaban una carpeta de código de Dropbox a través de la red local (con copias de seguridad diarias completas automáticas durante los últimos 30 días), pero ahora mis servidores están fuera de mi red local y No puedo hacer eso (sin llenar el servidor con basura Unity/KDE).
Hay al menos un complemento de Eclipse para git y hg (los hay para la mayoría de los IDE), al hacer clic en un solo botón normalmente se realizará una confirmación, por lo general, puede configurar la inserción automática en la confirmación, es posible que tenga un mensaje de confirmación predeterminado. en cada una de sus computadoras, (aunque sospecho que no desearía "Codificado mientras tiene una S..." como mensaje para la del baño. Cuando llegue a su otra máquina, presionar un solo botón activará un tirón y podrá configurar la actualización automática en pull Probablemente podría codificar un solo botón para "guardar todo, confirmar y empujar".