ฉันต้องการใช้ rsync เพื่อสำรองข้อมูลเซิร์ฟเวอร์ Ubuntu ของฉันด้วยดิสก์ที่อยู่บน Mac แต่ฉันไม่ได้ทำงานอย่างถูกต้องเนื่องจากทุกครั้งที่ฉันเรียกใช้การดำเนินการ rsync อีกครั้งหลังจากครั้งแรกไฟล์ที่มีอักขระพิเศษจะถูกลบออกก่อนจากนั้นจึงซิงค์ใหม่ ดูเหมือนว่ามีปัญหากับชุดอักขระที่แตกต่างกัน
ทางออกที่ต้องการน่าจะเป็นที่จะใช้--iconv
ตัวเลือก:
คุณสามารถใช้ตัวเลือก --iconv ของ rsync เพื่อแปลงระหว่าง UTF-8 NFC และ NFD อย่างน้อยถ้าคุณใช้ Mac มีชุดอักขระ utf-8-mac พิเศษที่ย่อมาจาก UTF-8 NFD ดังนั้นในการคัดลอกไฟล์จาก Mac ของคุณไปยัง NAS คุณจะต้องเรียกใช้สิ่งต่อไปนี้:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
สิ่งนี้จะแปลงชื่อไฟล์ในเครื่องทั้งหมดจาก UTF-8 NFD เป็น UTF-8 NFC บนเซิร์ฟเวอร์ระยะไกล เนื้อหาของไฟล์จะไม่ได้รับผลกระทบ
ขอบคุณ @Jan ฉันอัปเดตเวอร์ชัน rsync ของฉันบน macจาก 2.6.9 ถึง 3.1.1 ถึงกระนั้นฉันยังคงไม่อยู่ที่นั่นเพราะตอนนี้ฉันได้รับข้อผิดพลาดเพิ่มเติม:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
ฉันกำลังสูญเสียที่จะเข้าใจว่าทำไม "ไม่สนับสนุนการกระทำที่ร้องขอ" เนื่องจากดูเหมือนว่าเวอร์ชัน rsync บน Ubuntu ของฉัน (12.04) คือโพสต์ 3.xx ดังนั้นจึงควรสนับสนุน--iconv
ตัวเลือกนี้
แก้ไข: ให้ฉันเพิ่มว่าเมื่อฉัน (บน Mac, nota bene) เริ่มต้น rsync จาก Mac กับ Linux ทุกอย่างทำงานได้อย่างยอดเยี่ยม:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
แต่ไปทางอื่น 'จาก mac ไม่ทำงาน น่าประหลาดที่การทดสอบเพื่อเริ่ม rsync จากเครื่อง linux ทำให้ข้อความแปลก ๆ นี้:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
รวมถึงการอ้างสิทธิ์ที่แปลกมาก[server=2.6.9]
แม้ว่าฉันได้อัปเดตเป็น 3.1.1 บน Mac แล้ว ด้วยเหตุผลบางอย่างดูเหมือนว่าเครื่อง linux ของฉัน 'เห็น' เฉพาะรุ่น rsync ดั้งเดิมบน Mac
ข้อเสนอแนะเกี่ยวกับวิธีการแก้ปัญหานี้?