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.
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.
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.
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.
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.
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).
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.
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.
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.
Tags rsync file-transfer