성공 12,481 · 건너뜀 0 · 실패 0 · 남은 용량 8.6 GB
D:\사진 2024\2024-07\IMG_4821.ARW
탐색기의 복사 대화상자는 중간에 끊기면 어디까지 갔는지 알려주지 않습니다. SmartCopy는 작업을 큐에 담아 일시정지·재개하고, 복사한 파일을 검증한 뒤에야 이동의 원본을 지웁니다. USB를 뽑아도, NAS가 끊겨도, 재부팅해도 진행 상황이 남습니다.
설치 없이 실행 · 관리자 권한 불필요 · Windows 10 / 11 (64비트)
성공 12,481 · 건너뜀 0 · 실패 0 · 남은 용량 8.6 GB
D:\사진 2024\2024-07\IMG_4821.ARW
장치 연결 끊김 — 다시 붙으면 이어서 진행합니다 (WinError 64)
이동은 세 단계입니다. 앞 단계가 끝나야 다음으로 넘어갑니다.
대상에 .scpart 임시 파일로 씁니다. 다 쓴 뒤에야 최종 이름으로 바꾸므로, 중간에 멈춰도 반쯤 쓰인 파일이 정상 파일처럼 보이지 않습니다.
크기와 수정 시각을 맞춰보고, 필요하면 SHA-256까지 비교합니다. 어긋나면 그 복사본을 지우고 다시 복사합니다.
검증을 통과한 파일만 원본을 지웁니다. 건너뛴 파일의 원본은 그대로 남고, 빈 폴더는 마지막에 정리합니다.
같은 드라이브 안에서의 이동은 실제로 옮겨 담지 않고 이름만 바꿉니다 — 빠르고, 중간 상태가 아예 생기지 않습니다. 다른 드라이브로 갈 때만 위의 세 단계를 밟습니다.
작업을 만들 때 미리 정해두거나, 그때그때 물어보게 할 수 있습니다. 물어보기로 두면 대화상자에서 이후 충돌에도 같은 선택 적용을 켤 수 있습니다.
| 정책 | 하는 일 | 이럴 때 |
|---|---|---|
| overwrite | 대상을 덮어씁니다 | 원본이 항상 최신인 단방향 백업 |
| skip | 건너뛰고 원본을 그대로 둡니다 | 빠진 것만 채워 넣을 때 |
| rename | 이름 (1).확장자로 새로 만듭니다 | 둘 다 남겨야 할 때 (기본값) |
| keep_newer | 수정 시각이 더 최근인 쪽을 남깁니다 | 양쪽에서 편집한 폴더를 합칠 때 |
| keep_larger | 크기가 더 큰 쪽을 남깁니다 | 잘려서 저장된 파일이 섞여 있을 때 |
| ask | 양쪽의 크기·시각을 보여주고 물어봅니다 | 건별로 판단해야 할 때 |
진행 상황은 화면에만 있는 게 아니라 디스크에 남습니다. 그래서 앱을 껐다 켜도, 전원이 나가도 처음부터 다시 하지 않습니다.
끝난 파일을 한 줄씩 덧붙여 기록합니다. 덧붙이기만 하므로 전원이 나가도 손상은 마지막 한 줄에서 끝나고, 그 줄만 버립니다.
%LOCALAPPDATA%\SmartCopy\jobs\
큰 파일은 .scpart에 어디까지 썼는지가 그대로 남습니다. 옆에 둔 메타 파일로 원본의 크기·수정 시각이 그대로인지 확인한 뒤에만 이어받습니다.
장치가 사라지면 실패로 처리하지 않고 재연결 대기 상태로 멈춥니다. 다시 붙으면 중단 지점부터 이어서 진행합니다.
WinError 21 · 53 · 59 · 64 · 1167
다른 프로그램이 잠근 파일 같은 일시적 오류는 0.5초 → 2초 → 5초 간격으로 자동 재시도합니다. 그래도 안 되면 실패 목록에 남고, 재시도 버튼으로 그 파일들만 다시 돌립니다 — 폴더 구조는 그대로 유지한 채로.
| 다루는 것 | 방식 |
|---|---|
| 청크 크기 | 매체를 보고 고릅니다 — 고정 디스크 4 MB, USB 1 MB, 네트워크 256 KB. 일시정지·취소는 청크 경계에서 반응하므로 무작정 키우지 않습니다. |
| 동시 작업 | 기본 2개. 같은 디스크를 여러 작업이 동시에 때리면 전체가 느려지기 때문입니다. |
| 우선순위 | 작업마다 우선순위를 두고, 높은 것부터 내보냅니다. 같으면 담은 순서대로. |
| 대량 열거 | scandir 기반으로 훑고, 심볼릭 링크·정션은 따라가지 않아 순환 복사에 빠지지 않습니다. |
| 긴 경로 · 한글 | 260자 제한을 우회하는 경로 접두사를 붙여 다룹니다. 유니코드 이름은 그대로. |
| 진행률 갱신 | 0.2초에 한 번으로 묶습니다 — 10만 개에서 화면 갱신이 복사보다 비싸지지 않도록. |
| 동시 파일 | 한 작업 안에서 파일 여러 개를 동시에 복사합니다(최대 16). 작은 파일이 많거나 NAS 일 때 효과가 큽니다. |
| 속도 제한 | 초당 바이트 상한. 백업을 돌리면서 회의를 해야 할 때. 워커들이 같은 버킷을 공유합니다. |
| 걸러내기 | 포함/제외 패턴, 폴더 통째 제외, 크기·날짜 범위, 숨김 파일 제외. |
| 미리보기 | 아무것도 쓰지 않고 무엇이 옮겨질지만 계산합니다. |
| 시작 전 점검 | 대상 여유 공간, 대상이 원본 하위인지, 보호 경로인지, 원본 존재 여부를 먼저 확인합니다. |
창 UI 가 지금 옮기는 중을 본다면, 콘솔은 전체를 봅니다. 큐·기록·복구·로그·검사가 한 화면에 있습니다.
smartcopy-cli admin 또는 창 UI 의 관리자 콘솔 버튼으로 엽니다.
콘솔은 127.0.0.1 에만 열리고, 실행할 때마다 새로 만든 토큰이 있어야 들어갑니다.
바깥 도메인이 이 주소를 가리키게 만드는 수법(DNS 리바인딩)은 Host 검사에서,
다른 사이트가 브라우저를 시켜 보내는 요청은 Origin 검사에서 막습니다.
배치 파일과 작업 스케줄러에는 smartcopy-cli.exe를 씁니다.
설정과 로그는 %LOCALAPPDATA%\SmartCopy 아래에만 씁니다.
파일이나 폴더를 우클릭해 SmartCopy에 담기, 옮겨갈 폴더에서 SmartCopy 대상으로 지정. 여러 번 나눠 담아도 한 창에 모입니다.
등록은 HKEY_CURRENT_USER 아래에만 — 해제는 shell --uninstall 한 번