성공 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초 간격으로 자동 재시도합니다. 그래도 안 되면 실패 목록에 남고, 재시도 버튼으로 그 파일들만 다시 돌립니다 — 폴더 구조는 그대로 유지한 채로.
같은 일을 매번 손으로 누르고 있다면, 그건 프로그램이 할 일입니다.
폴더에 파일이 들어오고 잠잠해지면 정해둔 작업을 돌립니다. 쓰는 중인 파일에는 달려들지 않습니다 — 변화가 멎을 때까지 기다립니다.
smartcopy-cli watch "납품" --folder D:\카드복사
매일 새벽 3시에, 또는 로그온할 때. 관리자 권한 없이 걸고, 윈도우 작업 스케줄러 화면에서 그대로 지울 수 있습니다.
smartcopy-cli schedule --install "주간 백업" --when daily --at 03:00
폴더를 우클릭하면 만들어 둔 작업 이름이 뜹니다. 누르면 창이 그 설정으로 채워지고, 시작은 사람이 누릅니다.
증명서 한 장은 버리기 쉽습니다. 그래서 각 증명서가 앞 증명서의 해시를 품습니다 — 가운데 하나를 빼면 사슬이 끊깁니다.
smartcopy-cli ledger --verify
타임스탬프 기관은 아닙니다. 막는 것은 열 번 납품하고 마음에 드는 아홉 번만 보여주는 일입니다.
| 다루는 것 | 방식 |
|---|---|
| 청크 크기 | 매체를 보고 고릅니다 — 고정 디스크 4 MB, USB 1 MB, 네트워크 256 KB. 일시정지·취소는 청크 경계에서 반응하므로 무작정 키우지 않습니다. |
| 동시 작업 | 기본 2개. 같은 디스크를 여러 작업이 동시에 때리면 전체가 느려지기 때문입니다. |
| 우선순위 | 작업마다 우선순위를 두고, 높은 것부터 내보냅니다. 같으면 담은 순서대로. |
| 대량 열거 | scandir 기반으로 훑고, 심볼릭 링크·정션은 따라가지 않아 순환 복사에 빠지지 않습니다. |
| 긴 경로 · 한글 | 260자 제한을 우회하는 경로 접두사를 붙여 다룹니다. 유니코드 이름은 그대로. |
| 진행률 갱신 | 0.2초에 한 번으로 묶습니다 — 10만 개에서 화면 갱신이 복사보다 비싸지지 않도록. |
| 동시 파일 | 한 작업 안에서 파일 여러 개를 동시에 복사합니다(최대 16). 작은 파일이 많거나 NAS 일 때 효과가 큽니다. |
| 속도 제한 | 초당 바이트 상한. 백업을 돌리면서 회의를 해야 할 때. 워커들이 같은 버킷을 공유합니다. |
| 걸러내기 | 포함/제외 패턴, 폴더 통째 제외, 크기·날짜 범위, 숨김 파일 제외. |
| 미리보기 | 아무것도 쓰지 않고 무엇이 옮겨질지만 계산합니다. |
| 시작 전 점검 | 대상 여유 공간, 대상이 원본 하위인지, 보호 경로인지, 원본 존재 여부를 먼저 확인합니다. |
robocopy 보다 느립니다. 파일마다 이어받기 정보를 남기고, 복사한 것을 검증하고, 저널에 적기 때문입니다 — 그 셋이 이 프로그램이 있는 이유입니다. 내장 SSD 에서 작은 파일은 5~15배, 큰 파일은 7배쯤 느립니다. 잰 숫자와 재는 방법은 저장소에 그대로 두었습니다.
창 UI 가 지금 옮기는 중을 본다면, 콘솔은 전체를 봅니다. 큐·기록·복구·로그·검사가 한 화면에 있습니다.
smartcopy-cli admin 또는 창 UI 의 관리자 콘솔 버튼으로 엽니다.
콘솔은 127.0.0.1 에만 열리고, 실행할 때마다 새로 만든 토큰이 있어야 들어갑니다.
바깥 도메인이 이 주소를 가리키게 만드는 수법(DNS 리바인딩)은 Host 검사에서,
다른 사이트가 브라우저를 시켜 보내는 요청은 Origin 검사에서 막습니다.
배치 파일과 작업 스케줄러에는 smartcopy-cli.exe를 씁니다.
설정과 로그는 %LOCALAPPDATA%\SmartCopy 아래에만 씁니다.
마지막 갱신 v0.4.5 · 2026-10-19 (KST) 무엇이 바뀌었나
SmartCopy-0.4.5.zip
압축만 풀면 바로 씁니다. 창 UI 와 명령줄이 한 폴더에 들어 있고, 브라우저가 막는 일도 없습니다. 설치는 필요 없고, 폴더째 옮기거나 지우면 끝입니다.
배포 파일에는 PROJECTTEAMFORYOU 코드 서명이 붙어 있습니다. 파일 속성의 디지털 서명 탭에서 게시자 이름을 확인하세요.
원파일(exe)을 받으면 브라우저가 «의심스러운 다운로드» 라며 막을 수 있습니다. 악성이라는 뜻이 아니라 아직 받은 사람이 적다는 뜻입니다. 계속하시려면 내려받기 창에서 «유지»를 고르시고, 파일 속성의 디지털 서명 탭에 PROJECTTEAMFORYOU 가 보이는지 확인하세요. 마음이 놓이지 않으시면 폴더판(zip)을 받으시면 됩니다 — 그쪽은 막히지 않습니다.
파일이나 폴더를 우클릭해 SmartCopy에 담기, 옮겨갈 폴더에서 SmartCopy 대상으로 지정. 여러 번 나눠 담아도 한 창에 모입니다.
등록은 HKEY_CURRENT_USER 아래에만 — 해제는 shell --uninstall 한 번