Estudié detenidamente la página de manual de rsync, así como varias preguntas relacionadas aquí en serverfault. He jugado con las opciones -R, -L y -l, pero no tuve suerte.
Aquí está la pregunta:al enviar un directorio de local a remoto, ¿hay alguna opción (o combinación de opciones) que reubique los enlaces simbólicos en relación con el directorio local para que se vuelvan relativos al directorio de destino en la máquina remota?
Aquí hay un ejemplo mínimo de lo que quiero enviar:
directorio local: /home/bob/foo
/home/bob/foo/a --> /home/bob/foo/bar
/home/bob/foo/bar
y así es como me gustaría que se materializara en
directorio remoto: /u/apps/foo
/u/apps/foo/a --> /u/apps/foo/bar
/u/apps/foo/bar
Por ejemplo, rsync -az /home/bob/foo/ remote:/u/apps/foo/
no lo hace del todo; terminamos con:
/u/apps/foo/a --> /home/bob/foo/bar
/u/apps/foo/bar
Si /home/bob/foo/bar
existe o no en la máquina remota es irrelevante; en cualquier caso, el resultado definitivamente no es lo que necesito.
Respuesta aceptada:
Si los enlaces son a rutas absolutas, no hay forma de evitarlo. Puede evitarlo haciendo que los enlaces simbólicos sean relativos:
/home/bob/foo/a --> ./bar /home/bob/foo/bar
pero eso puede resultar difícil, dependiendo de cómo genere esos enlaces y cuántos de ellos haya.