Cómo copiar enlaces simbólicos al destino como carpetas normales

68

Tengo una carpeta con enlaces simbólicos:

marek@marek$ ls -al /usr/share/solr/
razem 36
drwxr-xr-x   5 root root  4096 2010-11-30 08:25 .
drwxr-xr-x 358 root root 12288 2010-11-26 12:25 ..
drwxr-xr-x   3 root root  4096 2010-11-24 14:29 admin
lrwxrwxrwx   1 root root    14 2010-11-24 14:29 conf -> /etc/solr/conf

quiero copiarlo a ~ / solrTest pero también quiero copiar archivos del enlace simbólico

cuando trato de cp -r /usr/share/solr/ ~/solrTest

tendré enlace simbólico aquí:

marek@marek$ ls -al ~/solrTest
razem 36
drwxr-xr-x   5 root root  4096 2010-11-30 08:25 .
drwxr-xr-x 358 root root 12288 2010-11-26 12:25 ..
drwxr-xr-x   3 root root  4096 2010-11-24 14:29 admin
lrwxrwxrwx   1 root root    14 2010-11-24 14:29 conf -> /etc/solr/conf

fuente

Respuestas:

92
cp -Lr /usr/share/solr/ ~/solrTest

Consulte la manpágina para ver los comandos de Unix conman cp

   -L, --dereference
          always follow symbolic links in SOURCE
Fabio
fuente
44
Obtengo "cp: las opciones -H, -L y -P pueden no especificarse con la opción -r".
balupton
3
@balupton: prueba -LR
pt2ph8
11

Desde la página del manual:

'-L', '- desreferenciar' - Siga los enlaces simbólicos cuando copie de ellos. Con esta opción, cp no puede crear un enlace simbólico. Por ejemplo, un enlace simbólico (a un archivo normal) en el árbol de origen se copiará a un archivo normal en el árbol de destino.

Entonces esta es la opción que debes probar.

Migol
fuente
5
cp -r -L /usr/share/solr/ ~/solrTest

Desde la cp(1)página del manual:

  -L, --dereference
        always follow symbolic links in SOURCE
anfetamaquina
fuente
0

Una solución rápida es:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

El inconveniente es que primero debe crear el directorio de destino

Andreas Wong
fuente
En algunos shells, esto no copiará archivos / carpetas ocultos symlink_dir.
vmrob