2009-08-28 18:10:40 +0000 2009-08-28 18:10:40 +0000
121
121

¿Cómo sincronizar la carpeta de inicio entre varios ordenadores?

Tengo tres ordenadores en casa, y me gustaría tener el árbol de carpetas /home/ sincronizado entre los tres.
Cualquier archivo/carpeta (excepto los ocultos) que se modifique/añada/elimine en uno de los tres ordenadores se actualiza en los otros dos.

¿Es suficiente rsync para hacer esto? y ¿cómo?

答案 (14)

97
97
97
2014-01-18 17:52:37 +0000

Aquí hay una lista de cosas que potencialmente podrían resolver este problema, cada una equilibra las compensaciones que tienes que hacer de manera diferente, así que tendrás que hacer tus propias elecciones y probar las cosas por ti mismo:

  • Unison - como han mencionado otros, esto se ejecuta manualmente, pero es muy rápido, fiable y eficaz. Requiere que las dos máquinas que se sincronizan estén encendidas al mismo tiempo. Tiene una bonita interfaz de usuario que permite lidiar con los casi inevitables conflictos, y rastrea y propaga las eliminaciones correctamente. La aplicación/paquete gráfico se llama unison-gtk.

  • OwnCloud - Almacenamiento en la nube ejecutado en tu propio servidor. Necesitarás una máquina en la que dejarlo. 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 ha pasado recientemente por algunos cambios en la forma en que se ejecuta el proyecto, y ahora tiene una nueva fuente totalmente abierta (es decir, no hay código cerrado ‘empresa’ edición) bajo la apariencia de NextCloud , (ver esta entrevista en youtube con el desarrollador original de OwnCloud para más detalles).

  • SparkleShare - utiliza git para mantener los archivos sincronizados. Según la página de inicio: bueno para muchos archivos pequeños, no es bueno para muchos archivos grandes como la música o la colección de fotos.

  • Seafile - Proporciona un componente de servidor que se puede instalar en una máquina local. Seafile utiliza un modelo de datos similar a git para el seguimiento de los cambios. Proporciona clientes de sincronización para ordenadores de sobremesa, tabletas y teléfonos inteligentes. Una entrada del blog que describe la configuración se puede encontrar en http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - “… herramienta de sincronización de archivos bidireccional escrita en bash y basada en rsync. Funciona en directorios locales y/o remotos a través de túneles ssh. Está orientado principalmente a ser lanzado como tarea cron” (texto del sitio web)

  • PowerFolder - proyecto GPL v2 basado en java. El sitio web principal promueve ofertas comerciales, por lo que no está claro cómo utilizar el archivo .jar proporcionado.

  • Rsync - rápido y efectivo y ha existido durante décadas, sin embargo no mantiene un historial por lo que tienes que elegir una dirección para decidir si un archivo es nuevo o eliminado. Existen herramientas gráficas como gwRsync .

  • Lsyncd - monitoriza carpetas/archivos para activar la replicación rsync

  • dvcs-autosync - escrito en python, utiliza git para almacenar y compartir los cambios entre máquinas, y XMPP para comunicar los cambios.

  • git-annex - Herramienta de línea de comandos para mover archivos, basada en git. Hay una guía ilustrativa aquí: http://git-annex.branchable.com/walkthrough/

  • Tonido - freeware. Proporciona una aplicación de escritorio que compartirá archivos con otros dispositivos. También ofrece ofertas comerciales en la nube, y el ordenador de enchufe TonidoPlug.

  • BitTorrent Sync (freeware) - sincronización de archivos peer-to-peer basada en BitTorrent. No sé mucho acerca de esto ya que no lo voy a usar debido a que no es de código abierto y no confío en que mantenga mis datos dentro de mi LAN, siéntase libre de editar esta respuesta con mejor información / experiencias reales.

  • SyncThing - Desarrollado como una alternativa de código abierto a BitTorrent Sync. Actualmente carece de algunas de las características 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 todos rápidos, baratos y convenientes, sin embargo, todos ellos requieren confiar a una empresa todos sus datos, y necesitan una conexión a Internet razonablemente rápida.

  • Git / subversion - Usar un sistema de control de fuentes directamente. Completamente manual y puede ser un poco complejo, pero es un enfoque popular entre algunos usuarios familiarizados con estos sistemas por haberlos utilizado como herramientas de programación.

  • CloudFS - Sincronizar todo un sistema de archivos, basado en tecnología de cluster

  • Montaje NFS - básicamente tu casa vive en una máquina y accedes a ella a través de la red, no sirve para los portátiles que te llevas. Más información: http://www.linuxjournal.com/article/4880

