Usando vários processos rsync com --remove-source-files

0

Digamos que eu tenha dados na ordem de terabytes, em arquivos na ordem de megabytes, para se afastar de um servidor com mais de 500 ms de distância.

Devido à natureza do TCP, o comando abaixo funciona, mas apenas em uma fração da largura de banda disponível, seja minha conexão ADSL doméstica de 4 Mbit / s ou uma linha de gigabit de gordura.

rsync -avP --remove-source-files source.host:path/to/source/ path/to/dest

Estou usando --remove-source-files porque talvez precise usar vários hosts e diretórios de destino, esses diretórios nem sempre contêm tudo o que foi recebido com êxito anteriormente e o diretório de origem está inativo.

Será seguro e eficaz executar várias instâncias do comando acima ao mesmo tempo?

    
por Delan Azabani 19.10.2015 / 15:01

2 respostas

3

Não, o comportamento real é imprevisível, mas é provável que as várias instâncias tentem copiar o mesmo arquivo ao mesmo tempo e a largura de banda seja desperdiçada, e coisas ruins podem acontecer.

No entanto, o uso inteligente de --include e --exclude pode ser útil aqui:

rsync -avP \
    --include '*/' --include '[a-g]*' --exclude '*' \
    source.host:path/to/source/ path/to/dest/

Este comando só enviará arquivos que começam com as letras a to g . Você pode configurar transferências paralelas para as outras partes do alfabeto.

Finalmente, assim que todas as transferências estiverem completas, você deve rodar o seu comando original rsync novamente (note que eu deixei o --remove-source-files do meu comando) para garantir que qualquer estranheza aconteceu e todos os arquivos que seus filtros originais perderam (arquivos de pontos, talvez?) também foram transferidos.

Por acaso, sempre coloque a barra final nos diretórios de origem e de destino (por exemplo, path/to/dest/ ) ou rsync pode não fazer o que você espera!

No entanto , o rsync não é a maneira mais eficiente de replicar arquivos pela primeira vez, especialmente quando a latência é alta (destina-se principalmente à atualização subsequente).

Você seria muito melhor usar tar para transmitir os dados para ssh :

ssh source.host tar -C path/to/source/ cfj - . | tar -C path/to/dest/ xfj -

Isto irá empacotar e comprimir os dados em um fluxo contínuo, canalizá-los através do seu túnel ssh , de volta para tar em sua extremidade local e expandir de volta para arquivos em um único comando e sem o arquivo tar alguma vez tocando o disco.

O lado negativo é que não é facilmente reiniciável se a conexão cair.

Tar também tem uma opção --exclude (mas não --include ), então você pode paralelizar os fluxos de maneira similar, se necessário. Novamente, você provavelmente deve terminar com um rsync para verificar a transferência.

Além disso: A "natureza do TCP" não é o problema aqui. O TCP usa um esquema de janela deslizante que deve saturar o link em qualquer latência normal, e há botões para girar se ele não funcionar t.

A natureza do rsync, no entanto, é que ele deve fazer algumas conversas sobre cada arquivo antes de transferi-lo, e a latência vai doer aqui (embora a implementação use pipelining para minimizar isso).

Se você não está saturando seu link, então a primeira coisa a tentar é tirar o rsync da equação ( scp de um arquivo adequadamente grande serve). Se isso ainda não for feito, verifique o uso da CPU: a compactação e a criptografia podem ser o gargalo. Se a transferência de dados simples via Netcat (ou FTP antigo) não puder fazê-lo, talvez seja necessário ajustar o TCP. Além disso, verifique se há perda de pacotes com ping , pois isso realmente estragará o TCP. Finalmente, pode ser que o link mais lento na cadeia não seja seu.

    
por 21.10.2015 / 12:23
0

Resposta curta: Não.

Se você deseja executar várias instâncias do rsync, deve fazer com que cada instância processe seu próprio lote de arquivos.

Não tenho certeza do que acontecerá, mas minha experiência cumulativa está me dizendo que não confiaria no resultado.

Você deve ser capaz de ganhar eficiência executando várias instâncias contanto que não esteja saturando as partes mais lentas da rota.

    
por 19.10.2015 / 15:48

Tags