it-swarm-es.tech

Copie el enlace simbólico Y donde apunta al uso de rsync

No es necesario que lo haga rsync, pero sería bueno no tener que escribir un script para hacer esto, y rsync está muy cerca de lo que quiero.

rsync -a (o -l) puede conservar enlaces simbólicos y -L puede eliminar la referencia de 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 apunta el enlace?

He aquí 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 aparecieran 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 los enlaces simbólicos que tienen una ruta absoluta o que apuntan a fuera del directorio de origen se pueden ignorar.

11
Wei-Yin

Si conoce el nombre del enlace simbólico y desea transferir el enlace y el destino, puede:

rsync -a 'symlink' .
realdir="$(basename "$(readlink -f 'symlink')")"
rsync -a "$realdir" .

El primer rsync transfiere solo el symlink. El segundo comando busca el nombre real del directorio y el segundo rsync transfiere el contenido del directorio.

2
user201564

Esto sería posible si y solo si estuvieras todos en 'mydir' y tuvieras que sincronizar 'mydir' de un lugar a otro. Rsync no es capaz de copiar fuera de la ruta que le proporcionó (con la excepción de los siguientes enlaces). p.ej

mydir/dirA ...
mydir/dirB ...
...
0
xenoterracide