Rsync บนพา ธ SSH ที่มีช่องว่างไม่สามารถใช้คำพูดได้


17

ฉันสามารถ RSYNC ผ่าน SSH ได้สำเร็จตราบใดที่เส้นทางไม่มีช่องว่างในนั้น

เมื่อเส้นทางไม่มีช่องว่างจะไม่ทำงาน ฉันลองทับเครื่องหมายคำพูดและเครื่องหมายคำพูดคู่

เมื่อฉันใช้สแลชเอาต์พุตจะระบุว่าเป็นความสำเร็จ แต่ฉันไม่เห็นไฟล์ที่ถูกถ่ายโอนใด ๆ

rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/

เมื่อฉันใช้เครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายอัญประกาศบอกฉันว่าสิทธิ์ถูกปฏิเสธหลังจากป้อนรหัสผ่านของฉัน

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

ฉันควรทำอย่างไร

ขอขอบคุณ.

คำตอบ:


12

ขยายคำตอบของ rzr ด้วยโค้ดตัวอย่างและการอ้างอิงเพียงเพิ่ม-sแฟล็กอ้างคำสั่งพา ธ และไม่ต้องกังวลเกี่ยวกับการเว้นช่องว่างในพา ธ ระยะไกล:

rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

สำหรับการอ้างอิงตัวเลือกที่ระบุโดย OP:

  • -a, โหมดเก็บถาวร, เท่ากับ -rlptgoD (ไม่ใช่ -H, -A, -X)
    • รวม:
    • -r, - recursive, recurse ในไดเรกทอรี
    • -l, - ลิงก์, คัดลอก symlinks เป็น symlinks
    • -p, --perms, สงวนสิทธิ์
    • -t, - เวลารักษาเวลาการแก้ไข
    • -g, - กลุ่มรักษากลุ่ม
    • -o, - เจ้าของรักษาเจ้าของ (ผู้ใช้ขั้นสูงเท่านั้น)
    • - อุปกรณ์เก็บรักษาไฟล์อุปกรณ์ (ผู้ใช้ขั้นสูงเท่านั้น)
    • - ข้อกำหนดรักษาไฟล์พิเศษ
  • -v, - verbose, เพิ่ม verbosity
  • -z, - บีบอัดบีบอัดข้อมูลไฟล์ระหว่างการถ่ายโอน

พารามิเตอร์เพิ่มเติมที่ต้องการ:

  • -s, - ป้องกัน args, ไม่มีการแบ่งช่องว่าง, อักขระตัวแทนเท่านั้น

13

คุณต้องหลีกเลี่ยงช่องว่างทั้งในโลคัลเชลล์และรีโมตเชลล์ ลองสิ่งนี้:

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'

ที่มา/path with spaces/ในเปลือกท้องถิ่นสามารถหนีออกมาเพียงผ่านการวางราคาเดียวรอบ ๆ '/path with spaces/'มันคือ

ในทางกลับกันในกรณีของปลายทางโลคอลเชลล์จะถูกหลีกเลี่ยงโดยการใส่เครื่องหมายคำพูดเดี่ยวและช่องว่างจะถูก Escape ในรีโมตเชลล์โดยใช้อักขระ escape ( \) ด้านหน้าช่องว่าง


3
เพียงเพื่อเน้น - คุณต้องมีทั้งคำพูดและแบ็กสแลช
Sridhar Sarnobat

2

ดูที่ตัวเลือก rsync –protect-args (-s), ไม่ต้องใช้เครื่องหมายทับพิเศษ


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