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

2

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

Eu tenho várias opções:

1. Faça o download dos arquivos no disco / sistema de arquivos normal e TAR usando o comando normal unix tar .

2. Crie um arquivo TAR em branco e, em seguida, monte-o no modo de gravação usando archivemount e, em seguida, inicie o download do torrent no caminho montado.

3. Similar à opção 2 mas usando o arquivo ZIP em vez de tar.

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

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

Qual caminho devo considerar?

Obrigado.

    
por Pedram A 15.10.2015 / 10:43

1 resposta

0

O melhor desempenho ainda é provavelmente 4, se o disco for realmente o seu verdadeiro gargalo. Isso evita que você precise gastar preciosas IOPS para copiar arquivos de um lugar para outro.

Além disso, a opção 4 é realmente a única opção que permitirá que o cliente baixe instantaneamente o torrent quando o servidor terminar de fazer o download, o que significa que o cliente pode realmente acessar seus dados mais rapidamente. Além disso, você tem a opção de permitir ao usuário fazer o download de arquivos individuais (simples, já que eles estão lá no seu sistema de arquivos).

Eu investigaria por que o alcatrão estava lhe dando um desempenho tão ruim. Eu realmente duvido que seja o checksum que foi o seu problema, uma vez que eles nem estão nos dados, tanto quanto me lembro. Qualquer motivo você não pode simplesmente canalizar a saída do GNU tar diretamente no navegador da web em vez de escrever seu próprio compactador de alcatrão?

Um desafio seria fornecer uma extensão de conteúdo correta para o cliente com essa abordagem. Se você não se importa com isso, você pode simplesmente omitir o envio, e então seu cliente simplesmente não verá um contador percentual para o download. Isso pode não importar, dependendo do seu aplicativo.

    
por 15.10.2015 / 11:01