Ho usato uno rsync
script per sincronizzare i dati su un host con i dati su un altro host. I dati hanno numerosi file di piccole dimensioni che contribuiscono a quasi 1,2 TB.
Per sincronizzare quei file, ho usato il rsync
comando come segue:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
I contenuti di proj.lst sono i seguenti:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Come test, ho raccolto due di questi progetti (8,5 GB di dati) e ho eseguito il comando sopra. Essendo un processo sequenziale, si completa con 14 minuti e 58 secondi. Pertanto, per 1,2 TB di dati occorrerebbero diverse ore.
Se potessi più rsync
processi in parallelo (usando &
, xargs
o parallel
), mi farebbe risparmiare tempo.
Ho provato con il comando seguente con parallel
(dopo aver cd
eseguito l'installazione nella directory dei sorgenti) e ci sono voluti 12 minuti e 37 secondi per eseguire:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Ciò avrebbe dovuto richiedere 5 volte meno tempo, ma non è stato così. Penso, sto sbagliando da qualche parte.
Come posso eseguire più rsync
processi per ridurre i tempi di esecuzione?
rsync
s è la nostra prima priorità.
rsync
s in parallelo è l'obiettivo principale ora.