## 프로젝트 유틸리티: 파일 분할기 및 다운로더 이 리포지토리에는 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. 터미널에서 스크립트를 실행합니다. ```bash python split_and_hash.py ``` 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과 `requests` 및 `tqdm` 라이브러리가 설치되어 있어야 합니다. pip로 설치할 수 있습니다: ```bash pip install requests tqdm ``` #### 용법 1. `download_all_packages.py` 스크립트를 다운로드합니다. 2. 인수 없이 터미널에서 실행합니다. ```bash python download_all_packages.py ``` 3. 스크립트가 나머지 작업을 처리하여 진행률 표시줄과 상태 메시지를 표시합니다. 완료되면 사용자는 동일한 디렉터리에서 사용할 수 있는 최종 확인된 ZIP 파일을 모두 갖게 됩니다.