Как скопировать символические ссылки на цель как обычные папки

68

у меня есть папка с символическими ссылками:

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

я хочу скопировать его в ~ / solrTest, но я также хочу скопировать файлы из символической ссылки

когда я пытаюсь cp -r /usr/share/solr/ ~/solrTest

у меня будет символическая ссылка здесь:

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

источник

Ответы:

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

Проверьте manстраницу для команд Unix сman cp

   -L, --dereference
          always follow symbolic links in SOURCE
Fabio
источник
4
Я получаю "cp: параметры -H, -L и -P могут быть не указаны с параметром -r."
Балуптон
3
@balupton: попробуйте -LR
pt2ph8
11

С man-страницы:

'-L', '- разыменование' - переходить по символическим ссылкам при копировании с них. С этой опцией cp не может создать символическую ссылку. Например, символическая ссылка (на обычный файл) в исходном дереве будет скопирована в обычный файл в дереве назначения.

Так что это вариант, который вы должны попробовать.

Migol
источник
5
cp -r -L /usr/share/solr/ ~/solrTest

Со cp(1)страницы руководства :

  -L, --dereference
        always follow symbolic links in SOURCE
amphetamachine
источник
0

Одним из быстрых решений является:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

недостаток в том, что вы должны сначала создать каталог назначения

Андреас Вонг
источник
В некоторых оболочках это не будет копировать скрытые файлы / папки symlink_dir.
vmrob