Cara menyalin symlink ke target sebagai folder normal

68

saya punya folder dengan symlink:

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

saya ingin menyalinnya ke ~ / solrTest tetapi saya ingin menyalin file dari symlink juga

ketika saya mencoba cp -r /usr/share/solr/ ~/solrTest

saya akan memiliki symlink di sini:

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

sumber

Jawaban:

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

Periksa manhalaman untuk perintah unix denganman cp

   -L, --dereference
          always follow symbolic links in SOURCE
Fabio
sumber
4
Saya mendapatkan "cp: opsi -H, -L, dan -P mungkin tidak ditentukan dengan opsi -r."
balupton
3
@balupton: coba
-LR
11

Dari halaman manual:

'-L', '- dereference' - Ikuti tautan simbolis saat menyalin dari mereka. Dengan opsi ini, cp tidak dapat membuat tautan simbolik. Misalnya, symlink (ke file biasa) di pohon sumber akan disalin ke file biasa di pohon tujuan.

Jadi ini opsi yang harus Anda coba.

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

Dari cp(1)halaman manual:

  -L, --dereference
        always follow symbolic links in SOURCE
amphetamachine
sumber
0

Salah satu solusi cepat adalah:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

kekurangannya adalah Anda harus membuat direktori tujuan terlebih dahulu

Andreas Wong
sumber
Dalam beberapa shell, ini tidak akan menyalin file / folder tersembunyi dari symlink_dir.
vmrob