เมื่อใช้ SSH เพื่อเชื่อมต่อ rsync กับเซิร์ฟเวอร์ระยะไกลคุณจะหลีกเลี่ยงช่องว่างและเช่นนั้นในเส้นทางระยะไกลได้อย่างไร แบ็กสแลชแบบง่ายจะหนีพื้นที่สำหรับพรอมต์การทุบตีท้องถิ่น แต่บนเครื่องระยะไกลพื้นที่จะถูกอ่านเป็นตัวแบ่งในเส้นทางดังนั้นการทำเครื่องหมายจุดสิ้นสุดของเส้นทางนั้น
ดังนั้นเมื่อฉันทำrsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
สิ่งที่เกิดขึ้นก็คือรีโมตเซิร์ฟเวอร์อ่านอย่างนั้น/path/to/dest/some/
และเนื่องจากไม่พบปลายทางนั้นจากระยะไกลเพราะปลายทางที่แท้จริงคือ "บางคน" แทนที่จะเป็น "บางคน"
ถ้าฉันลองใช้คำสั่งเดียวกันและยกเว้นเครื่องหมายแบ็กสแลชและช่องว่างเพื่อให้ได้รับพรอมต์แบ็คโลคอลและรักษาแบ็กสแลชสำหรับ/path/to/dest/some\\\ dir/
เซิร์ฟเวอร์ระยะไกล จากนั้นตีความเส้นทางเป็น/path/to/dest/some\/
มากกว่าที่จะ/path/to/dest/some\ dir/
ยังคงทำลายพื้นที่และตัวละครหลังจากนั้น
หากฉันพยายามที่จะปิดเส้นทางด้วยเครื่องหมายคำพูดมันจะทำงานในลักษณะเดียวกันโดยตัดเส้นทางออกจากพื้นที่อย่างมีประสิทธิภาพ ดังนั้นจึงเป็นการง่ายกว่าที่จะผ่าน bash prompt ในพื้นที่
เริ่มแรกฉันใช้พา ธ ที่มีเซ็กเมนต์ "-" (space-hyphen-space) อยู่ในนั้นและรีโมตเซิร์ฟเวอร์ส่งคืนข้อผิดพลาดrsync: on remote machine: -: unknown option
ซึ่งเป็นสิ่งที่เริ่มต้นความพยายามในการหลีกเลี่ยงพื้นที่ทั้งหมดในตอนแรก
ดังนั้นฉันต้องทำอย่างไรเพื่อให้การทำงานนี้ถูกต้องกับรีโมตเซิร์ฟเวอร์โดยไม่ต้องลบช่องว่างหรืออักขระผิดพลาดอื่น ๆ เช่นยัติภังค์จากเส้นทางระยะไกล
-s
อยู่ปัญหาโดยไม่จำเป็นต้องใช้การหลบหนีสองครั้งด้วยตนเอง