Arquivando vários arquivos da maneira mais rápida possível

Arquivando vários arquivos da maneira mais rápida possível

Estou implementando um sistema de download e arquivamento de torrents. Quero baixar um arquivo torrent (que contém vários arquivos pequenos) e arquivá-lo. O desempenho do meu disco é ruim. então eu quero uma maneira eficiente de arquivar arquivos.

Tenho várias opções:

1.Baixe os arquivos no disco/sistema de arquivos normal e depois TAR usando taro comando unix normal.

2.Crie um arquivo TAR em branco e monte-o no modo de gravação usando archivemounte comece a baixar o torrent no caminho montado.

3.Semelhante à opção2mas usando arquivo ZIP em vez de tar.

4.Como desejo entregar arquivos por meio de um navegador da web: Implemente um software/script para TAR uma pasta instantaneamente. (escrevi um script python (uWsgi/Nginx) anos atrás para fazer isso. Mas como o tar requer uma soma de verificação para cada arquivo. O desempenho foi muito ruim)

5.Encontre um cliente de torrent que possa gravar diretamente em um arquivo TAR/Zip. (Muito improvável)

Qual caminho devo considerar?

Obrigado.

Responder1

O melhor desempenho provavelmente ainda será 4, se o disco for realmente seu verdadeiro gargalo. Isso evita que você gaste IOPS preciosos na cópia de arquivos de um lugar para outro.

Além disso, a opção 4 é realmente a única opção que permitirá ao cliente baixar instantaneamente o torrent assim que o download do servidor terminar, o que significa que o cliente pode realmente acessar seus dados mais cedo. Além disso, dessa forma você tem a opção de permitir facilmente que o usuário baixe arquivos individuais (muito simples, já que eles estão apenas no seu sistema de arquivos).

Eu investigaria por que o tar estava apresentando um desempenho tão ruim. Eu realmente duvido que sejam as somas de verificação o seu problema, já que elas nem estão nos dados, pelo que me lembro. Alguma razão pela qual você não pode simplesmente canalizar a saída do tar GNU diretamente para o navegador da web, em vez de escrever seu próprio compactador tar?

Um desafio seria fornecer um comprimento de conteúdo correto ao cliente com esta abordagem. Se você não se importa com isso, pode simplesmente omitir o envio e seu cliente simplesmente não verá um contador de porcentagem para o download. Isso pode não importar dependendo da sua aplicação.

informação relacionada