qual é a maneira mais rápida e confiável de transferir muitos arquivos?

10

Estou tentando transferir cerca de 100 mil arquivos, totalizando 90 GB. Agora eu estou usando o daemon rsync mas seu lento 3.4mb / s e eu preciso fazer isso várias vezes. Eu estou querendo saber quais as opções que eu tenho que seria o máximo de uma conexão de 100mbit através da internet e ser muito confiável.

    
por incognito2 19.11.2011 / 02:01

6 respostas

11

Você já considerou Sneakernet ? Com grandes conjuntos de dados, o envio noturno geralmente será mais rápido e mais barato do que a transferência pela Internet.

    
por 19.11.2011 / 02:38
9

Como? Ou TL; DR

O método mais rápido que encontrei é uma combinação de tar , mbuffer e ssh .

Por exemplo:

tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"

Usando isso, obtive transferências sustentadas de redes locais acima de 950 Mb / s em links de 1 Gb. 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 em uma rede é, de longe, E / S de disco. A resposta para isso é mbuffer ou buffer . Eles são muito semelhantes, mas mbuffer tem algumas vantagens. O tamanho padrão do buffer é de 2 MB para mbuffer e 1 MB para buffer . Buffers maiores são mais propensos a nunca estarem vazios. A escolha de 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 proporcionará o melhor desempenho.

O armazenamento em buffer é o que faz all a diferença! Use-o se você o tiver! Se você não tem, pegue! Usar (m}?buffer mais qualquer coisa é melhor do que qualquer coisa sozinha. é quase literalmente uma panacéia para transferências lentas de arquivos em rede.

Se você estiver transferindo vários arquivos, use tar para agrupá-los em um único fluxo de dados. Se for um único arquivo, você pode usar o cat ou o redirecionamento de E / S. A sobrecarga de tar vs. cat é estatisticamente insignificante, então eu sempre uso tar (ou zfs -send onde eu puder) a menos que já seja um tarball . Nenhum destes é garantido para dar-lhe metadados (e em particular cat não). Se você quiser metadados, deixarei isso como um exercício para você.

Finalmente, usar ssh para um mecanismo de transporte é seguro e carrega muito pouca sobrecarga. Novamente, a sobrecarga de ssh vs. nc é estatisticamente insignificante.

    
por 05.10.2012 / 01:29
8

Você mencionou "rsync", então presumo que 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 pequenos. Você pode até compactá-lo se quiser ...

Tar sem compactação:

No servidor de origem:

tar -cf file.tar /path/to/files/

Em seguida, no final do recebimento:

cd /path/to/files/
tar -xf /path/to/file.tar

Alcatrão com compressão:

No servidor de origem:

tar -czf file.tar.gz /path/to/files/

Em seguida, no final do recebimento:

cd /path/to/files/
tar -xzf /path/to/file.tar.gz

Você simplesmente usaria o rsync para fazer a transferência real dos arquivos (tar | tar.gz).

    
por 19.11.2011 / 03:11
5

Você pode tentar o truque tar e ssh descrito aqui :

tar cvzf - /wwwdata | ssh [email protected] "dd of=/backup/wwwdata.tar.gz"

isso deve ser regravável no seguindo :

tar cvzf - /wwwdata | ssh [email protected] "tar xvf -"

Você perderia os recursos --partial de rsync no processo, no entanto. Se os arquivos não mudarem com muita frequência, viver com um rsync inicial lento pode valer muito a pena, já que será muito mais rápido no futuro.

    
por 21.11.2011 / 17:52
2

Você pode usar várias opções de compactação do rsync.

-z, --compress              compress file data during the transfer
     --compress-level=NUM    explicitly set compression level
     --skip-compress=LIST    skip compressing files with suffix in LIST
A taxa de compactação

para arquivos binários é muito baixa, portanto, é possível ignorar esses arquivos usando --skip-compress, por exemplo, iso, tarballs já arquivados e compactados etc.

    
por 21.11.2011 / 17:18
-7

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, pela LAN.

O SFTP é confiável, eu daria uma chance, pois é fácil de configurar e pode ser mais rápido em alguns casos.

    
por 19.11.2011 / 02:35