덴디 (182.♡.33.72)
2025년 8월 11일 PM 01:35 · 수정됨(08. 22. 03:51)
산재된 출판 데이터를 정리하기 위한 디스크 관리 툴 개발기
배경: 데이터 정리가 시급했던 이유
출판사 업무 특성상 하나의 책 프로젝트를 진행하며 수많은 복사본이 생겨납니다. 이러한 자료들이 지난 몇 년간 2T/3T/4T 외장 하드, NAS, DAS, 클라우드 등 여러 곳에 흩어져 보관되면서 어떤 것이 최종본인지, 어떤 파일이 손상되지 않았는지 파악하기 어려운 상태가 되었습니다.
해결책: 직접 개발한 Python 디스크 분석 툴
이 문제를 해결하기 위해 주말 동안 직접 Python 기반의 디스크 관리 툴을 개발했습니다. 이 툴의 핵심 목표는 여러 저장 장치에 흩어져 있는 모든 파일을 비교 분석하여 데이터의 중복을 제거하고, 가장 완전한 형태의 데이터만 남기는 것입니다.
주요 기능 및 특징
정밀한 중복 파일 탐지:파일 확장자, 용량, 실제 데이터를 정밀하게 비교하여 중복 파일을 찾아냅니다.
손상 파일 복원: 오래되어 손상된 백업 파일들 속에서도 데이터가 온전한 파일만 식별하여 살려내는 기능도 포함되어 있습니다.
시각화 리포트: 단순한 파일 목록뿐만 아니라, Streamlit를 활용한 데이터 시각화와 상세 리포트 기능까지 구현하여 분석 결과를 한 눈에 파악할 수 있도록 했습니다.

진행 상황과 성과
현재까지 분석을 통해 약 200GB에 달하는 중복 파일을 찾아냈습니다. 앞으로 남아있는 3개의 저장 장치를 추가로 비교 분석하여 데이터 정리를 마무리할 계획으로 작업했습니다.
최종적으로는 '원본 1개, 로컬 백업 1개, 클라우드 백업 1개'의 3중화 시스템을 구축하여 데이터를 안전하고 효율적으로 관리하는 것이 목표입니다.
다시 4개월뒤
열심히 했는데 또 파일이 커졌습니다. 그리고 Python 으로 작업할 때 몇일이 걸려서 속도때문에 또 해야할까 생각하다가 방법을 바꿔보기로 했습니다. Rust 와 DuckDB 로 구조를 바꾸기로 해서 작업계획을 세우고 주말 틈틈히 작성을 했습니다.

RDiskCleaner(Rust) vs DirectoryAnalyzer(Python) 성능비교결과
��데이터베이스 규모
- Rust (DuckDB):142,433개 파일, 88.51 MB
- Python(SQLite):1,874,141개파일,848.57MB
⚡쿼리 성능비교
쿼리 유형 | Rust(DuckDB) | Python (SQLite) | 성능 차이 |
|---|---|---|---|
기본통계 | 0.0134초 | 11.8490초 | 887.50배 빠름 |
확장자별통계 | 0.0181초 | 11.0260초 | 610.72배빠름 |
중복파일검색 | 0.1482초 | 12.4075초 | 83.72배 빠름 |
복잡한JOIN | 0.0705초 | 34.5635초 | 490.03배빠름 |
크기분포분석 | 0.0155초 | 10.2772초 | 663.65배 빠름 |
시간별 분석 | 0.0238초 | 10.2511초 | 430.97배 빠름 |
주요 결론
- 성능: Rust + DuckDB가Python+ SQLite보다평균 500배이상 빠름
- 메모리 효율성: RustDB가PythonDB보다9.59배
- 확장성: Rust는 더 적은 파일로도 더 빠른 처리 가능
- 데이터 처리:DuckDB의최적화된 엔진이 SQLite보다 월등히 우수
언제 어떤 것을 사용할까?
- Rust + DuckDB:
- 대용량 데이터 처리
- 실시간 분석이 필요한 경우
- 성능이 중요한 프로덕션 환경
- 메모리 제약이 있는 환경
- Python +SQLite:
- 프로토타이핑 및 개발 단계
- 간단한 데이터분석
- 빠른 개발이 필요한 경우
- 소규모데이터셋
결론적으로, Rust 기반의 RDiskCleaner는Python기반 솔루션대비 압도적인 성능을보여주며, 특히 대용량 데이터처리에서 그 진가를 발휘합니다!
NAS 외장하드 등에서 동일한 파일을 찾아 정리하려는 용도로 만들었으며 상용프로그램보다 2배 이상 이 전에 제가 Python으로 만든 것에 비교해 500배 빠릅니다. 기능별 용도별로 분리해서 작은 유틸리티로 배포해볼 생각은 있는데 오늘도 Yes24서버가 멈춰 죽을 맛인 출판사 사장 그나저나 나는 500배 효율이 좋은 사람일까? ㅠㅠ
https://www.youtube.com/watch?v=iTn0GfJxMMs
댓글 (6)
-
숀숀화이트팤
25.08.11 · 125.♡.111.106
-
RRealtime
→ 숀화이트팤
25.08.13 · 181.♡.169.84
웹소 쓰기 좋은 소재를 찾은 것 같은데요....? -
가가랑비
25.08.11 · 194.♡.154.186
거의 비슷한 작업을 사진 파일에 적용해야 하는데,
구상만 하고 있네요. 백업의 백업, 이 하드 저 하드.
시스템 구현의 의지와 방법론에 항상 자극받고
배우고 있습니다. 좋은 글 감사합니다. -
셀셀빅아이
25.08.13 · 125.♡.200.218
보기만 해도 대단하네요.
저걸 다 연결해서 분석하는데만도 시간 엄청 걸리겠습니다.; -
똥똥멍충이
25.08.14 · 125.♡.124.83
감사합니다. - S
s0wnd
25.08.22 · 219.♡.135.185
저는 사진이 icloud, google cloud, synology nas 이렇게 보관중이라서 한번 적용해보려고 해도 시간이 안나네요;;;
댓글을 작성하려면 이 필요합니다.
판교역 앞 치킨집이 디버깅 맛집이라는 말은 현실성이라도 있지...ㄷㄷㄷ