¿Cómo puedo sincronizar mi carpeta de inicio a través de la red e Internet?

8

Utilizo mi computadora portátil con Ubuntu-desktop para hacer todo mi trabajo, pero también tengo una computadora de escritorio de gama baja en mi oficina sentada allí. Decidí instalar el servidor Ubuntu en él y usarlo para duplicar la carpeta de inicio de toda mi laptop, para facilitar las cosas cuando decida formatear el disco duro de mi laptop.

Siempre que estoy en el trabajo, ambas máquinas están conectadas a una red y se comunican fácilmente (y de alta velocidad) a través de ssh. Cuando no estoy en el trabajo, todavía se puede acceder al escritorio a través de ssh. Idealmente, la sincronización se realizaría automáticamente en segundo plano, cada vez que cambie algo. Solo tiene que ser de una manera: los cambios que hago en la computadora portátil deben sincronizarse con el servidor, pero no es necesario lo inverso.

Sé que hay software para esto, mi pregunta es: ¿Qué software puedo usar para lograr los objetivos anteriores y también aprovechar al máximo las velocidades de la red local cuando estoy en el trabajo? Como a veces me ocuparé de archivos grandes, el proceso de sincronización debe darse cuenta de que las dos computadoras comparten una red local, y luego aprovechar eso (en lugar de siempre sincronizar a través de Internet).

Para ser claros, la sincronización a través de la red es realmente más importante para mí aquí que la sincronización a través de Internet. Idealmente, el software comprobaría si el primero está disponible y, si no, probaría el último; pero si eso no es posible, el primer caso es mi prioridad.

Espero que esto no sea demasiado largo. Gracias por adelantado.

Malabarba
fuente

Respuestas:

11

Si solo puede conectarse a su servidor de oficina a través de SSH, entonces su mejor opción es usar rsync : puede usar SSH como protocolo de transporte y usa un algoritmo inteligente para acelerar la transferencia de archivos grandes, enviando solo los bloques modificados.

Como solo necesita sincronización unidireccional, configure la autenticación SSH sin contraseña desde su computadora portátil al servidor de la oficina, y luego puede comenzar con un comando tan simple como:

rsync -e ssh -a $HOME/ myuser@officeserv:

agregando --includey --excludeopciones para refinar la lista de archivos / directorio que desea sincronizar. Por ejemplo, transferir la configuración del programa ("archivos de puntos") puede ser arriesgado si las dos computadoras no ejecutan el mismo sistema operativo (misma versión). Mi sugerencia es comenzar excluyendo todos los "archivos de puntos" (por lo tanto, usar --exclude="$HOME/.[a-z]*") y luego agregar selectivamente los directorios de configuración de los programas que se pueden compartir de forma segura (esto se debe ver programa por programa). Además, la memoria caché del navegador web y $HOME/.cachesiempre se puede excluir. Consulte la sección "REGLAS DE FILTRO" en la rsyncpágina del manual para una discusión detallada de la sintaxis de reglas de inclusión / exclusión.

Sin embargo, rsyncno tiene un modo de "operaciones continuas", por lo que deberá ejecutarlo periódicamente desde su crontab .

Riccardo Murri
fuente
Esto suena bien. Lo probaré tan pronto como instale el servidor. Una pregunta: ¿el protocolo SSH usa automáticamente la conexión más corta al servidor? Quiero decir: ¿se conectará a través de la red local si tanto el cliente como el servidor están en la red de la oficina, o siempre intentará conexiones a Internet?
Malabarba
Por cierto, tienes razón sobre el caché del navegador. ¿Alguna otra sugerencia de carpetas que deba excluir? Mi objetivo es sincronizar todos los archivos personales, perfiles, configuraciones y archivos de configuración.
Malabarba
1
@Bruce Connor: SSH se conectará a un host remoto utilizando el algoritmo de enrutamiento IP habitual. Texto de respuesta actualizado con sugerencia para una lista de exclusión inicial.
Riccardo Murri
Gracias. Para evitar conflictos, podría sincronizar la carpeta de inicio de mi computadora portátil con una subcarpeta en el servidor (y no con la carpeta de inicio real del servidor).
Malabarba
@riccardomurri por "autenticación SSH sin contraseña", ¿quiere decir basado en un archivo de clave? ¿o algo mas?
david.libremone
3

Sugeriría usar rdiff-backup sobre rsync. Es prácticamente solo rsync ++.

A diferencia de rsync, que solo un espejo 1-1 que transfiere diferencias, rsync tiene un mecanismo de historial. Entonces, si cometió un error y eliminó algo importante, puede volver a hace una semana y recuperarlo.

