피드로 돌아가기
Dev.toDevOps
원문 읽기
Async Parallel Scan 기반 12GB 불필요 빌드 아티팩트 제거 도구 설계
Blazing-fast terminal cleanup tool for heavy build artifacts
AI 요약
Context
특정 패턴(node_modules)만 처리하는 기존 도구들의 제한적인 탐색 범위로 인한 디스크 공간 낭비 지속. 수동 삭제 시 발생하는 반복적인 du -sh 및 rm -rf 작업의 높은 공수와 낮은 효율성 문제 해결 필요.
Technical Solution
- fs.promises.readdir 기반의 Async Parallel Traversal 구조를 통한 디렉토리 스캔 속도 극대화
- Streaming Iterator 기반의 크기 계산 로직을 적용하여 대규모 폴더 스캔 시 Memory Overflow 방지
- Promise.allSettled를 이용한 삭제 프로세스 설계로 개별 파일 권한 에러가 전체 작업에 영향을 주지 않는 Fault Tolerance 확보
- .git 등 불필요한 Hidden Directory를 스캔 대상에서 제외하여 I/O 부하 감소 및 탐색 시간 단축
- @clack/prompts 기반의 Interactive TUI를 구축하여 사용자의 최종 삭제 의사결정 단계 추가
- --dry-run 플래그를 통한 삭제 전 미리보기 기능으로 데이터 손실 리스크 최소화
Impact
- 단일 머신 기준 약 12GB의 디스크 공간 회수
- 수천 개의 폴더가 포함된 홈 디렉토리 전체 스캔을 10초 이내에 완료
실천 포인트
- 대량의 파일 시스템 스캔 시 재귀적 동기 함수 대신 Async Parallel 구조 검토 - 메모리 제약이 있는 환경에서 폴더 크기 계산 시 Streaming 방식의 반복자 활용 - 일괄 삭제 작업 설계 시 개별 실패가 전체 프로세스를 중단시키지 않도록 Promise.allSettled 적용