스레드
이온디

집에 굴러다니던 하드 6개(10TB 외장, 4TB, 2TB 두 개, 1TB, 노트북 SSD)를 우분투 PC 하나에 모아 NAS 로 쓰고 있습니다. 그런데 몇 년 동안 복사·이동을 반복하다 보니 같은 폴더가 디스크마다 흩어지고, 옮기다 끊겨 반쯤 잘린 사본까지 섞여 버렸습니다. 어느 게 완전본인지 모르니 지우지도 못하고요.

그래서 5일 동안(9/20~9/24) Claude Code 와 같이 NAS 디스크 모니터라는 데스크톱 앱을 만들었습니다. 커밋 195개, Rust(Tauri) + React(HeroUI) 입니다.

무엇을 하는 앱인가

  • 드라이브 용량 — 디스크별 사용률·온도·회전수·실측 속도, CMR/SMR 기록 방식, 용도 등급(A~E). "이 디스크엔 무엇을 넣고 무엇을 넣지 말 것"까지 알려 줍니다.
  • 파일 이동 — 두 패널 탐색기. 이동·복사는 rsync 대기열로 돌고, 일시정지·재개·취소, 완료 후 예상 여유 공간, 85% 넘는 '속도 저하 구간' 경고.
  • 중복 전송 방지 — 이미 전송 중인 항목은 회색 처리, 같은 원본을 여러 곳에 보내면 경고.
  • 인덱스·중복 찾기 — 디스크 전체 파일 목록을 서버에 저장해 두고, 이름·크기 → 해시 순으로 진짜 중복만 골라냅니다. 이름만 같고 내용이 다르면 중복으로 치지 않습니다.
  • 휴지통 + 원본 비교 — 지우지 않고 _cleanup_trash/날짜 로 옮기며, 원래 위치와 비교 결과(해시 일치·옛판·zip↔폴더)를 같이 기록해 되돌릴 수 있습니다.
  • 전송 잔재 — 중간에 끊긴 rsync 임시 파일을 찾아 줍니다.
  • 디스크 관리 — 연결 해제·다시 마운트·e2fsck·조각모음·SMART 점검·포맷(모델·시리얼 확인, 'FORMAT' 입력, 사전 점검까지).
  • 서버 연결 안 됨 화면 — 자동 재시도, Wake-on-LAN 으로 켜기, Tailscale·mDNS 다른 주소, 같은 네트워크에서 서버 찾기, 오프라인으로 계속.

만들면서 배운 것

  • SMR 디스크에 대량 쓰기를 하면 속도가 급락합니다. 409GB 를 한 번에 넣자 53MB/s 까지 떨어졌습니다. 그래서 디스크마다 '넣을 것 / 넣지 말 것'을 앱이 안내하게 했습니다.
  • 자동 정리는 이름·내용이 모두 같을 때만. zip ↔ 폴더, 이름 다른 동일 내용은 목록만 보여 주고 사람이 확인한 뒤 휴지통으로 보냅니다. 삭제는 없습니다.
  • 전송 중에는 빌드·재시작 금지. 앱을 다시 띄우다 진행 중이던 rsync 가 끊긴 뒤로, 재시작 전에 서버 쪽 전송을 먼저 확인하는 규칙을 만들었습니다.
  • 화면은 먼저 디자인 시안(12장)으로 잡고, 공용 토큰·부품은 별도 패키지로 빼서 다크/라이트·메인 색 프리셋을 입혔습니다.

화면

(아래 이미지의 폴더 이름·주소는 공개용 예시로 바꾼 것입니다.)

1. 파일 이동

NAS 디스크 모니터 — 파일 이동

2. 드라이브 용량

NAS 디스크 모니터 — 드라이브 용량

3. 작업 로그

NAS 디스크 모니터 — 작업 로그

4. 서버 연결 안 됨

NAS 디스크 모니터 — 서버 연결 안 됨

5. 인덱스 · 중복 찾기

NAS 디스크 모니터 — 인덱스 · 중복 찾기

6. 컴포넌트와 토큰

NAS 디스크 모니터 — 컴포넌트와 토큰

7. 파일 이동 — 상세 상태

NAS 디스크 모니터 — 파일 이동 — 상세 상태

8. 휴지통 · 원본 비교

NAS 디스크 모니터 — 휴지통 · 원본 비교

9. 표 보기 · 역할 도움말 · 전송 잔재

NAS 디스크 모니터 — 표 보기 · 역할 도움말 · 전송 잔재

10. 디스크 상세 · 메뉴

NAS 디스크 모니터 — 디스크 상세 · 메뉴

11. 창 모음 — 파일

NAS 디스크 모니터 — 창 모음 — 파일

12. 창 모음 — 디스크·서버

NAS 디스크 모니터 — 창 모음 — 디스크·서버

집에 굴러다니던 하드 6개(10TB 외장, 4TB, 2TB 두 개, 1TB, 노트북 SSD)를 우분투 PC…
0 좋아요 0 답글 38 조회