มันไม่จำเป็นต้องทำrsync
แต่มันก็ดีไม่ต้องเขียนสคริปต์เพื่อทำสิ่งนี้และrsync
อยู่ใกล้กับสิ่งที่ฉันต้องการ
rsync -a
(หรือ-l
) สามารถรักษา symlink และ-L
สามารถยกเลิกการเชื่อมโยง symere และคัดลอกราวกับว่ามันเป็นไฟล์ / dir ปกติ อย่างไรก็ตามมันเป็นไปได้ที่จะเก็บ symlink และคัดลอกไฟล์ / ไดเรกทอรีที่ลิงค์ชี้ไป
นี่คือตัวอย่าง สมมติว่าเรามีลำดับชั้นของโฟลเดอร์นี้:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
และเมื่อฉันทำrsync -aR dirA dest
(หรืออย่างอื่น) ฉันต้องการให้สิ่งเหล่านี้ปรากฏในdest
:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
เป็นไปได้ด้วยrsync
หรือไม่ ขอขอบคุณ.
สมมติว่า symlink มีพา ธ สัมบูรณ์หรือการชี้ไปนอกไดเรกทอรีต้นทางสามารถละเว้นได้
a -> b
, b -> c/foo
, c -> d/e
: ขอให้สำเนาa
นอกจากนี้ยังควรคัดลอกb
, c
, c/foo
, d
, d/e
และd/e/foo
)
dirA/link
เป็น symlink ไป../dirB/file
แล้วนี้ควรจะจัดการการคัดลอกdirB/file
ไปdest/dirB/file
และจะdirA/link
dest/dirA/link
เกิดอะไรขึ้นถ้าdirA/link
เป็นลิงค์ไป../../another_file
? โดยทั่วไปแล้วจะเกิดอะไรขึ้นถ้าdirA/link
ชี้ไปที่ไดเร็กทอรีที่สูงกว่าในทรีไดเรกทอรี