Pregunta:
Estoy intentando configurar la sincronización bidireccional o bidireccional con rsync. En mi caso, solo necesito eliminar los archivos cuando sincronizo de B a A. Entonces, estaba pensando en ejecutar rsync dos veces de la siguiente manera:
rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/
Este problema con esta solución es que cuando ejecuto rsync (B-> A), que sería justo después de ejecutar rsync (AB), también se eliminará cualquier archivo nuevo que se cree entre la sincronización.
¿Hay alguna forma en que pueda especificar una marca de tiempo como condición para que solo elimine el archivo si se creó antes de esta fecha / hora?
Actualizado:
Entiendo que hay una solución al unísono, pero es necesario instalar el problema con unísono en ambos extremos. Estoy sincronizando con un servidor remoto y no puedo instalar unísono en el extremo remoto.
Respuesta:
rsync
es la herramienta incorrecta para esta tarea, exactamente por las razones que ha encontrado. En su lugar, considere usar unison
:
unison A/ B/
La primera vez que ejecute esto, identificará los archivos que están únicamente en A
y los que están únicamente en B
También marcará los que están en ambos lugares y le pedirá que identifique cuál se va a sobrescribir.
La próxima vez que ejecute esto, copiará los cambios de A
a B
y también de B
a A
, marcando cualquier archivo que haya sido modificado en ambos lugares para resolución manual.
mkdir A B
date > A/date
who > B/who
unison A/ B/
# Lots of output from unison, showing synchronisation
ls A
date who
ls B
date who
date > A/date
unison A/ B/
# Lots of output from unison, showing synchronisation
Hay una serie de indicadores útiles disponibles al unison
que ayudan a automatizar el proceso al definir suposiciones y, por lo tanto, reducir la cantidad de preguntas que se le hacen durante la sincronización.