Actualizado el 22 de Febrero del 2020 (Publicado el 10 de Abril del 2017)
776 visualizaciones desde el 10 de Abril del 2017
24,2 KB
3 paginas
Creado hace 20a (12/11/2004)
BULMA: ¿Sincronizar varios ordenadores o backups? unison
Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores | Bergantells Usuaris de GNU/Linux de Mallorca i
¿Sincronizar varios ordenadores o backups? unison (287 lectures)
Per Ricardo Galli Granada, gallir (http://mnm.uib.es/~gallir/)
Creat el 11/11/2004 18:34 modificat el 11/11/2004 18:34
Afegitons
Seguramente todos nos encontramos con el problema de querer sincronizar directorios de varios
ordenadores, y además que las modificaciones en uno de ellos se propague automáticamente a los
demás. Si te has dado cuenta de la restricción principal del rsync (hay un "maestro" y la
sincronziación es unidireccional), lo tuyo es el unison(1).
Unison(1) permite mantener actualizados árboles completos en el mismo ordenador (diferentes directorios) o en
ordenadores remotos (usando ssh u otros métodos). Además propaga las modificaciones en ambos sentidos. Así es
posible mantener sincronizados casi los ordenadores que querramos. Si no hay conflictos (i.e. el mismo fichero
modificado en ordenadores distintos y que es imposible hacerles un "merge"), todos tendrán las mismas copias.
Sincronización remota
El unison me soluciona perfectamente mi problema de tener sincronizado mi ordenador de escritorio de casa con
portátil (minime) y con el de mi despacho (pcgallir). En los ejemplo sinzcronizo el directorio "Proyectos" y
"Presentacions". La solución es muy sencilla, directorio a directorio y usando el ssh desde mi $HOME:
unison Proyectos ssh://minime/Proyectos
Es es equivalente a:
unison /home/gallir/Proyectos ssh://minime//home/gallir/Proyectos
Si no queremos que nos pregunte por cada opción, podemos hacer por ejemplo:
unison −auto −batch Proyectos ssh://minime/Proyectos
IMPORTANTE: El unison borra los ficheros eliminados en uno de los ordenadores que sincroniza, si queréis mantener
copia de los borrados, mirad la opción −backup en la documentación(2).
Perfiles
Con lo anterior es suficiente para sincronizar entre varios ordenadores, pero tiene algo aún más potente, los perfiles.
Con ello es posible crear un perfil para cada ordenador con el queramos sincronizar. Los perfiles se crean en
$HOME/.unison/nombre_perfil.prf. Por ejemplo, para sincronizar con minime tengo definido los siguiente:
$ cat ~/.unison/minime.prf
auto = true
batch = true
root = /home/gallir
root = ssh://minime
path = Proyectos
path = Presentacions
ignore = Path */.directory
ignore = Path */Olds
ignore = Name {olds,*~}
Ahora sólo hay que ejecutar:
1/3
BULMA: ¿Sincronizar varios ordenadores o backups? unison
unison minime
Supongo que véis claramente que se especifica dos veces root para indicar el origen y destino, y luego path las veces
que queráis. Los ignore ya os imagináis, es para no copiar ficheros o directorios completos. El unison trabaja con
expresiones regulares(3), permite especificar "Name" donde se toma en cuante sólo el nombre del fichero, Path para
especificar el nombre completo, o directamente regexp para especificar la expresión regular.
Abajo es muestro la salida de un sincronziación con el perfil anterior justo después de agregar un fichero
(novembre.sxw).
$ unison minime
Contacting server...
Looking for changes
Presentacions
Presentacions/PReina
...
Proyectos/Campos2004
Waiting for changes from server
Reconciling changes
local minime
new file −−−−> Proyectos/SaNostra/novembre.sxw
Propagating updates
UNISON started propagating changes at 17:59:51 on 11 Nov 2004
[BGN] Copying Proyectos/SaNostra/novembre.sxw
from /home/gallir
to //minime//home/gallir
[END] Copying Proyectos/SaNostra/novembre.sxw
UNISON finished propagating changes at 17:59:51 on 11 Nov 2004
Saving synchronizer state
Synchronization complete
Si os hacéis la pregunta ¿se pueden mantener sincronizados varios ordenadores en cadena? La respuesta es sí, sin
problemas, es "transitivo". Y seguramente también os preguntáis si usa un algoritmo como el rsync para minimizar las
transferencias de datos, pues sí.
Backups
Este es el caso más sencillo el unison, y muy útil para hacer esos backups tan habituales entre discos o particiones. Por
ejemplo:
unison /home/gallir /disk2/home/gallir
Seguramente no queréis que se hagan copias de algunos ficheros, o asegurar que siempre "manda" la versión del
original, también podéis crear perfiles para ello, por ejemplo:
$ cat ~/.unison/backup.prf
auto = true
batch = true
root = /home/gallir/
root = /disk2/home/gallir/
prefer = /home/gallir/
ignore = Path */.directory
ignore = Path */Olds
ignore = Name {olds,*~,tmp,temp,.*}
Automatizar en el crontab
Ahora sólo queda automatizarlo llamándolo desde el crontab. Por ejemplo:
31 6 * * * unison backup
0 7 * * * unison minime
2/3
BULMA: ¿Sincronizar varios ordenadores o backups? unison
En el caso del backup está claro que casi no hay mejora posible (además de redireccionar toda la salida a /dev/null, o
indicar la opción −silent del unison, pero es que todavía estoy controlando que funcione correctamente), pero en el
caso de sincronizar con el portátil... ¿qué pasa si no está conectado o está apagado? Pues muy fácil, para eso ya somos
unos manitas con los script en shell:
0 7 * * * if ping −c 1 minime; then unison minime; fi
Et voilà... y nunca más preguntes como se puede hacer para recuperar ficheros borrados en ext3 :−)
Lista de enlaces de este artículo:
1.
2.
3.
http://www.cis.upenn.edu/~bcpierce/unison/
http://www.cis.upenn.edu/~bcpierce/unison/download/stable/latest/unison−manual.h
http://www.cis.upenn.edu/~bcpierce/unison/download/stable/latest/unison−manual.h
E−mail del autor: gallir _ARROBA_ uib.es
Podrás encontrar este artículo e información adicional en: http://bulma.net/body.phtml?nIdNoticia=2113
3/3
Comentarios de: BULMA: ¿Sincronizar varios ordenadores o backups? unison (0)
No hay comentarios