วิธีคัดลอก symlink เพื่อกำหนดเป้าหมายเป็นโฟลเดอร์ปกติ


68

ฉันมีโฟลเดอร์ที่มี symlinks:

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 แต่ฉันต้องการคัดลอกไฟล์จาก symlink ด้วย

เมื่อฉันพยายาม cp -r /usr/share/solr/ ~/solrTest

ฉันจะมี symlink ที่นี่:

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"
balupton

3
@balupton: ลอง
-LR

11

จากหน้าคน:

'-L', '- dereference' - ติดตามลิงก์สัญลักษณ์เมื่อคัดลอกจากพวกเขา ด้วยตัวเลือกนี้ cp ไม่สามารถสร้างลิงก์สัญลักษณ์ได้ ตัวอย่างเช่น symlink (ไปยังไฟล์ปกติ) ในแผนผังต้นไม้จะถูกคัดลอกไปยังไฟล์ปกติในแผนผังปลายทาง

ดังนั้นนี่คือตัวเลือกที่คุณควรลอง



0

ทางออกหนึ่งที่รวดเร็วคือ:

$ mkdir dest_dir
$ cp symlink_dir/* dest_dir/

ข้อเสียคือคุณต้องสร้างไดเรกทอรีปลายทางก่อน


ในเชลล์บางตัวสิ่งนี้จะไม่คัดลอกไฟล์ / โฟลเดอร์ที่symlink_dirซ่อน
vmrob
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.