No es necesario que lo haga rsync
, pero sería bueno no tener que escribir un guión para hacer esto, y rsync
está muy cerca de lo que quiero.
rsync -a
(o -l
) puede preservar los enlaces simbólicos, y -L
puede desreferenciar los enlaces simbólicos y copiarlos como si fuera un archivo / directorio normal. Sin embargo, ¿es posible mantener el enlace simbólico y también copiar los archivos / directorios a los que apuntan los enlaces?
Aquí hay un ejemplo. Digamos que tenemos esta jerarquía de carpetas:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
y cuando lo hago rsync -aR dirA dest
(o algo más), me gustaría que aparezcan exactamente estos en dest
:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
¿Es esto posible con rsync
? Gracias.
Supongamos que se pueden ignorar los enlaces simbólicos que tienen una ruta absoluta o que apuntan fuera del directorio de origen.
a -> b
, b -> c/foo
, c -> d/e
: una petición de copia a
también debe copiar b
` c
` c/foo
` d
` d/e
y d/e/foo
).
dirA/link
trata de un enlace simbólico a../dirB/file
, entonces esto debe manejarse como copiandodirB/file
adest/dirB/file
ydirA/link
haciadest/dirA/link
. ¿Qué pasa sidirA/link
hay un enlace../../another_file
? ¿Qué sucede, en general, sidirA/link
apunta a un directorio que está más arriba en el árbol de directorios?