Risposte:
Una sola parola: rsync
.
Si noti che se si utilizza un collegamento lento o il server è sotto carico, lo strumento utilizzato per la copia non sarà il collo di bottiglia e qualsiasi modo di copiare sarà comunque lento.
Ciò dovrebbe fornire l'utilizzo di base per la copia tra il computer locale e il server remoto: http://oreilly.com/pub/h/38
Per copiare dal computer locale a un server remoto (è necessario sostituire i percorsi, il nome utente e l'indirizzo host, ovviamente):
rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
-a
archivio-v
verboso-z
comprimere-e ssh
"usa un tunnel SSH"Per copiare nell'altra direzione, cambia i percorsi (il primo è da , il secondo è a ):
rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer
Ma rsync è utile anche per copiare cose sullo stesso server:
rsync -av /path-to/copy/from /path_to/copy/to
-z
per la copia LAN o la copia all'interno di una macchina; prova con e senza -z
per la copia su Internet (l'una o l'altra potrebbe essere più veloce, a seconda di molte cose).
-e ssh
ora è predefinito per gli host remoti, quindi non è necessario passare esplicitamente l'opzione.
Un'altra parola: scp
scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
Per le offerte one-shot, scp è utile. Se sono molti file, rsync è una buona idea. Se una connessione viene interrotta, rsync può riprendere da dove era stata interrotta.
Sapevo che rsync aveva la compressione ( -z
) e ho appena appreso che anche scp ( -C
).
Nella tua configurazione, probabilmente rsync è abbastanza ... ma ad esempio, se ci sono molti file di piccole dimensioni, potrebbe essere più veloce eseguire il tar dei file prima di trasferirli, quindi tramite rsync. Questo perché trasferire il proprietario, i timestamp, le autorizzazioni è talvolta più pesante del file stesso se il file è piccolo. Tar unirà tutte quelle informazioni in un file e rsync copierà blocchi più grandi.
O ancora meglio, se non è necessaria alcuna sicurezza, utilizzare tar e nc:
Sulla destinazione, preparare un demone ricevente, decomprimere e decomprimere:
nc -l -p 12345 | pigz -d | tar xvf -
Sulla sorgente, tar tutto, comprimere in parallelo e inviarlo alla destinazione:
tar cvf - ./ | pigz | nc host 12345
-z
fuori l' opzione per la copia locale poiché aggiunge un sovraccarico non necessario. IMHO, dovresti usarlo solo-z
quando usi rsync attraverso un collegamento di rete lento. Se si copiano grandi quantità di dati su 100Base-T, si potrebbe andare bene anche senza-z
. Con una connessione di rete veloce, l'utilizzo della compressione può agganciare la CPU e far morire di fame altri processi.