Comment copier des liens symboliques vers des cibles comme des dossiers normaux

68

J'ai un dossier avec des liens symboliques:

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

je veux le copier dans ~ / solrTest mais je veux aussi copier des fichiers de symlink

quand j'essaie de cp -r /usr/share/solr/ ~/solrTest

je vais avoir un lien symbolique ici:

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

la source

Réponses:

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

Consultez la manpage pour les commandes unix avecman cp

   -L, --dereference
          always follow symbolic links in SOURCE
Fabio
la source
4
Je reçois "cp: les options -H, -L et -P ne peuvent pas être spécifiées avec l'option -r."
Balupton
3
@balupton: essayez -LR
pt2ph8
11

De la page de manuel:

'-L', '- dereference' - Suivez les liens symboliques pour les copier. Avec cette option, cp ne peut pas créer de lien symbolique. Par exemple, un lien symbolique (vers un fichier normal) dans l'arborescence source sera copié dans un fichier normal dans l'arborescence de destination.

C'est donc l'option que vous devriez essayer.

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

De la cp(1)page de manuel:

  -L, --dereference
        always follow symbolic links in SOURCE
amphétamachine
la source
0

Une solution rapide consiste à:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

l'inconvénient est que vous devez d'abord créer le répertoire de destination

Andreas Wong
la source
Dans certains shells, cela ne copiera pas les fichiers / dossiers cachés symlink_dir.
vmrob