Factores a tener en cuenta a la hora de tomar su decisión:

  • Servidor central - algunas soluciones requieren que una máquina esté encendida todo el tiempo (o al menos cuando necesite sincronizar) para que otras máquinas se sincronicen con ella. Puede tratarse de una de sus máquinas actuales o de una máquina independiente, como un NAS. Tenga cuidado con el aumento de las facturas de energía.

  • Automático / Manual / Programado - La mejor manera de evitar tener que resolver conflictos cuando algo se cambia en más de una máquina es tener un programa en cada máquina que vigile los cambios y los sincronice inmediatamente, de esta manera se reduce la oportunidad de terminar con múltiples versiones. Con los procesos manuales siempre hay que acordarse de ejecutar la sincronización.

  • Acceso remoto: ¿desea sincronizar fuera de su LAN (es decir, de su casa)?

  • Seguridad: ¿salen sus datos de la red encriptados o no, cómo de segura es la transferencia entre máquinas? ¿Qué pasa si alguien captura tus datos en movimiento y más tarde se descubre que el cifrado tiene fallos? ¿Quién controla el servidor que guarda tus datos, están encriptados, puedes confiar en terceros? ¿Hay que hacer agujeros en el router para tener acceso remoto? ¿Cuánto tiempo permanecen los archivos “borrados” y los metadatos relacionados en los dispositivos sincronizados y en el servidor central? ¿Sincronizas entre el almacenamiento encriptado y el no encriptado?

  • Mover carpetas grandes - todas las soluciones que he probado tienen el problema de que cuando mueves / renombras un archivo o carpeta, la sincronización no lo entiende y lo carga de nuevo como nuevo y luego borra la copia antigua. Por favor, ayuda marcando cualquier solución de arriba que sea capaz de lidiar con esto (sospecho que las soluciones basadas en git lo hacen ya que git no sufre de esto debido al direccionamiento basado en el contenido que utiliza, pero no lo sé con seguridad ya que no las he utilizado).

  • Capacidad del disco

  • Copias de seguridad - la sincronización no es una copia de seguridad. Elimine un archivo importante por error y muchos de los anteriores borrarán alegremente todas sus otras copias. Recomiendo la lectura del artículo de Mat Honan sobre el hackeo para conocer lo que puede ocurrir si se ponen todos los huevos en la misma cesta 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á la molestia de tener que lidiar con los problemas de velocidad/rendimiento/espacio en disco de la sincronización automática de todo. También evita tener que mantener listas de exclusión.

A medida que siga intentando encontrar algo que me funcione personalmente, intentaré mantener esta respuesta actualizada con información útil. He reunido la información de todas las demás respuestas en una respuesta completa.

Referencias:

  • LinuxFormat - Febrero 2014 LXF180 p31, “Hosted Storage Roundup”

hacking/all/

19
19
19
2009-08-29 22:07:36 +0000

¿Qué tal si pones tus archivos en un sistema de control de versiones como SubVersion o git?

Yo no versiono todo mi dir de casa, sino sólo un puñado de subdirectorios 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 le 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 para un ordenador, ya que sólo necesitas tener una rama para ese ordenador (y en git la tienes por defecto). Así que no necesitas tener exactamente los mismos archivos en todos los ordenadores, sólo tienen que ser similares, y tener una rama “principal” común con las cosas que quieres en todos los diferentes ordenadores.

6
6
6
2009-08-29 09:43:00 +0000

Tu principal problema al intentar hacer esto es decidir cómo fusionar los cambios, propagar los borrados y resolver los conflictos. Esto es difícil de hacer de forma completamente automatizada, especialmente si tienes una configuración de 3 ordenadores utilizados por varias personas.

Si se separan los usuarios las cosas se simplifican mucho. Debido a que un usuario no puede estar en dos lugares a la vez (y por lo tanto generar conflictos) se podría configurar un trabajo rsync para ejecutar en el inicio de sesión para “obtener los cambios” y el cierre de sesión para “empujar los cambios” … a uno de sus ordenadores que sería el maestro … por lo que en este nivel de granularidad se estaría sincronizando /home/miusuario cada vez en lugar de todo /home/. Un refinamiento añadido (en caso de que la gente no cierre la sesión) sería ejecutar el script push después de un corto período de inactividad.

Hay muchas otras soluciones potenciales, pero ninguna que resuelva mágicamente este problema hasta donde yo sé. El primer paso es, probablemente, pensar en cómo se utilizan las máquinas y elaborar una política de sincronización que se adapte al comportamiento de los usuarios.

5
5
5
2010-06-11 20:05:12 +0000

