Rsync enorme conjunto de dados de pequenos arquivos 5TB, + M arquivos pequenos

6

Encontrei uma situação em que um servidor de aplicativos misconfig levou à criação de conjuntos de dados em torno de 5TB, em que cada diretório contém um grande número de arquivos pequenos. Estamos no processo de transferir os arquivos e alterar o aplicativo, mas o rsync falha na transferência dos dados. Ele falha mesmo localmente entre as unidades locais. Eu consegui copiar apenas 3,5G durante a noite! Eu tentei mudar os switches rsync e ainda sem sorte. Aqui está o que está sendo executado atualmente no servidor sem qualquer indicação de progresso: rsync -avhWc --no-compress --progress destino de origem Alguns sugeriram o gigasync, mas o github e o site não estão disponíveis. Alguém pode sugerir um método para transferir os arquivos? Aprecie qualquer ajuda

    
por h.safe 29.05.2018 / 08:15

4 respostas

3

Experimente xargs + rsync:

 find . -type f -print0 | xargs -J % -0 rsync -aP % user@host:some/dir/

Você pode controlar quantos arquivos para passar como fonte para cada chamada de rsync com -n Por exemplo. para copiar 200 arquivos em cada rsync:

 find . -type f -print0 | xargs -n 200 -J % -0 rsync -aP % user@host:some/dir/

Se for muito lento, você pode executar várias cópias do rsync em paralelo com a opção -P :

find . -type f -print0 | xargs -P 8 -n 200 -J % -0 rsync -aP % user@host:some/dir/

Isso iniciará 8 cópias do rsync em paralelo.

    
por 29.05.2018 / 08:34
2

Se esta for uma rede confiável / segura e você puder abrir uma porta no host de destino, uma boa maneira de reproduzir uma árvore em outra máquina é a combinação de tar e netcat. Eu não estou em um terminal, então não posso escrever uma demonstração completa, mas esta página faz um ótimo trabalho:

link

Definitivamente, use a compactação. Na melhor das hipóteses, você pode transferir os dados na taxa de transferência mais lenta dos três gargalos potenciais - ler na fonte, na rede, escrever nas permissões de destino.

    
por 29.05.2018 / 16:56
0

não especificando o sistema operacional do servidor - você considerou o robocopy? Seu Windows baseado embora. Suporta segmentação e tentativas, e limitação de largura de banda. UNC para UNC capaz. RoboCopy docs

o google rápido do rsync mostra unix / windows ... talvez você esteja usando o windows.

    
por 29.05.2018 / 13:57
0

Se você tiver o ZFS, poderá usar a replicação no nível do ZFS para enviar o sistema de arquivos para um novo destino.

Se isso não for uma opção, considere UDR + rsync, detalhado aqui: Transfira grande quantidade de arquivos pequenos

    
por 29.05.2018 / 15:29