Risposte:
Rsync sarà ovviamente più veloce di scp se la destinazione contiene già alcuni dei file sorgente, poiché rsync copia solo le differenze. Ma ho il sospetto che la tua domanda riguardasse una copia semplice su un bersaglio vuoto.
Hai passato l' -z
opzione a rsync
; questo attiva la compressione. Se la larghezza di banda della rete è il fattore limitante (spesso lo è), la compressione può migliorare la velocità di trasferimento di una notevole quantità.
Puoi anche abilitare la compressione con scp
passando l' -C
opzione. Questo dovrebbe riguardare anche le cose con rsync. La compressione non è abilitata per impostazione predefinita in ssh perché consente di risparmiare larghezza di banda ma aggiunge latenza e sovraccarico della CPU; la latenza è dannosa per le sessioni interattive (questo non si applica a scp
) e l'overhead della CPU è inutile se i file che stai copiando sono già compressi.
Versioni precedenti di rsync
rsh usato anziché ssh come livello di trasporto predefinito, quindi un confronto equo sarebbe tra rsync
e rcp
. Ma ssh è l'impostazione predefinita dalla versione 2.6.0 del 01-01-2004.
Con impostazioni di compressione identiche, mi aspetto rsync
che scp
abbia sostanzialmente la stessa velocità. Si prega di condividere i benchmark se si trova diversamente.
rsync -z
è ancora MODO più veloce rispetto scp
a qualsiasi compressione suggerita in queste risposte abilitata. È anche più veloce della compressione e dell'archiviazione in un file manualmente e scp
di quel file ( scp
con la compressione è persino più lento di così). Quindi la domanda del PO in realtà rimane senza risposta: che cosa è scp
così lento rispetto a rsync
?
prova scp in modo rapido
scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput' -c arcfour machine:file .
queste opzioni velocizzano 5 volte scp nella mia installazione rispetto alla semplice macchina scp: file.
Aggiornamento, 2017
In realtà scp è lento a causa della cattiva gestione dei dettagli TCP come MTU e dimensioni del buffer. Fortunatamente questo è stato risolto dal progetto HPN SSH . Per quanto ne so, puoi usare HPN SSH come trasporto per rsync.
scp -p
(conserva data / ora) come impostazione predefinita, e probabilmente -r
(ricorsivo) scp -pr -C ...
. (Ho dovuto solo strofinare e riavviare un lavoro scp da 40 GB usando questi perché ho dimenticato il -p
)
In passato era il contrario, ma credo che la velocità di rsync sia migliorata notevolmente nelle ultime revisioni. Dipende anche da quanti file stai copiando. Se è molto, rsync di solito sarà più veloce perché scp genera un nuovo processo per ogni file che stai copiando. Puoi provare a indebolire il codice usato da scp per vedere se accelera. L'ultima volta che ricordo, la cifra dell'arcfour era la più veloce.
Per i miei test, rsync è più veloce di scp , puoi usare iotop per testarli sul trasferimento dello stesso file:
sudo iotop -o
Forse otterrai risultati diversi, ma puoi provarli tu stesso. A proposito, mentre usi scp , non farne a meno di scegliere il suo codice:
scp -c arcfour <source> <dest>
Mentre arcfour
può accelerare la crittografia.
Stai copiando nuovamente i file su quelli esistenti? In tal caso, la capacità di rsync di bloccare il confronto e copiare solo le differenze sarà rilevante.