Tengo tres computadoras en casa y me gustaría /home/
sincronizar el árbol de carpetas entre las tres.
Todos los archivos / carpetas (excepto los ocultos) que se modifican / agregan / eliminan en una de las tres computadoras se actualizan en las otras dos.
¿Es rsync
suficiente para hacer esto? ¿y cómo?
Respuestas:
Aquí hay una lista de cosas que podrían resolver este problema, cada una equilibra las compensaciones que tiene que hacer de manera diferente, por lo que tendrá que tomar sus propias decisiones y probar las cosas por sí mismo:
Unison : como lo mencionaron otros, esto se ejecuta manualmente, pero es muy rápido, confiable y efectivo. Requiere que ambas máquinas se sincronicen para estar encendidas al mismo tiempo. Tiene una interfaz de usuario agradable que le permite lidiar con los conflictos casi inevitables, y rastrea y propaga las eliminaciones correctamente. La aplicación / paquete gráfico se llama unison-gtk.
OwnCloud : el almacenamiento en la nube se ejecuta en su propio servidor. Necesitarás una máquina para dejar. Requiere una cantidad razonable de configuración. Ejecuta un servidor web Apache 2 completo y una base de datos SqlLite o MySQL en el servidor. Funciona de manera similar a Dropbox con un cliente de escritorio, pero el servidor está bajo su control. editar: OwnCloud recientemente ha experimentado algunos cambios en la forma en que se ejecuta el proyecto, y ahora tiene una nueva fuente de código abierto (es decir, no hay edición de 'empresa' de código cerrado) bajo el disfraz de NextCloud , (vea esta entrevista de YouTube con el desarrollador original de OwnCloud para más detalles).
SparkleShare : usa git para mantener los archivos sincronizados. Según la página de inicio: bueno para muchos archivos más pequeños, no es bueno para muchos archivos grandes como música o colección de fotos.
Seafile : proporciona un componente de servidor que puede instalar en una máquina local. Seafile utiliza un modelo de datos similar a git para rastrear cambios. Proporciona clientes de sincronización para computadoras de escritorio, tabletas y teléfonos inteligentes. Se puede encontrar una publicación de blog que describe la configuración en http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/
Osync - "... herramienta bidireccional de sincronización de archivos escrita en bash y basada en rsync. Funciona en directorios locales y / o remotos a través de túneles ssh. Está dirigida principalmente para ser lanzada como tarea cron" (texto del sitio web)
PowerFolder : proyecto GPL v2 basado en Java. El sitio web principal impulsa las ofertas comerciales, por lo que no está claro cómo usar el archivo .jar proporcionado.
Rsync : rápido y efectivo, y ha existido durante décadas, sin embargo, no mantiene un historial, por lo que debe elegir una dirección para decidir si un archivo es nuevo o eliminado. Las herramientas gráficas están disponibles, como gwRsync .
Lsyncd : monitorea carpetas / archivos para activar la replicación rsync
dvcs-autosync : escrito en python, usa git para almacenar y compartir cambios entre máquinas y XMPP para comunicar los cambios.
git-annex - herramienta de línea de comando para desviar archivos, basada en git. Aquí hay un tutorial ilustrativo: http://git-annex.branchable.com/walkthrough/
Tonido - freeware. Proporciona una aplicación de escritorio que compartirá archivos con otros dispositivos. También proporcione ofertas comerciales en la nube y la computadora de conexión TonidoPlug.
Sincronización de BitTorrent (freeware): sincronización de archivos punto a punto basada en BitTorrent. No sé mucho sobre esto, ya que no lo usaré debido a que no es de código abierto y no confío en que mantenga mis datos dentro de mi LAN, no dude en editar esta respuesta con mejor información / experiencias reales.
SyncThing : desarrollado como una alternativa de código abierto para BitTorrent Sync. Actualmente carece de algunas de las funciones avanzadas de BitTorrent Sync, como los pares no confiables. Está en desarrollo activo.
Los servicios comerciales alojados como Dropbox, Ubuntu One, Google Drive, Apple iCloud son rápidos, baratos y convenientes, sin embargo, todos requieren confiar en una empresa con todos sus datos y necesitan una conexión a Internet razonablemente rápida.
Git / subversion : use un sistema de control de fuente directamente. Completamente manual y puede ser un enfoque poco complejo pero popular con algunos usuarios familiarizados con estos sistemas al usarlos como herramientas de programación.
CloudFS : sincronice todo un sistema de archivos, basado en tecnología de clúster
Montaje NFS: básicamente su hogar vive en una máquina y usted accede a través de la red, no es bueno para las computadoras portátiles que lleva consigo. Más información: http://www.linuxjournal.com/article/4880
Factores a considerar al tomar su decisión:
Servidor central: algunas soluciones requieren que una máquina esté encendida todo el tiempo (o al menos cuando necesita sincronizar) para que otras máquinas se sincronicen. Esta podría ser una de sus máquinas existentes, o una máquina separada como un NAS. Cuidado con el aumento de las facturas de energía.
Automático / Manual / Programado: la mejor manera de evitar tener que resolver conflictos en los que se cambia algo más que una máquina es tener un programa en cada máquina que esté atento a los cambios y se sincronice de inmediato, de esta manera reduce la oportunidad de terminar con múltiples versiones. Con los procesos manuales, siempre debe recordar ejecutar la sincronización.
Acceso remoto: si desea sincronizar lejos de su LAN (también conocido como hogar), piense en las implicaciones de seguridad de esto.
Seguridad: sus datos dejan su red encriptada o no, cuán segura es la transferencia entre máquinas. ¿Qué sucede si alguien captura sus datos en movimiento y luego se descubre que el cifrado tiene fallas? ¿Quién controla el servidor que mantiene sus datos? ¿Los datos están cifrados? ¿Puede confiar en terceros? ¿Tienes que hacer agujeros en tu enrutador para obtener acceso remoto? ¿Cuánto tiempo permanecen los archivos 'eliminados' y los metadatos relacionados en los dispositivos sincronizados y en el servidor central? ¿Estás sincronizando entre almacenamiento cifrado y no cifrado?
Mover carpetas grandes: todas las soluciones que he probado tienen el problema de que cuando mueve / cambia el nombre de un archivo o carpeta, la sincronización no comprende esto y lo carga nuevamente como nuevo y luego elimina la copia anterior. Por favor, ayude marcando las soluciones anteriores que sean capaces de lidiar con esto (sospecho que las soluciones basadas en git hacen lo que git no sufre debido a la dirección basada en contenido que usa, pero no lo sé con certeza ya que no tengo No los usé).
Capacidad de disco
Copias de seguridad: la sincronización no es una copia de seguridad. Elimine un archivo importante por error y muchos de los anteriores eliminarán alegremente todas sus otras copias. Recomiendo leer el artículo de Mat Honan sobre cómo ser hackeado para una buena explicación de lo que puede suceder si pones todos tus huevos digitales en una canasta digital, por así decirlo.
Recomiendo no sincronizar toda la carpeta de inicio, sino elegir carpetas específicas para sincronizar como
Documents/
,Pictures/
etc. Esto evitará el dolor de verse obligado a lidiar con los problemas de velocidad / rendimiento / espacio en disco de sincronizar automáticamente todo. También evita tener que mantener listas de exclusión.A medida que continúe intentando encontrar algo que me funcione personalmente, intentaré mantener esta respuesta actualizada con información útil. He agregado la información de todas las otras respuestas en una respuesta completa.
Referencias
piratería / todo /
fuente
Unison podría ser un buen candidato:
Ya hace sincronizaciones bidireccionales. Ver actualización a continuación.
Aprendí que hay muy pocas cosas que rsync no puede hacer, y probablemente puede proporcionar una solución igual o mejor, pero tendrá que esperar a que un experto en rsync aparezca para encontrar esa solución.
Actualización: Sí, Unison puede sincronizar más de 2 máquinas. De su manual de usuario :
fuente
¿Qué tal si coloca sus archivos en un sistema de control de versiones como SubVersion o git?
No versiono todo mi directorio de inicio, sino solo unos pocos subdirectores con algunas cosas importantes. Pero estoy pensando en convertirme a git, ya que parece ser mejor para este tipo de trabajo. ( una búsqueda rápida lo enviará en la dirección correcta ).
Buena suerte
Actualización : Un buen efecto secundario con git es que es fácil tener archivos específicos de la computadora, ya que solo necesitas tener una rama para esa computadora (y en git obtienes eso por defecto). Por lo tanto, no necesita tener exactamente los mismos archivos en toda la computadora, solo deben ser similares y tener una rama "principal" común con las cosas que desea en todas las diferentes computadoras.
fuente
Su principal problema al intentar hacer esto es decidir cómo combinar cambios, propagar eliminaciones y resolver conflictos. Esto es difícil de hacer de una manera completamente automatizada, especialmente si tiene una configuración de computadora 3 utilizada por varias personas.
Si separas a los usuarios, las cosas se vuelven mucho más simples. Debido a que un usuario no puede estar en dos lugares a la vez (y, por lo tanto, generar conflictos), puede configurar un trabajo rsync para que se ejecute al iniciar sesión para "obtener cambios" y cerrar sesión para "enviar cambios" ... a una de sus computadoras que sería el maestro ... así que a este nivel de granularidad estarías sincronizando / home / myuser cada vez en lugar de todo / home /. Un refinamiento adicional (en el caso de personas que no se desconectan) sería ejecutar el script push después de un corto período de inactividad.
Hay muchas otras posibles soluciones, pero ninguna que resuelva mágicamente este problema, que yo sepa. Probablemente, el primer paso es pensar en cómo usa las máquinas y elaborar una política de sincronización que se adapte al comportamiento de su usuario.
fuente
Creo que puede lograr lo que quiere mejor si NFS monta una carpeta de inicio común. Echa un vistazo a este artículo http://www.linuxjournal.com/article/4880
fuente
Esto no proporcionará por completo una solución, pero le dará un comienzo:
Configure un trabajo cron de vez en cuando para sincronizar los archivos. Yo uso un comando como el siguiente:
Esto usará rsync para copiar solo los cambios necesarios, no volver a copiar todo cada vez que se ejecute el comando.
--stats y --progress son opcionales y probablemente deberían excluirse de sus scripts
Los contenidos de mi archivo rsync_backup_excludes.conf son:
fuente
Echa un vistazo a lsyncd
fuente
Echa un vistazo a dropbox http://www.getdropbox.com/ Multiplataforma Win / Linux / Mac
fuente
Montar
/home
de una computadora a las otras dos. Automount funciona bastante bien para esto.fuente
Ubuntu One podría ser lo que estás buscando. Desafortunadamente, todavía está en fase beta, y no tengo experiencia con él, así que no estoy seguro de si funcionaría para usted.
fuente
Si también desea sincronizar configuraciones, las herramientas mencionadas anteriormente son totalmente inútiles: las configuraciones a menudo se cambian y muchos archivos de registro generarán conflictos para que no se puedan fusionar.
Mi decepción es simple y estúpida :) Tengo una estación de trabajo Master, y todos los archivos de "~" se copian a la segunda "Slave". En el momento en que me doy cuenta de que necesito modificar algo, lo hago en Master, y Slave detecta estos cambios en la sincronización.
Además, algunos scripts de bash deberían ejecutarse de manera diferente en estas máquinas, así que edité mi /etc/bash.bashrc:
Ahora, los scripts saben a qué host sirven;)
fuente
Prueba dvcs-autosync .
Esto se basa en git, usa XMPP para notificar a los clientes conectados de los cambios de archivo y reacciona ante los eventos de cambio de archivo a través de cambios de inodo. Por lo tanto, siempre se informa inmediatamente después del cambio de archivo, en caso de conflictos, se basa en los métodos probados de git.
Lo he estado usando durante un tiempo como reemplazo de Dropbox a través de claves públicas SSH y realmente hace el trabajo.
fuente
PowerFolder : archivos de sincronización, carpetas de sincronización, almacenamiento remoto, copia de seguridad y uso compartido de archivos privados. Sincronice la PC del hogar y la oficina, comparta fotos de las vacaciones o trabajen juntos en documentos. La tecnología segura peer-to-peer de PowerFolder funciona a través de Internet o LAN.
fuente
Las soluciones alternativas que consideraría:
Dropbox
Principales inconvenientes: no es gratuito para ninguna cantidad razonable de datos. De lo contrario, funciona perfectamente en mi humilde opinión
Un servidor NAS. Coloque sus archivos en un servidor NAS, se volvieron razonablemente asequibles últimamente (desde 150 $ más o menos) y uno bueno no consume mucha energía. Sin problemas de sincronización nunca.
Principal inconveniente: más lento que una copia local
fuente
Utilizo SyncTwoFolders para Mac y Syncback para PC: el primero para mis tres Mac en casa (computadora portátil incluida) y el segundo para mi PC en el trabajo. Ambos programas tienen varias opciones de respaldo y sincronización, lo que hace que sea muy fácil una vez que se han configurado los preajustes. ¡Pan comido! Estoy seguro de que hay otras versiones de software similares disponibles para Linux y Ubuntu.
fuente
Puede usar un script de sincronización como osync que puede propagar archivos eliminados y actualizar solo los modificados. http://www.netpower.fr/osync osync está basado en rsync pero puede manejar muchos escenarios de sincronización entre carpetas locales o remotas a través de ssh.
fuente