Estou tentando transferir cerca de 100k arquivos, totalizando 90gb. No momento, estou usando o daemon rsync, mas seu lento 3.4mb / se preciso fazer isso várias vezes. Eu estou querendo saber quais opções eu tenho, que maximizariam uma conexão de 100mbit pela Internet e seriam muito confiáveis.
rsync
file-transfer
incognito2
fonte
fonte
Respostas:
Você já considerou o Sneakernet ? Com grandes conjuntos de dados, o envio noturno geralmente será mais rápido e mais barato do que a transferência via Internet.
fonte
Quão? Ou TL; DR
O método mais rápido que encontrei é uma combinação de
tar
,mbuffer
essh
.Por exemplo:
Com isso, obtive transferências sustentadas de rede local acima de 950 Mb / s em links de 1Gb. Substitua os caminhos em cada comando tar para ser apropriado para o que você está transferindo.
Por quê? mbuffer!
O maior gargalo na transferência de arquivos grandes por uma rede é, de longe, a E / S do disco. A resposta para isso é
mbuffer
oubuffer
. Eles são amplamente similares, masmbuffer
têm algumas vantagens. O tamanho padrão do buffer é 2mbuffer
MB e 1 MBbuffer
. Buffers maiores têm maior probabilidade de nunca ficarem vazios. Escolher um tamanho de bloco que seja o menor múltiplo comum do tamanho de bloco nativo no sistema de arquivos de destino e de destino dará o melhor desempenho.O buffer é a coisa que faz toda a diferença! Use-o se tiver! Se você não tiver, pegue! Usar
(m}?buffer
mais qualquer coisa é melhor do que qualquer coisa por si só. é quase literalmente uma panacéia para transferências lentas de arquivos de rede.Se você estiver transferindo vários arquivos, use-os
tar
para "agrupá-los" em um único fluxo de dados. Se for um único arquivo, você poderá usarcat
o redirecionamento de E / S. A sobrecarga detar
vs.cat
é estatisticamente insignificante, então eu sempre usotar
(ouzfs -send
onde posso), a menos que já seja um tarball . Não é garantido que nenhum desses fornece metadados (e, em particularcat
, não). Se você quiser metadados, deixarei isso como um exercício para você.Finalmente, o uso
ssh
de um mecanismo de transporte é seguro e carrega muito pouco em cima. Novamente, a sobrecarga dessh
vs.nc
é estatisticamente insignificante.fonte
tar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
ssh
simplifica isso. Usandostunnel
,socat
ouopenssl
funciona também, mas são mais complexos de configurar para transferências simples.Você mencionou "rsync", então suponho que você esteja usando o Linux:
Por que você não cria um arquivo tar ou tar.gz? O tempo de transferência de rede de um arquivo grande é mais rápido do que muitos arquivos pequenos. Você pode até comprimir se desejar ...
Alcatrão sem compressão:
No servidor de origem:
Então, no lado receptor:
Alcatrão com compressão:
No servidor de origem:
Então, no lado receptor:
Você simplesmente usaria o rsync para fazer a transferência real dos arquivos (tar | tar.gz).
fonte
Você poderia tentar o
tar
essh
truque descrito aqui :isso deve ser regravável para o seguinte :
Você perderia os
--partial
recursos dorsync
processo, no entanto. Se os arquivos não mudarem com muita frequência, viver com uma inicial lentarsync
pode valer muito a pena, pois será muito mais rápido no futuro.fonte
Você pode usar várias opções de compactação do rsync.
A taxa de compactação para arquivos binários é muito baixa, portanto você pode pular esses arquivos usando --skip-compress, por exemplo, iso, tarballs já arquivados e compactados etc.
fonte
Eu sou um grande fã do SFTP. Eu uso o SFTP para transferir mídia do meu computador principal para o meu servidor. Eu obtenho boas velocidades, através da LAN.
O SFTP é confiável, eu daria uma chance, pois é fácil de configurar e, em alguns casos, pode ser mais rápido.
fonte