Por que existem vários encadeamentos rsync?

3

Eu uso um único programa rsync para fazer backup de um sistema de arquivos.

por ps , acho que há quatro rsync encadeamentos ou processos, dois no estado R (em execução) e dois no estado S (suspensos?):

$ ps aux | grep rsync
root     14144  0.0  0.0   6008  1868 pts/1    S+   03:16   0:00 sudo rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root     14145 47.2  0.5  62424 46108 pts/1    R+   03:16 226:44 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root     14146  0.6  0.2  80052 20584 pts/1    S+   03:16   2:59 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root     14147 11.4  0.2  49324 20264 pts/1    S+   03:16  55:02 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
ting     16986  0.0  0.0   4392   820 pts/4    S+   11:16   0:00 grep --color=auto rsync

por pstree , acho que há três rsync process ou threads:

$ pstree | grep rsync
     |                |-bash---sudo---rsync---rsync---rsync

Por que eu tenho vários threads ou processos rsync , enquanto estou executando apenas um programa?

A partir da saída stdout, ela não parece estar paralelamente transferindo vários arquivos (o que parece exigir esforço extra? link )?

Mas eu examino o destino e descubro que há alguns diretórios (digamos dir1 ) com apenas alguns, mas não todos os arquivos já transferidos, enquanto a saída de rsync para stdout diz que está transferindo arquivos em um diferente e diretório separado (digamos dir2 , que tem o mesmo diretório pai que dir1 faz). Parece-me que, mais tarde, o resultado será stdout dizendo que ele transferirá os arquivos restantes nos diretórios (por exemplo, dir1 ) com alguns, mas não com todos os arquivos já transferidos.

    
por Tim 07.03.2015 / 17:20

1 resposta

2

Existem várias coisas que o programa rsync precisa fazer, entre elas:

  • localizando arquivos que não estão em sincronia com o servidor remoto
  • decidir quais partes precisam ser transmitidas
  • transmitindo os deltas para que o "outro lado" possa ser atualizado Muitas vezes, mas nem sempre a parte da transmissão é o fator limitante da largura de banda.

O rsync não faz transferência paralela de dados de patches, mas gera outros dados e troca e cria conhecimento sobre o que outros deltas podem precisar de transferência, durante a transferência, de modo que quando a transferência de um determinado delta é concluído, o próximo delta está pronto para ser transferido.

Uma abordagem mais ingênua esperaria a transmissão delta concluir e então começaria a comparar os próximos arquivos para as transmissões necessárias, e como pode demorar um pouco para encontrar o próximo arquivo diferente, a largura de banda de transmissão não é utilizada durante esse tempo.

    
por 07.03.2015 / 18:17

Tags