Eu tenho usado um rsync
script para sincronizar dados em um host com os dados em outro host. Os dados possuem vários arquivos de tamanho pequeno que contribuem para quase 1,2 TB.
Para sincronizar esses arquivos, eu tenho usado o rsync
comando da seguinte maneira:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
O conteúdo de proj.lst é o seguinte:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Como teste, peguei dois desses projetos (8,5 GB de dados) e executei o comando acima. Por ser um processo seqüencial, utiliza 14 minutos e 58 segundos para concluir. Portanto, para 1,2 TB de dados, levaria várias horas.
Se eu pudesse vários rsync
processos em paralelo (usando &
, xargs
ou parallel
), ele iria salvar o meu tempo.
Eu tentei com o comando abaixo com parallel
(após cd
ing para o diretório de origem) e levou 12 minutos e 37 segundos para executar:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Isso deveria levar cinco vezes menos tempo, mas não levou. Eu acho que estou errado em algum lugar.
Como posso executar vários rsync
processos para reduzir o tempo de execução?
rsync
s é nossa primeira prioridade.
rsync
S múltiplos em paralelo é o foco principal agora.