cp --preserve=links
À partir de la page de manuel :
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Personnellement, j'utilise cp -av
pour la plupart de mes copies lourdes. De cette façon, je peux tout conserver - même de manière récursive - et voir le résultat. Bien sûr, ce n'est qu'une préférence personnelle.
Quant à savoir pourquoi vos autres options n'ont pas répondu à vos attentes, -s
fait un lien à la place de copie et -L
suit les liens dans la source pour trouver le fichier à copier au lieu de copier les liens eux-mêmes.
Comme le dit la page de manuel, utilisez -P
. Ce paramètre indique :
-P, --no-dereference
never follow symbolic links in SOURCE
Si les liens contiennent des chemins relatifs, la copie du lien n'ajustera pas le chemin relatif. Utilisez readlink
, avec l'interrupteur -f
à suivre récursivement, afin d'obtenir le chemin absolu du lien. Par exemple :
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Si vous voulez conserver les chemins relatifs, alors l'option -P
de cp
, comme l'a dit Ignacio Vazquez-Abrams, est ce dont vous avez besoin.