AIXLOGIS 로고AIXLOGIS
개발 일지

(Python_backup tool)파일 탐색기에 안전장치 더하기 — 충돌 감지와 휴지통 방식 삭제

#Python#UX#안전설계#데스크톱앱

개요

백업 대상 폴더를 고를 때 쓰는 네트워크 탐색기 UI를 개선하면서, 두 가지 실사용 문제를 함께 해결했습니다. 하나는 "백업 대상에 이미 같은 이름의 파일이 있으면 어떻게 되는가", 다른 하나는 "실수로 삭제한 파일을 되돌릴 방법이 있는가"였습니다.

핵심 구현 포인트

1. 탐색기에서 폴더와 파일을 함께 보여주기

기존에는 폴더만 목록에 표시됐지만, 파일까지 함께 보여주고 정렬 순서도 폴더 → 파일 순으로 그룹화했습니다. 그리고 원본 목록에 있는 파일명과 같은 이름이 대상 폴더에 이미 있으면 눈에 띄는 색으로 강조 표시해서, 사용자가 폴더를 선택하는 시점에 이미 충돌 가능성을 미리 인지할 수 있도록 했습니다.

2. 충돌 정책을 사용자가 직접 선택하게 하기

폴더 선택을 확정하는 시점에 원본 파일명 목록과 대상 폴더의 파일명 목록을 비교해서 겹치는 항목을 계산하고, 겹치는 항목이 있으면 3지선다 확인창을 띄우도록 했습니다.

충돌 파일 있음?
  → [예]  덮어쓰기
  → [아니오]  이름 뒤에 타임스탬프를 붙여 새 이름으로 저장
  → [취소]  폴더를 다시 선택하도록 대화상자 유지

선택된 정책은 이후 백업 실행 스레드까지 그대로 전달되어, 폴더 안의 모든 하위 파일에 일관되게 적용됩니다.

3. 되돌릴 수 있는 삭제

탐색기에서 파일이나 폴더를 삭제할 수 있는 기능을 추가하면서, "영구 삭제"는 의도적으로 만들지 않았습니다. 삭제 버튼을 누르면 2단계 확인을 거친 뒤, 실제로는 파일을 완전히 지우는 대신 전용 임시 보관 폴더로 이동시키고 타임스탬프를 이름 앞에 붙여 원본과 구분되게 했습니다.

삭제 요청 → 2단계 확인
  → 실제_삭제(target) 대신
     이동(target → 임시보관_폴더/타임스탬프_원본이름)

루트 폴더 자체와 임시 보관 폴더 자체는 삭제 대상에서 제외해, 실수로 전체 백업 구조가 사라지는 상황을 막았습니다.

회고

  • "삭제"라는 동작은 되돌릴 수 없다는 전제로 UI를 설계하는 습관이 이후 여러 기능에서도 기본값이 됐습니다. 완전 삭제 대신 임시 보관 방식을 기본으로 채택한 뒤로, 실수로 인한 데이터 손실 문의가 사실상 없어졌습니다.
  • 충돌 가능성을 "복사가 실패한 뒤에 알려주는" 대신 "선택 단계에서 미리 보여주는" 방향으로 바꾼 것이, 사용자 입장에서 체감 안정성을 크게 높여준 부분이었습니다.
#Python#UX#안전설계#데스크톱앱

이슈와 관련된 다른 인사이트

DEV
개발 일지

(Python_backup tool) 종료 버튼을 눌렀는데 앱이 멈춘 것처럼 보이는 문제 해결하기

DEV
개발 일지

(Python_backup tool) 자동 동기화 기능에 사용자 제어권 추가하기

DEV
개발 일지

(Python_backup tool) PyInstaller로 패키징한 데스크톱 앱, 재실행하면 설정이 초기화되는 문제 해결기