cp --preserve=links
Desde la página del manual:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Personalmente, uso cp -av
para la mayoría de mis copias pesadas. De esa manera, puedo conservar todo, incluso de forma recursiva, y ver el resultado. Por supuesto, eso es solo preferencia personal.
En cuanto a por qué sus otras opciones no hicieron lo que esperaba, -s
hace un enlace en su lugar de copiar y -L
sigue los enlaces en la fuente para encontrar el archivo para copiar en lugar de copiar los enlaces mismos.
Tal como dice la página de manual, use -P
. Esta configuración dice:
-P, --no-dereference
never follow symbolic links in SOURCE
Si los enlaces contienen rutas relativas, copiar el enlace no ajustará la ruta relativa. Use readlink
, con el interruptor -f
a seguir recursivamente, para obtener la ruta absoluta del enlace. Por ejemplo:
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Si lo que desea es conservar las rutas relativas, la opción -P
de cp
, como dijo Ignacio Vazquez-Abrams, es lo que necesitas.