개발 일지
(Python_backup tool) 레거시 스크립트 기능을 메인 앱에 통합하기 — 해시 비교로 불필요한 덮어쓰기 막기
#Python#자동화#리팩토링
개요
같은 사내 환경에서 예전부터 독립적으로 쓰이던 별도의 소규모 동기화 스크립트가 있었습니다. 네트워크 저장소에 있는 특정 오피스 매크로 파일을 사용자 PC의 지정 경로로 복사해주는 역할이었는데, 사용자가 매번 두 개의 프로그램을 따로 실행해야 하는 불편함이 있어 메인 백업 툴 안으로 통합했습니다.
기술 선택 이유
- 두 프로그램을 유지보수하는 대신 하나로 합치면, 접속 정보나 연결 로직을 중복 관리할 필요가 없어짐
- 기존 스크립트는 단순 콘솔 출력(
print) 기반이었는데, 메인 앱의 로깅 체계에 맞춰 정리하면서 문제 발생 시 원인 추적이 쉬워짐
핵심 구현 포인트
1. 변경 여부를 해시로 판단하기
매번 무조건 덮어쓰기 하는 대신, 원본과 대상 파일의 해시 값을 비교해서 실제로 내용이 달라졌을 때만 복사하도록 했습니다. 파일 내용이 같으면 복사를 건너뛰어 불필요한 디스크 쓰기와 파일 잠금 충돌을 줄였습니다.
동기화(원본, 대상):
원본_해시 = 해시_계산(원본)
대상_해시 = 대상 존재하면 해시_계산(대상) 아니면 없음
원본_해시 == 대상_해시 이면:
건너뜀
아니면:
복사(원본 → 대상)
결과 = (성공여부, 메시지)
반환 결과
2. 앱 시작 시 자동 연결과 자동 동기화
접속 정보가 이미 저장되어 있으면, 앱을 켜자마자 별도 클릭 없이 자동으로 연결을 시도하고 연결에 성공하면 곧바로 매크로 동기화까지 이어지도록 했습니다. 사용자 입장에서는 "프로그램만 켜두면 알아서 최신 상태가 유지되는" 경험을 만드는 것이 목표였습니다.
3. 설정 저장 항목 확장
동기화 대상 경로와 파일명을 기존 접속 정보 저장 구조에 함께 저장하도록 확장해서, 한 번 설정해두면 다음 실행부터는 재입력 없이 그대로 재사용되도록 했습니다.
회고
- 별개로 쓰이던 스크립트를 메인 앱에 흡수시킬 때는 "그대로 이식"하지 않고, 기존 앱의 로깅·설정 저장 방식에 맞춰 다시 정리하는 편이 이후 유지보수 측면에서 훨씬 나았습니다.
- 해시 비교로 "달라진 것만 복사"하는 패턴은 이후에도 비슷한 동기화 기능을 만들 때 기본 원칙으로 삼게 됐습니다.
#Python#자동화#리팩토링
이슈와 관련된 다른 인사이트
DEV
개발 일지(Python_backup tool) 백업 툴에 '다운로드' 기능을 추가하며 배운 방향 독립적 설계
DEV
개발 일지