Rsync trên ssh, hoạt động tuyệt vời mọi lúc.
Tuy nhiên, cố gắng rsync đến một máy chủ chỉ cho phép đăng nhập sftp, nhưng không đăng nhập ssh, cung cấp lỗi sau:
người dùng rsync -av / nguồn ssh @ remotehost: / target /
phiên bản giao thức không khớp - vỏ của bạn có sạch không? (xem trang man rsync để biết giải thích) lỗi rsync: không tương thích giao thức (mã 2) tại compat.c (171) [sender = 3.0.6]
Đây là phần có liên quan từ trang man rsync:
Thông báo này thường được gây ra bởi các tập lệnh khởi động hoặc cơ sở shell từ xa tạo ra rác không mong muốn trên luồng mà rsync đang sử dụng để vận chuyển. Cách để chẩn đoán vấn đề này là chạy shell từ xa của bạn như thế này:
ssh remotehost /bin/true > out.dat
sau đó nhìn ra ngoài. Nếu mọi thứ đều hoạt động chính xác thì out.dat phải là một tệp có độ dài bằng không. Nếu bạn nhận được lỗi trên từ rsync thì có thể bạn sẽ thấy rằng out.dat chứa một số văn bản hoặc dữ liệu. Nhìn vào nội dung và cố gắng tìm ra những gì đang sản xuất nó. Nguyên nhân phổ biến nhất là các tập lệnh khởi động shell được cấu hình không chính xác (như .cshrc hoặc .profile) có chứa các câu lệnh đầu ra cho thông tin đăng nhập không tương tác.
Thử điều này trên hệ thống của tôi đã tạo ra các mục sau trong out.dat:
ssh-dummy-shell: Lệnh không được phép.
Theo tôi nghĩ, máy chủ không cho phép đăng nhập ssh.
Liên kết sau đây cho thấy có thể hoàn thành nhiệm vụ này bằng cách sử dụng cầu chì với sshfs - tuy nhiên nó rất chậm và không phù hợp cho sử dụng sản xuất.
Có bất kỳ cơ hội nào để rsync sftp hoạt động không?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
Xem câu trả lời này .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port