Sincronización unidireccional / copia de seguridad con Unison

13

Estoy usando la herramienta de sincronización Unison con mis máquinas Mac OSX y Ubuntu 9.10 para hacer una copia de seguridad de mi música de Mac a Ubuntu. La cuestión es que quiero que mi Mac sea la fuente y Ubuntu sea el objetivo para que la máquina Ubuntu sea una copia exacta de la carpeta Música en la Mac en todo momento, pero si elimino algo de Ubuntu, ganará ' No se elimine en la Mac. He mirado los documentos, pero en este momento está pasando por alto.

roflwaffle
fuente

Respuestas:

1

Una herramienta mejor para el trabajo podría ser rsync (necesitará instalarlo en ambas computadoras). Lo uso para mantener sincronizada la carpeta de música de mi computadora portátil con un servidor de archivos de inicio, que es bastante similar a su situación. rsync se especializa en mantener una copia espejo actualizada.

Una línea de comando como esta podría ser útil (suponiendo que la ejecute desde Ubuntu):

rsync -a --delete-before myMacMachineName:/MyMusic/ /mymusic/

Es bastante fácil cambiar la línea anterior si desea ejecutarla desde su Mac y empujarla a la computadora Ubuntu en lugar de tirar.

TheToasterThatCould
fuente
33

Uso unison -force:

Manual:

La inclusión de la preferencia -force roothace que Unison resuelva todas las diferencias (incluso los cambios no conflictivos) a favor de la raíz. Esto efectivamente cambia a Unison de un sincronizador a una utilidad de duplicación. También puede especificar -force newer(o -force older) para obligar a Unison a elegir el archivo con el modtime posterior (anterior). En este caso, la -timespreferencia también debe estar habilitada. Esta preferencia es anulada por la forcepartialpreferencia. ¡Esta preferencia debe usarse solo si está seguro de saber lo que está haciendo!

Por ejemplo (usando el modo socket). Inicie un escucha al unísono en el directorio que desea que sea un espejo de otra cosa. Apunte a ese socket en la llamada de cliente al unísono. La fuerza hace que los cambios sean TODOS DE UNA MANERA desde la raíz dada.

cd /target/mirror/directory
unison -socket 123456 &

En otro lugar o en el mismo host:

unison -silent -force /home/test/thing2 /home/test/thing2 socket://somehost:123456/
Rich K.
fuente
1
La sintaxis para el archivo de perfil es especificar la ruta al directorio raíz para la variable de fuerza. Es decir,force = /home/me/mysynchdir
Daniel
2

Si bien la respuesta de TheToasterThatCould 'funcionará', tenga en cuenta que no respaldará correctamente el sistema de archivos Mac "Resource Forks"

Mientras que la versión para Mac OSX de rsync es consciente de la falta de recursos, las versiones para Linux de rsync no lo son (y probablemente nunca lo serán, porque la versión de Apple de rsync es específica de OSX y no presenta esos recursos para rsync en el otro extremo) una forma que puede manejar una versión de rsync que no sea OSX). El resultado de esto es que las bifurcaciones de recursos no se sincronizarán entre las máquinas Mac y Linux.

Ciertas aplicaciones de Mac utilizan horquillas de recursos para almacenar datos relacionados con el archivo en particular. Si está seguro de que sus archivos que está sincronizando no necesitan o usan horquillas de recursos, entonces debería estar bien usar rsync.

Si desea sincronizar los tenedores de recursos, entonces el unísono será el mejor enfoque porque (según los documentos de unísono) puede sincronizar los tenedores de recursos.

todo natural
fuente
0

FreeFileSync es una aplicación de código abierto que es capaz de reflejar un directorio. Puede ejecutarse para sincronización de una o dos vías o en modo "contribuir". Puedo decir que puede hacer el trabajo de Synctoy de Microsoft. FreeFileSync se puede usar libremente en Mac OS X, Linux y Windows.

Teo
fuente
-1

Actualmente, unison /home/test/thing2 /home/test/thing2 socket://somehost:123456/ -silent -batchfuncionará, donde -batchindica que no hay preguntas en absoluto

Jin
fuente