프로젝트 유틸리티: 파일 분할기 및 다운로더

이 리포지토리에는 GitHub 릴리스를 통해 대용량 파일의 배포 및 다운로드를 관리하도록 설계된 두 가지 강력한 Python 스크립트가 포함되어 있습니다.

  1. split_and_hash.py: 저장소 소유자가 대용량 파일을 작은 부분으로 분할하고 완전하고 검증 가능한 체크섬 매니페스트를 생성하는 유틸리티입니다.

  2. download_all_packages.py: 최종 사용자가 이러한 다중 부분 파일을 자동으로 다운로드, 확인 및 재조립하여 처음부터 끝까지 데이터 무결성을 보장하는 강력한 도구입니다.


1. 파일 분할 및 체크섬 생성 스크립트(split_and_hash.py)

이 스크립트는 저장소 관리자를 위한 것입니다. 개별 파일 크기 제한이 있는 GitHub 릴리스와 같은 플랫폼에 배포할 대용량 파일을 준비합니다.

목적

주요 목표는 단일 대용량 파일(예: vosk-model-de-0.21.zip)을 가져와 두 가지 중요한 작업을 수행하는 것입니다.

  1. 파일을 일련의 작은 번호가 매겨진 부분으로 분할합니다.

  2. 원본, 전체 파일 및 모든 개별 부분에 대한 체크섬이 포함된 단일 포괄적인 매니페스트 파일(.sha256sums.txt)을 생성합니다.

이 완전한 매니페스트는 최종 사용자를 위한 100% 데이터 무결성을 보장하는 열쇠입니다.

주요 특징

  • 표준화된 분할: 파일을 100MB 청크로 분할합니다(스크립트 내에서 구성 가능).

  • 일관된 이름 지정: Z_ 접두사가 있는 부품을 생성합니다(예: Z_vosk-model-de-0.21.zip.part.aa). Z_ 접두사는 다양한 시스템에서 적절한 정렬 및 처리를 보장합니다.

  • 완전한 무결성 매니페스트: 생성된 .sha256sums.txt 파일은 안정성을 극대화하도록 구성되었습니다. 여기에는 다음이 포함됩니다.

  • 원본, 전체 파일의 SHA256 해시입니다.

  • 생성된 모든 단일 부분의 SHA256 해시입니다.

GitHub 릴리스의 사용법

  1. split_and_hash.py 스크립트가 있는 디렉토리에 대용량 파일(예: vosk-model-de-0.21.zip)을 배치합니다.

  2. 터미널에서 스크립트를 실행합니다.

    python split_and_hash.py <your-large-file.zip>
    
  3. 스크립트는 모든 Z_...part.xx 파일과 해당 ...sha256sums.txt 파일을 생성합니다.

  4. 새 GitHub 릴리스를 생성할 때 생성된 파일(부분 파일과 단일 매니페스트 파일) 모두를 업로드합니다.

  5. 배포하려는 모든 대용량 파일에 대해 이 과정을 반복합니다.


2. 자동 패키지 다운로더 및 검증기(download_all_packages.py)

이 스크립트는 최종 사용자를 위한 것입니다. GitHub 릴리스에서 제공되는 모든 패키지를 안정적으로 다운로드하고 재조립할 수 있는 간단한 단일 명령 솔루션을 제공합니다.

목적

수십 개의 파일 부분을 다운로드하고 각 부분을 확인하고 올바르게 재조립하는 복잡하고 오류가 발생하기 쉬운 프로세스를 자동화합니다. 릴리스에 제공된 체크섬 매니페스트를 사용하여 최종 조립 파일이 완벽하고 손상되지 않은 원본 복사본임을 보장합니다.

주요 특징

  • 자동 검색: 스크립트는 GitHub API에 연결하여 .sha256sums.txt 파일을 찾아 릴리스에서 사용 가능한 모든 “패키지”를 자동으로 찾습니다. 파일 이름을 수동으로 구성할 필요가 없습니다.

  • 무결성 우선 프로세스: 각 패키지에 대해 먼저 매니페스트 파일을 다운로드하여 필수 부품 목록과 올바른 체크섬을 가져옵니다.

  • 부분별 확인: 한 번에 한 부분씩 다운로드하고 즉시 SHA256 해시를 확인합니다.

  • 손상 시 자동 재시도: 다운로드한 부분이 손상된 경우(해시가 일치하지 않음) 스크립트가 자동으로 해당 부분을 삭제하고 다시 다운로드하여 깨끗한 다운로드를 보장합니다.

  • 지능형 재조립: 패키지의 모든 부분이 다운로드되고 확인되면 올바른 알파벳 순서(.aa, .ab, .ac…)로 병합하여 원본 대용량 파일을 재구성합니다.

  • 최종 확인: 재조립 후 최종 전체 파일의 SHA256 해시를 계산하고 매니페스트에 있는 마스터 해시와 비교하여 확인합니다. 이는 성공에 대한 엔드투엔드 확인을 제공합니다.

  • 복원력과 관용성: 이 스크립트는 Z_z_와 같은 사소한 명명 불일치에 대해 강력하여 원활한 사용자 경험을 보장합니다.

  • 자동 정리: 패키지가 성공적으로 빌드되고 확인된 후 스크립트는 다운로드한 부분 파일을 삭제하여 디스크 공간을 절약합니다.

전제조건

사용자는 Python과 requeststqdm 라이브러리가 설치되어 있어야 합니다. pip로 설치할 수 있습니다:

pip install requests tqdm

용법

  1. download_all_packages.py 스크립트를 다운로드합니다.

  2. 인수 없이 터미널에서 실행합니다.

    python download_all_packages.py
    
  3. 스크립트가 나머지 작업을 처리하여 진행률 표시줄과 상태 메시지를 표시합니다. 완료되면 사용자는 동일한 디렉터리에서 사용할 수 있는 최종 확인된 ZIP 파일을 모두 갖게 됩니다.