Rsync ผ่าน ssh ใช้งานได้ดีทุกครั้ง
อย่างไรก็ตามการพยายาม rsync ไปยังโฮสต์ที่อนุญาตการล็อกอิน sftp เท่านั้น แต่ไม่ใช่การล็อกอิน ssh แสดงข้อผิดพลาดต่อไปนี้:
rsync -av / source ssh user @ remotehost: / target /
โปรโตคอลรุ่นไม่ตรงกัน - เปลือกของคุณสะอาดหรือไม่ (ดูหน้าคำอธิบาย rsync man) ข้อผิดพลาด rsync: ความเข้ากันไม่ได้ของโปรโตคอล (รหัส 2) ที่ compat.c (171) [ผู้ส่ง = 3.0.6]
นี่คือส่วนที่เกี่ยวข้องจากหน้า rsync:
ข้อความนี้มักจะเกิดจากสคริปต์เริ่มต้นของคุณหรือตัวช่วยสร้างเชลล์ระยะไกลสร้างขยะที่ไม่พึงประสงค์บนสตรีมที่ rsync ใช้สำหรับการส่งผ่าน วิธีในการวินิจฉัยปัญหานี้คือการเรียกใช้เปลือกระยะไกลของคุณเช่นนี้:
ssh remotehost /bin/true > out.dat
จากนั้นดู out.dat หากทุกอย่างทำงานอย่างถูกต้องแล้ว out.dat ควรเป็นไฟล์ความยาวเป็นศูนย์ หากคุณได้รับข้อผิดพลาดจาก rsync คุณอาจจะพบว่า out.dat มีข้อความหรือข้อมูลบางส่วน ดูเนื้อหาและพยายามหาสิ่งที่ผลิตออกมา สาเหตุส่วนใหญ่มีการกำหนดค่าสคริปต์เริ่มต้นเชลล์อย่างไม่ถูกต้อง (เช่น. cshrc หรือ. Profile) ที่มีคำสั่งเอาต์พุตสำหรับการเข้าสู่ระบบแบบไม่โต้ตอบ
ลองทำสิ่งนี้ในระบบของฉันสร้างสิ่งต่อไปนี้ใน out.dat:
ssh-dummy-shell: ไม่อนุญาตให้ใช้คำสั่ง
อย่างที่ฉันคิดว่าโฮสต์ไม่อนุญาตให้ล็อกอิน ssh
ลิงค์ต่อไปนี้แสดงให้เห็นว่าเป็นไปได้ที่จะทำภารกิจนี้ให้สำเร็จโดยใช้ฟิวส์ที่มี sshfs - แต่มันช้ามากและไม่เหมาะสำหรับการใช้งานจริง
มีโอกาสในการรับ rsync sftp ทำงานหรือไม่
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port