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.
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?a -> b
,b -> c/foo
,c -> d/e
: una petición de copiaa
también debe copiarb
`c
`c/foo
`d
`d/e
yd/e/foo
).Respuestas:
Si conoce el nombre del enlace simbólico y desea transferir el enlace y el destino , puede:
Las primeras
rsync
transferencias solo elsymlink
. El segundo comando encuentra el nombre real del directorio y el segundorsync
transfiere el contenido del directorio.fuente
Esto sería posible si y solo si estos estuvieran todos en 'mydir' y estuvieran en rsync 'mydir' de un lugar a otro. Rsync no es capaz de copiar fuera de la ruta que le das (con la excepción de los siguientes enlaces). p.ej
fuente