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.