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


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

4
Я получаю "cp: параметры -H, -L и -P могут быть не указаны с параметром -r."
Балуптон

3
@balupton: попробуйте -LR
pt2ph8

11

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

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

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


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

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

  -L, --dereference
        always follow symbolic links in SOURCE

0

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

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

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


В некоторых оболочках это не будет копировать скрытые файлы / папки symlink_dir.
vmrob
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.