melhor ferramenta linux para transferir milhares de arquivos entre dois servidores [fechados]

0

Se você acha que é uma duplicata ... bem, eu ainda não encontrei uma resposta satisfatória: /

Eu tenho que migrar uma pasta de um servidor para outro. Pessoalmente eu usaria o rsync, mas a questão é ... essa pasta contém arquivos grandes (> 5gb) e muitos arquivos pequenos (arquivos com mais de 1k < 30kb).

Eu gostaria de evitar o gargalo causado pela transferência de muitos arquivos pequenos.

O rsync é a ferramenta certa para fazer isso ou existem soluções melhores?

O SCP é ainda mais lento, apenas no caso de alguém sugerir isso.

    
por Wyatt Gillette 24.11.2017 / 12:10

2 respostas

1

Se esta for uma transferência única, o rsync NÃO é a ferramenta para o trabalho.

A maneira que eu faria seria tar os arquivos (e, opcionalmente, compactar, dependendo das características dos servidores e da conexão entre eles), então canalizar isso via SSH para o novo servidor e descompactá-lo. Isso pode ser feito em 1 comando. Você precisará variar dependendo dos detalhes, mas pareceria algo como:

tar -cz /startdir | pv | ssh user@ip "cd /destpath; tar -xf" 

Isso compactará os arquivos em um único fluxo, de modo que não haja muitas alternações para cada arquivo, proporcionando a máxima velocidade. Ele também faz a compactação, o envio e a descompactação em uma única etapa, minimizando assim o tempo total gasto.

Para detalhar como isso funciona:

tar comprime / descomprime os arquivos em um fluxo no stdout (porque um nome de arquivo não é dado). o -c significa criar e z significa compactar. Você pode omitir o z se a compressão não for desejada.

O bit pv não é necessário, mas fornece feedback de que os dados estão sendo transferidos e a taxa de transferência dos dados compactados. O comando ssh do curso cria a conexão com o lado remoto e alimenta a saída dos comandos anteriores para ele. Em seguida, ele pula para o diretório apropriado e o descompacta.

    
por 25.11.2017 / 06:34
-1

Use find ... -size to tar dos arquivos em um determinado tamanho em um único grande e use rsync .... --min-size para transferir apenas arquivos acima de um determinado tamanho.

    
por 24.11.2017 / 17:57