En el "servidor" de ubuntu solo necesita tener ssh ejecutándose para apt-get install rdiff-backup.

en el cliente Lo ejecutaría manualmente ... o mediante un crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Si abre su puerto 22 a Internet ... debería poder ejecutar el mismo script de cualquier manera ... solo haga que su nombre de host se resuelva localmente en su IP local.

es decir. backupSrv.penguins.org se resolvería en la IP externa de. 2.3.4.5 pero dentro de su lan: a 192.168.1.253

csgeek
fuente
Creo que a tu script le faltan algunos saltos de línea.
Malabarba
2

No hay una solución completa y preempaquetada para su problema que yo sepa. Probablemente tengas que escribir un pequeño guión para eso.

La sincronización en sí podría hacerse rsync, como ya lo explicó Riccardo Murri. Rsync solo transfiere las partes modificadas de los archivos, por lo que es perfecto para esta tarea.

Puede usar NetworkManagerDispatcher para ejecutar scripts en la conexión / desconexión de una interfaz de red. Entonces, podría escribir un script que verifique si está en la red correcta y luego llame a rsync. De esta manera, sus datos se sincronizarán automáticamente cuando se conecte a la red de su empresa.

Para sincronizar periódicamente sus datos, puede usar cron, como ya se mencionó.

También debe considerar la seguridad al usar rsync a través de ssh. Para sincronizar sin intervención del usuario, necesitará un archivo de claves sin contraseña. Cualquiera que tenga este archivo de claves puede obtener acceso al servidor al que pertenece. Recomiendo encarecidamente cifrar su carpeta de inicio para proteger los datos en el portátil y en el servidor.

Científico loco
fuente
1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox debería ser bueno en su caso, funciona en Linux, Mac, Windows, fácil configuración y administración.

Descargar DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Lea detenidamente: admite la sincronización a través de enlaces simbólicos y si hay ciertos documentos, gráficos y hojas de cálculo que debe sincronizar, aún puede mantener una copia de ellos en Dropbox o guardarlos permanentemente en la ubicación de Dropbox para evitar la molestia.

rihatum
fuente
No creo que pueda configurar su Dropbox para que sea su carpeta de inicio (al menos todavía no).
Mateo
superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders tener una lectura a través de - que hace de soporte de sincronización a través de enlaces simbólicos y si hay cierta doc, gráficos, hojas de cálculo le tiene que sincronizar: aún puede mantener una copia de ellos en Dropbox o guardarlos permanentemente en la ubicación de Dropbox para evitar problemas.
rihatum
1
Gracias, pero ya estoy usando Dropbox en todas las plataformas. Lo que estoy buscando aquí es algo que me permite sincronizar muchos GB de archivos sin tarifas y aprovechar las redes locales.
Malabarba
1

Prueba Sparkleshare: http://sparkleshare.org/

Hay un cliente en el repositorio de Ubuntu y tiene instrucciones sobre cómo configurar un servidor en su sitio web.

usuario60876
fuente
parece un gran programa, la solución menos hacky; La versión 1.0 fue lanzada el mes pasado.
Abe
0

La mejor solución para 2015 debería ser Seafile: https://www.seafile.com/en/download/

Los desarrolladores de Sparkleshare dicen que su herramienta es buena para muchos archivos pequeños y especialmente de texto, pero no tan buena para archivos más grandes y binarios.

Y en términos de rendimiento, supera a Sparkleshare y Owncloud.

Además, es mucho menos hambriento de recursos que OwnCloud, por lo que una instancia puede ejecutarse en un Banana o Raspberry sin problemas como una computadora que funciona las 24 horas, los 7 días de la semana. (Sin embargo, recomendaría un Banana Pi, debido a la red Gigabit y la interfaz SATA, fue una buena opción para un servidor de archivos, al menos para mí).

Sincronizo mis carpetas de inicio con tres computadoras. Excluyo los archivos de puntos, se manejan a través de un repositorio de git y algo de lógica porque, como mencionó Ricardo, hay algunos problemas al compartir archivos de puntos y otras configuraciones en diferentes computadoras, incluso cuando es el mismo sistema operativo y versión. Piense en los monitores.xml, por ejemplo, o en un diseño diferente para un IDE en su computadora portátil y en su escritorio multipantalla, o un programa abierto en ambas computadoras.

Además de la sincronización, hago una copia de seguridad de estos datos a través de borgbackup. Es un nuevo programa de copia de seguridad muy bueno, que deduplica, es muy rápido después de la copia de seguridad inicial y tiene muchas características que carecen de muchas herramientas.

Es la configuración perfecta para mí.

mpathy
fuente