서비스·SW
출판사 디스크 관리 툴 Python->Rust로 500배 빠르게
덴디

Lv.1 덴디 (182.♡.33.72)

2025년 8월 11일 PM 01:35 · 수정됨(08. 22. 03:51)

조회 2,028 공감 0

산재된 출판 데이터를 정리하기 위한 디스크 관리 툴 개발기

배경: 데이터 정리가 시급했던 이유

출판사 업무 특성상 하나의 책 프로젝트를 진행하며 수많은 복사본이 생겨납니다. 이러한 자료들이 지난 몇 년간 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배 빠름

주요 결론

  1. 성능: Rust + DuckDB가Python+ SQLite보다평균 500배이상 빠름
  1. 메모리 효율성: RustDB가PythonDB보다9.59배 
  1. 확장성: Rust는 더 적은 파일로도 더 빠른 처리 가능
  1. 데이터 처리:DuckDB의최적화된 엔진이 SQLite보다 월등히 우수

언제 어떤 것을 사용할까?

  •  Rust + DuckDB:
  • 대용량 데이터 처리
  • 실시간 분석이 필요한 경우
  • 성능이 중요한 프로덕션 환경
  • 메모리 제약이 있는 환경
  • Python +SQLite:
  • 프로토타이핑 및 개발 단계
  • 간단한 데이터분석
  • 빠른 개발이 필요한 경우
  • 소규모데이터셋

결론적으로, Rust 기반의 RDiskCleaner는Python기반 솔루션대비 압도적인 성능을보여주며, 특히 대용량 데이터처리에서 그 진가를 발휘합니다!

NAS 외장하드 등에서 동일한 파일을 찾아 정리하려는 용도로 만들었으며 상용프로그램보다 2배 이상 이 전에 제가 Python으로 만든 것에 비교해 500배 빠릅니다. 기능별 용도별로 분리해서 작은 유틸리티로 배포해볼 생각은 있는데 오늘도 Yes24서버가 멈춰 죽을 맛인 출판사 사장 그나저나 나는 500배 효율이 좋은 사람일까? ㅠㅠ

https://www.youtube.com/watch?v=iTn0GfJxMMs


댓글 (6)

  • 숀화이트팤

    숀화이트팤 Lv.1

    25.08.11 · 125.♡.111.106

    네? 출판사 사장님이 Rust를 직접 코딩하신다구요?
    판교역 앞 치킨집이 디버깅 맛집이라는 말은 현실성이라도 있지...ㄷㄷㄷ
  • Realtime

    Realtime Lv.1 → 숀화이트팤

    25.08.13 · 181.♡.169.84

    웹소 쓰기 좋은 소재를 찾은 것 같은데요....?
  • 가랑비

    가랑비 Lv.1

    25.08.11 · 194.♡.154.186

    거의 비슷한 작업을 사진 파일에 적용해야 하는데,
    구상만 하고 있네요. 백업의 백업, 이 하드 저 하드.
    시스템 구현의 의지와 방법론에 항상 자극받고
    배우고 있습니다. 좋은 글 감사합니다.
  • 셀빅아이

    셀빅아이 Lv.1

    25.08.13 · 125.♡.200.218

    보기만 해도 대단하네요.
    저걸 다 연결해서 분석하는데만도 시간 엄청 걸리겠습니다.;
  • 똥멍충이

    똥멍충이 Lv.1

    25.08.14 · 125.♡.124.83

    감사합니다.
  • S

    s0wnd Lv.1

    25.08.22 · 219.♡.135.185

    저는 사진이 icloud, google cloud, synology nas 이렇게 보관중이라서 한번 적용해보려고 해도 시간이 안나네요;;;

댓글을 작성하려면 이 필요합니다.