ซิงค์สองทางกับ rsync
ฉันมีโฟลเดอร์ 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 เครื่องในบริบท: เดสก์ทอป สมุดบันทึก โฮมเซิร์ฟเวอร์ ดังนั้นในบางครั้งเซิร์ฟเวอร์จะมีไฟล์ที่ถูกลบด้วยการซิงค์สมุดบันทึกเป็นต้นจากนั้นเมื่อฉันเรียกใช้การซิงค์กับเดสก์ท็อปของฉัน (ซึ่งไฟล์เซิร์ฟเวอร์ที่ถูกลบยังคงมีอยู่) ฉันต้องการให้ไฟล์เหล่านี้ถูกลบและไม่ควร คัดลอกอีกครั้งไปยังเซิร์ฟเวอร์ …