ดำเนินการ rsync ขณะที่ติดตามลิงค์ sym


67

ฉันมีไดเรกทอรีที่มีลิงค์สัญลักษณ์ไปยังไดเรกทอรีอื่นที่อยู่ในสื่อต่าง ๆ ในระบบของฉัน:

/opt/lun1/2011
/opt/lun1/2010
/opt/lun2/2009
/opt/lun2/2008
/opt/lun3/2007

แต่ลิงก์สัญลักษณ์แสดงเป็น:

/files/2011
/files/2010
/files/2009
/files/2008
/files/2007

ฉันจะดำเนินการrsyncสิ่งที่ตามลิงก์สัญลักษณ์ได้อย่างไร

เช่น:

rsync -XXX /files/ user@server:/files/

คำตอบ:


98

การ-Lตั้งค่าสถานะเพื่อ rsync จะซิงค์เนื้อหาของไฟล์หรือไดเรกทอรีที่เชื่อมโยงกับมากกว่าการเชื่อมโยงสัญลักษณ์


1
เมื่อฉันทำเช่นนี้ลิงก์สัญลักษณ์ของผู้รับจะถูกลบและผู้ส่งของฉันจะเริ่มส่งไฟล์อีกครั้ง
ensnare

นั่นคือสิ่งที่คุณต้องการหรือไม่ ฉันคิดว่าคุณต้องการมีไฟล์จริงที่อยู่ด้านรับไม่ใช่แค่ symlink คุณหมายถึงคุณต้องการให้ symlink คัดลอกเป็น symlinks แต่เขียนใหม่โดยอัตโนมัติเพื่อชี้ไปที่ตำแหน่ง "ถูกต้อง" บนระบบที่รับ ถ้าเป็นเช่นนั้นนั่นไม่ใช่สิ่งที่ปกติหมายถึง "rsync ที่ตามลิงก์สัญลักษณ์"
MadHatter

4
สวัสดี - นี่คือไดเรกทอรี ฉันได้สิ่งนี้เพื่อทำงานกับแฟล็ก -K
ensnare

4
ฉันแน่ใจว่า SO กำลังทำให้ฉันงี่เง่ามากขึ้น ..
จอห์นฮัน

4
หากต้องการชี้แจง-LKหากคุณต้องการติดตามทั้งไฟล์และไดเรกทอรีที่เชื่อม
โยงกัน

17

เพิ่งพบปัญหานี้ และถ้าคุณต้องการให้ rsync จัดการกับไดเรกทอรี symlinked เป็นไดเรกทอรีคุณต้องการKตัวเลือก

rsync -K /files/ user@server:/files/


คุณอาจต้องการเพิ่มตัวเลือก --copy-unsafe-links
Gregory Magarshak

2

คุณต้องการทั้งสองอย่าง -Lและ-Kถ้าคุณมี symlink ทั้งสองข้างเช่นคุณทำ rsync ที่ 1 เรียบร้อยแล้วและต้องการอัปเดตการสำรองข้อมูลโดยใช้ rsync

    -L, --copy-links            transform symlink into referent file/dir
    -K, --keep-dirlinks         treat symlinked dir on receiver as dir

ในกรณีเช่นนี้หากคุณใช้เพียงอย่างเดียว-Lsymlink ที่ฝั่งผู้รับจะถูกลบออกและจะทำการสร้าง dir ใหม่

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