SSHFS è conveniente, ma non si adatta bene con rsync o più in generale con gli strumenti di sincronizzazione.
Il problema più grande è che SSHFS uccide in gran parte le ottimizzazioni delle prestazioni di rsync. In particolare, per file medio-grandi, quando rsync vede che un file è stato modificato, calcola i checksum su parti del file su ciascun lato al fine di trasferire solo le parti che sono state modificate. Questa è un'ottimizzazione solo se la larghezza di banda della rete è significativamente inferiore alla larghezza di banda del disco, che di solito è il caso. Ma con SSHFS, la larghezza di banda del “disco” è in realtà la larghezza di banda della rete, quindi rsync dovrebbe leggere l'intero file per determinare cosa copiare. In effetti, con una copia locale (che è, per quanto riguarda rsync, anche se uno dei lati è su SSHFS), rsync copia semplicemente l'intero file.
SSHFS è anche dannoso per le prestazioni se ci sono molti piccoli file. Rsync deve controllare almeno i metadati di ogni file per determinare se è stato modificato. Con SSHFS, ciò richiede un round trip di rete per ciascun file. Con rsync su SSH, le due parti possono lavorare in parallelo e trasferire informazioni in blocco, che è molto più veloce.
In termini di restrizioni di accesso, SSHFS richiede l'accesso SFTP, mentre rsync richiede la possibilità di eseguire il codice (in particolare, il programma rsync) tramite una shell. Se l'utente non ha un account shell, è possibile e comune fornire un account con una shell speciale che consenta di eseguire solo alcuni programmi tra cui sftp-server
e rsync
. Vedi Hai bisogno di una shell per SCP?
Se stai solo copiando nuovi file e non c'è un numero molto grande di file, non c'è alcuna differenza significativa di prestazioni.
SSHFS stabilisce una connessione SSH quando il filesystem è montato e mantiene tale connessione fino a quando non viene smontata. Rsync effettua una nuova connessione ogni volta che la esegui, ma puoi utilizzare la funzione multiplexing e il piggyback su una singola connessione principale per evitare di eseguire l'autenticazione ogni volta.
SSHFS è un filesystem FUSE e supporta quindi solo metadati e ACL tradizionali Unix. Rsync può trasferire attributi estesi (è necessario utilizzare rsync -aAX
, si noti che una pianura -a
conserva solo i metadati Unix tradizionali).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Quando utilizzorsync
per questa operazione, durante il calcolo del checksum per trasferire solo le parti che sono state modificate,rsync
dovrei leggere l'intero file, il che porterà a scaricare i dati completi anziché solo la sua sezione aggiornata? @Gilles