Se você acha que é uma duplicata ... bem eu não encontrei uma resposta satisfatória ainda: /
Eu tenho que migrar uma pasta de um servidor para outro. Pessoalmente, eu usaria o rsync, mas a pergunta é ... essa pasta contém arquivos grandes (& gt; 5gb) e muitos arquivos pequenos (arquivos com mais de 1k & lt; 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?
SCP é ainda mais lento, apenas no caso de alguém sugerir isso.
Respostas:
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:
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). the -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 salta para o diretório apropriado e o descompacta.
fonte
Usar
find ... -size
paratar
os arquivos sob um determinado tamanho em um único grande, então usersync .... --min-size
para transferir apenas arquivos acima de um determinado tamanho.fonte