มันไม่จำเป็นต้องทำ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/linkdest/dirA/linkเกิดอะไรขึ้นถ้าdirA/linkเป็นลิงค์ไป../../another_file? โดยทั่วไปแล้วจะเกิดอะไรขึ้นถ้าdirA/linkชี้ไปที่ไดเร็กทอรีที่สูงกว่าในทรีไดเรกทอรี