Utilitários de projeto: divisor e downloader de arquivos¶
Este repositório inclui dois scripts Python poderosos projetados para gerenciar a distribuição e download de arquivos grandes por meio de versões do GitHub.
split_and_hash.py: Um utilitário para proprietários de repositórios dividirem arquivos grandes em partes menores e gerarem um manifesto de soma de verificação completo e verificável.download_all_packages.py: Uma ferramenta robusta para os usuários finais baixarem, verificarem e remontarem automaticamente esses arquivos de várias partes, garantindo a integridade dos dados do início ao fim.
1. Script de divisão de arquivos e geração de soma de verificação (split_and_hash.py)¶
Este script é destinado ao mantenedor do repositório. Ele prepara arquivos grandes para distribuição em plataformas como GitHub Releases, que possuem limites individuais de tamanho de arquivo.
Propósito¶
O objetivo principal é pegar um único arquivo grande (por exemplo, vosk-model-de-0.21.zip) e executar duas ações críticas:
Divida o arquivo em uma série de partes menores e numeradas.
Gere um arquivo de manifesto único e abrangente (
.sha256sums.txt) que contém as somas de verificação para o arquivo original completo e cada parte individual.
Este manifesto completo é a chave para garantir 100% de integridade dos dados para o usuário final.
Principais recursos¶
Divisão padronizada: Divide arquivos em blocos de 100 MB (configuráveis no script).
Nomenclatura consistente: Cria peças com um prefixo
Z_(por exemplo,Z_vosk-model-de-0.21.zip.part.aa). O prefixoZ_garante classificação e manuseio adequados em vários sistemas.Manifesto de integridade completo: O arquivo
.sha256sums.txtgerado é estruturado para máxima confiabilidade. Inclui:O hash SHA256 do arquivo completo original.
O hash SHA256 de cada parte que foi criada.
Uso para uma versão do GitHub¶
Coloque o arquivo grande (por exemplo,
vosk-model-de-0.21.zip) em um diretório com o scriptsplit_and_hash.py.Execute o script em seu terminal:
python split_and_hash.py <your-large-file.zip>
O script irá gerar todos os arquivos
Z_...part.xxe o arquivo...sha256sums.txtcorrespondente.Ao criar uma nova versão do GitHub, carregue todos os arquivos gerados: os arquivos de parte e o arquivo de manifesto único.
Repita esse processo para cada arquivo grande que deseja distribuir.
2. Downloader e verificador automatizado de pacotes (download_all_packages.py)¶
Este script é destinado ao usuário final. Ele fornece uma solução simples de um comando para baixar e remontar com segurança todos os pacotes oferecidos na versão do GitHub.
Propósito¶
Ele automatiza o processo complexo e sujeito a erros de baixar dezenas de partes de arquivos, verificar cada uma delas e remontá-las corretamente. Ele usa os manifestos de soma de verificação fornecidos no lançamento para garantir que o arquivo final montado seja uma cópia perfeita e não corrompida do original.
Principais recursos¶
Descoberta automática: O script se conecta à API do GitHub para encontrar automaticamente todos os “pacotes” disponíveis na versão, procurando por arquivos
.sha256sums.txt. Nenhuma configuração manual de nomes de arquivos é necessária.Processo de Integridade em Primeiro Lugar: Para cada pacote, ele baixa o arquivo de manifesto primeiro para obter a lista de partes necessárias e suas somas de verificação corretas.
Verificação parte por parte: Ele baixa uma parte de cada vez e verifica imediatamente seu hash SHA256.
Repetição automática em caso de corrupção: Se uma parte baixada estiver corrompida (o hash não corresponde), o script a exclui automaticamente e a baixa novamente, garantindo um download limpo.
Remontagem Inteligente: Depois que todas as partes de um pacote são baixadas e verificadas, ele as mescla na ordem alfabética correta (
.aa,.ab,.ac…) para reconstruir o grande arquivo original.Verificação final: Após a remontagem, ele calcula o hash SHA256 do arquivo final completo e o verifica em relação ao hash mestre encontrado no manifesto. Isso fornece confirmação de sucesso de ponta a ponta.
Resiliente e tolerante: O script é robusto contra pequenas inconsistências de nomenclatura, como
Z_vs.z_, garantindo uma experiência de usuário tranquila.Limpeza automatizada: Depois que um pacote é compilado e verificado com sucesso, o script exclui os arquivos de peças baixados para economizar espaço em disco.
Pré-requisitos¶
O usuário deve ter o Python e as bibliotecas requests e tqdm instaladas. Eles podem ser instalados com pip:
pip install requests tqdm
Uso¶
Baixe o script
download_all_packages.py.Execute-o no terminal sem argumentos:
python download_all_packages.pyO script cuidará do resto, exibindo barras de progresso e mensagens de status. Após a conclusão, o usuário terá todos os arquivos ZIP verificados e finais prontos para uso no mesmo diretório.