ฉันมีโฟลเดอร์ a / และโฟลเดอร์ระยะไกล A / ตอนนี้ฉันเรียกใช้สิ่งนี้บน Makefile:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
เมื่อฉันสร้างซิงโครไนซ์เพลงสิ่งแรกจะได้รับความแตกต่างทั้งหมดจากเซิร์ฟเวอร์ไปยังโลคัลจากนั้นตรงกันข้ามส่งความแตกต่างทั้งหมดจากโลคัลไปยังเซิร์ฟเวอร์
ซึ่งจะใช้ได้ดีก็ต่อเมื่อมีการอัปเดตหรือไฟล์ใหม่ในอนาคตเท่านั้น หากมีการลบก็ไม่ได้ทำอะไร
ใน rsync มีตัวเลือก --delete และ --delete-after เพื่อช่วยให้บรรลุสิ่งที่ฉันต้องการ แต่สิ่งที่เป็นอยู่มันใช้ไม่ได้กับ 2-way-sync
หากฉันต้องการลบไฟล์เซิร์ฟเวอร์ในการซิงค์เมื่อไฟล์ในเครื่องถูกลบมันก็ใช้งานได้ แต่ถ้าด้วยเหตุผลบางประการ (อธิบายไว้ภายหลัง) ฉันมีไฟล์บางไฟล์ที่ไม่ได้อยู่ในเซิร์ฟเวอร์ แต่มีอยู่ในเครื่องและไฟล์เหล่านั้นถูกลบ ฉันต้องการลบออกในเครื่องและไม่คัดลอกเซิร์ฟเวอร์ (ตามที่เกิดขึ้น)
สิ่งที่ฉันมี 3 เครื่องในบริบท:
- เดสก์ทอป
- สมุดบันทึก
- โฮมเซิร์ฟเวอร์
ดังนั้นในบางครั้งเซิร์ฟเวอร์จะมีไฟล์ที่ถูกลบด้วยการซิงค์สมุดบันทึกเป็นต้นจากนั้นเมื่อฉันเรียกใช้การซิงค์กับเดสก์ท็อปของฉัน (ซึ่งไฟล์เซิร์ฟเวอร์ที่ถูกลบยังคงมีอยู่) ฉันต้องการให้ไฟล์เหล่านี้ถูกลบและไม่ควร คัดลอกอีกครั้งไปยังเซิร์ฟเวอร์
ฉันเดาว่านี่เป็นไปได้เฉพาะกับฐานข้อมูลและการติดตามการดำเนินงาน: P
วิธีแก้ปัญหาที่ง่ายกว่านี้หรือไม่? ขอขอบคุณ.