Desencorajaria strongmente qualquer pessoa de usar a resposta aceita, uma solução melhor é rastrear o diretório de nível superior e iniciar um número proporcional de operações de rync.
Eu tenho um grande volume de zfs e minha fonte era uma montagem cifs. Ambos estão ligados a 10G e, em alguns benchmarks, podem saturar o link. O desempenho foi avaliado usando zpool iostat 1
.
A unidade de origem foi montada como:
mount -t cifs -o username=,password= //static_ip/70tb /mnt/Datahoarder_Mount/ -o vers=3.0
Usando um único processo rsync
:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/ /StoragePod
o medidor da io lê:
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.62K 0 130M
Isso em benchmarks sintéticos (disco de cristal), desempenho para abordagens de gravação sequenciais de 900 MB / s, o que significa que o link está saturado. 130MB / s não é muito bom, e a diferença entre esperar um final de semana e duas semanas.
Então, criei a lista de arquivos e tentei executar a sincronização novamente (tenho uma máquina de 64 núcleos):
cat /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount.log | parallel --will-cite -j 16 rsync -avzm --relative --stats --safe-links --size-only --human-readable {} /StoragePod/ > /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount_result.log
e teve o mesmo desempenho!
StoragePod 29.9T 144T 0 1.63K 0 130M
StoragePod 29.9T 144T 0 1.62K 0 130M
StoragePod 29.9T 144T 0 1.56K 0 129M
Como alternativa, simplesmente executei o rsync nas pastas raiz:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/Marcello_zinc_bone /StoragePod/Marcello_zinc_bone
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/fibroblast_growth /StoragePod/fibroblast_growth
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/QDIC /StoragePod/QDIC
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/sexy_dps_cell /StoragePod/sexy_dps_cell
Isso realmente impulsionou o desempenho:
StoragePod 30.1T 144T 13 3.66K 112K 343M
StoragePod 30.1T 144T 24 5.11K 184K 469M
StoragePod 30.1T 144T 25 4.30K 196K 373M
Em conclusão, como o @Sandip Bhattacharya criou, escreva um pequeno script para obter os diretórios e faça um paralelo disso. Como alternativa, passe uma lista de arquivos para o rsync. Mas não crie novas instâncias para cada arquivo.