Rsync su ssh, funziona alla grande ogni volta.
Tuttavia, il tentativo di risincronizzare con un host che consente solo accessi sftp, ma non accessi ssh, fornisce il seguente errore:
rsync -av / source ssh user @ remotehost: / target /
mancata corrispondenza della versione del protocollo: la shell è pulita? (per una spiegazione consultare la pagina man di rsync) Errore rsync: incompatibilità del protocollo (codice 2) su compat.c (171) [mittente = 3.0.6]
Ecco la sezione pertinente dalla pagina man di rsync:
Questo messaggio è in genere causato dagli script di avvio o dalla funzione di shell remota che produce immondizia indesiderata sul flusso utilizzato da rsync per il suo trasporto. Il modo per diagnosticare questo problema è eseguire la shell remota in questo modo:
ssh remotehost /bin/true > out.dat
quindi guarda out.dat. Se tutto funziona correttamente, out.dat dovrebbe essere un file di lunghezza zero. Se ricevi l'errore sopra riportato da rsync, probabilmente scoprirai che out.dat contiene del testo o dei dati. Guarda i contenuti e prova a capire cosa lo sta producendo. La causa più comune sono gli script di avvio della shell configurati in modo errato (come .cshrc o .profile) che contengono istruzioni di output per accessi non interattivi.
Provando questo sul mio sistema, ho prodotto quanto segue in out.dat:
ssh-dummy-shell: comando non consentito.
Come pensavo, l'host non consente accessi ssh.
Il seguente collegamento mostra che è possibile eseguire questa attività utilizzando il fusibile con sshfs, tuttavia è estremamente lento e non adatto all'uso in produzione.
C'è qualche possibilità di far funzionare rsync sftp?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
vedi questa risposta .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port