Quando si invia lo stesso set di file, rsync
è più adatto perché invierà solo differenze. tar
invierà sempre tutto e questo è uno spreco di risorse quando molti dei dati sono già lì. In tar + rsync + untar
questo caso perde questo vantaggio, oltre al vantaggio di mantenere sincronizzate le cartelle rsync --delete
.
Se copi i file per la prima volta, prima impacchettando, poi inviando, quindi spacchettando (AFAIK rsync
non accetta l'input di piping) è ingombrante e sempre peggio del semplice risincronizzazione, perché rsync
non dovrà svolgere alcuna attività più che tar
comunque.
Suggerimento: rsync versione 3 o successive esegue una ricorsione incrementale, il che significa che inizia a copiare quasi immediatamente prima di contare tutti i file.
Suggerimento 2: se usi rsync
oltre ssh
, puoi anche usare uno di questitar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
o solo scp
scp -Cr srcdir user@server:destdir
Regola generale, mantienila semplice.
AGGIORNARE:
Ho creato 59M di dati dimostrativi
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
e testato più volte il trasferimento dei file su un server remoto (non nella stessa lan), usando entrambi i metodi
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
mantenendo registri separati dai pacchetti di traffico ssh inviati
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
In questo caso, non riesco a vedere alcun vantaggio in meno traffico di rete utilizzando rsync + tar, che è previsto quando il mtu predefinito è 1500 e mentre i file hanno dimensioni 10k. rsync + tar ha generato più traffico, è stato più lento per 2-3 secondi e ha lasciato due file spazzatura che dovevano essere ripuliti.
Ho fatto gli stessi test su due macchine sulla stessa lan, e lì rsync + tar ha fatto tempi molto migliori e molto meno traffico di rete. Presumo causa di frame jumbo.
Forse rsync + tar sarebbe meglio di rsync su un set di dati molto più grande. Ma sinceramente non penso che valga la pena, hai bisogno di doppio spazio su ogni lato per l'imballaggio e il disimballaggio, e ci sono un paio di altre opzioni come ho già menzionato sopra.