Creo que puedes conseguir mejor lo que quieres montando por NFS una carpeta de inicio común. Mira este artículo http://www.linuxjournal.com/article/4880

4
4
4
2010-06-11 21:20:04 +0000

Lsyncd vigila una interfaz de monitorización de eventos de árboles de directorio locales (inotify o fsevents). Agrega y combina los eventos durante unos segundos y luego genera uno (o más) proceso(s) para sincronizar los cambios. Por defecto es rsync. Lsyncd es, por lo tanto, una solución ligera de réplica en vivo que es comparativamente fácil de instalar y que no requiere nuevos sistemas de archivos o dispositivos de bloque y que no obstaculiza el rendimiento del sistema de archivos local.

Rsync+ssh es una configuración de acción avanzada que utiliza un SSH para actuar los movimientos de archivos y directorios directamente en el objetivo en lugar de retransmitir el destino del movimiento a través del cable.

Se puede lograr una personalización fina a través del archivo de configuración. Las configuraciones de acción personalizadas pueden incluso escribirse desde cero en capas en cascada que van desde scripts de shell hasta código escrito en el lenguaje Lua.

4
4
4
2009-08-28 18:34:44 +0000

Esto no proporcionará una solución completa, pero le dará un comienzo:

Configure una tarea cron cada cierto tiempo para rsync los archivos. Yo uso un comando como el siguiente:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

Esto utilizará rsync para copiar sólo los cambios necesarios, no para volver a copiar todo cada vez que se ejecute el comando.

–stats y –progress son opcionales y probablemente deberían ser excluidos de sus scripts

el contenido de mi archivo rsync_backup_excludes.conf es

dev/*
proc/*
lost+found/*
mnt/*
sys/*
2
2
2
2011-08-24 23:57:12 +0000

Monte /home de un ordenador a los otros dos. Automount funciona bastante bien para esto.

2
2
2
2009-08-28 18:41:17 +0000

Echa un vistazo a dropbox http://www.getdropbox.com/ Plataforma cruzada Win / Linux / Mac

1
1
1
2009-08-29 11:11:32 +0000

Ubuntu One podría ser lo que estás buscando. Desgraciadamente aún está en fase beta y no tengo experiencia con él, así que no estoy seguro de que te sirva.

1
1
1
2009-08-29 21:38:15 +0000

Si también quieres sincronizar las configuraciones - las herramientas mencionadas anteriormente son totalmente inútiles: las configuraciones se cambian a menudo, y muchos archivos de registro harán conflictos por lo que no pueden ser fusionados.
Mi engaño es simple, y estúpido :) Tengo una estación de trabajo maestra, y todos los archivos de “~” se copian a la segunda estación “esclava”. En el momento en que me doy cuenta de que necesito modificar algo, lo hago en el Maestro, y el Esclavo capta estos cambios en la sincronización.

Además, algunos scripts bash deben ejecutarse de forma diferente en estas máquinas, así que edité mi /etc/bash.bashrc:

export OOHOST=Master

Ahora, los scripts saben a qué host están sirviendo ;)

1
1
1
2012-03-22 11:47:19 +0000

Prueba dvcs-autosync .

Está basado en git, utiliza XMPP para notificar a los clientes conectados los cambios en los archivos y reacciona a los eventos de cambio de archivo a través de los cambios de inodo. Así que siempre se informa justo después del cambio de archivo, en caso de conflictos se basa en los métodos probados de git.

Lo he estado utilizando durante un tiempo como un reemplazo de Dropbox a través de claves públicas SSH y realmente hace el trabajo.

0
0
0
2011-03-02 14:02:40 +0000

Las soluciones que yo consideraría:

  • Dropbox.
    Principales inconvenientes: no es gratuito para una cantidad razonable de datos. Por lo demás, funciona perfectamente, en mi opinión

  • Un servidor NAS. Pon tus archivos en un servidor NAS, últimamente son razonablemente asequibles (a partir de 150 $ más o menos) y uno bueno no consume mucha energía. No hay problemas de sincronización nunca.
    Principal inconveniente: es más lento que una copia local

0
0
0
2011-03-02 13:47:07 +0000

Yo utilizo SyncTwoFolders para Mac y Syncback para PC - el primero para mis tres macs en casa (incluido el portátil), y el segundo para mi PC en el trabajo. Ambos programas tienen varias opciones de copia de seguridad y sincronización, lo que hace que esto sea muy fácil una vez que se han configurado los ajustes previos. Muy fácil. Estoy seguro de que existen otras versiones de programas similares para Linux y Ubuntu.

0
0
0
2013-08-18 14:28:59 +0000

Puedes usar un script de sincronización como osync que puede propagar los archivos borrados y actualizar sólo 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.