cp --preserve=links
Dalla pagina man:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Personalmente, utilizzo cp -av
per la maggior parte delle mie copie pesanti. In questo modo, posso conservare tutto, anche in modo ricorsivo, e vedere l'output. Ovviamente si tratta solo di preferenze personali.
Per quanto riguarda il motivo per cui le tue altre opzioni non hanno funzionato come ti aspettavi, -s
crea un collegamento invece di copiare e -L
segue i collegamenti nella fonte per trovare il file da copiare invece di copiare i collegamenti stessi.
Proprio come dice la pagina man, usa -P
. Questa impostazione dice:
-P, --no-dereference
never follow symbolic links in SOURCE
Se i collegamenti contengono percorsi relativi, la copia del collegamento non modificherà il percorso relativo.Usa readlink
, con l'opzione -f
da seguire in modo ricorsivo, per ottenere il percorso assoluto del collegamento. Ad esempio:
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Se preservare i percorsi relativi è quello che vuoi, allora l'opzione -P
di cp
, come ha detto Ignacio Vazquez-Abrams, è ciò di cui hai bisogno.