12,481 done · 0 skipped · 0 failed · 8.6 GB left
D:\Photos 2024\2024-07\IMG_4821.ARW
When Explorer's copy dialog is interrupted, it will not tell you how far it got. SmartCopy queues the work so you can pause and resume, and deletes a move's source only after the copy has been verified. Pull the USB, lose the NAS, reboot — the progress is still there.
No install · no admin rights · Windows 10 / 11 (64-bit)
12,481 done · 0 skipped · 0 failed · 8.6 GB left
D:\Photos 2024\2024-07\IMG_4821.ARW
Device disconnected — will continue when it comes back (WinError 64)
A move is three steps. Each waits for the one before it.
writes to the destination as .scpart a temporary file. Only when it is fully written does it take the final name, so a half-written file never looks like a finished one.
Size and modified time are compared, and SHA-256 too when you ask for it. If anything differs, that copy is deleted and written again.
Only files that passed verification lose their source. Skipped files keep theirs, and empty folders are tidied up at the end.
A move within the same drive is just a rename — fast, with no in-between state at all. The three steps above are only for crossing drives.
Decide up front when you create the job, or have it ask each time. If you choose to be asked, the dialog offers Apply to later conflicts tooas a checkbox.
| Policy | What it does | When to use it |
|---|---|---|
| overwrite | Overwrites the destination | One-way backups where the source is always newest |
| skip | Skips it and leaves the source alone | Filling in only what is missing |
| rename | name (1).extas a new file | When both must be kept (default) |
| keep_newer | Keeps whichever was modified more recently | Merging a folder edited on both sides |
| keep_larger | Keeps whichever is larger | When truncated files are mixed in |
| ask | Shows both sizes and times and asks | When each case needs judgement |
Progress does not live only on screen — it is written to disk. So closing the app or losing power does not send you back to the start.
Each finished file is appended as one line. Because it only ever appends, a power cut damages at most the last line — and that line is simply dropped.
%LOCALAPPDATA%\SmartCopy\jobs\
For a big file, .scpartkeeps exactly how far it got. It resumes only after a sidecar file confirms the source still has the same size and modified time.
When a device disappears it is not counted as a failure — the job goes Waiting to reconnect When it comes back, work continues from where it stopped.
WinError 21 · 53 · 59 · 64 · 1167
Temporary trouble — a file locked by another program, say — is retried automatically after 0.5s, then 2s, then 5s. What still fails lands in a list, and the Retry button runs just those again — keeping the folder structure as it was.
If you press the same buttons every time, that is work for a program.
When files land in the folder and go quiet, it runs the job you saved. It never grabs a file that is still being written — it waits for the changes to stop.
smartcopy-cli watch "Delivery" --folder D:\CardDump
Daily at 3 a.m., or at logon. No administrator rights to set it, and you can delete it from the Windows Task Scheduler itself.
smartcopy-cli schedule --install "Weekly backup" --when daily --at 03:00
Right-click a folder and your saved job names appear. Picking one fills the window with those settings — you still press Start.
A single certificate is easy to throw away. So each one carries the hash of the one before it — pull one out of the middle and the chain breaks.
smartcopy-cli ledger --verify
This is not a timestamping authority. What it stops is delivering ten times and showing only the nine you like.
| What it handles | How |
|---|---|
| Chunk size | Picked from the medium — 4 MB for fixed disks, 1 MB for USB, 256 KB for the network. Pause and cancel answer at chunk boundaries, so it is not enlarged for its own sake. |
| Concurrent jobs | Two by default, because several jobs hammering the same disk makes everything slower. |
| Priority | Each job carries a priority and the higher ones go first. Ties keep the order they were added. |
| Enumerating in bulk | scandir based traversal, and symbolic links and junctions are not followed, so it never falls into a copy loop. |
| Long paths · Unicode | Handled with the path prefix that sidesteps the 260-character limit. Unicode names are left exactly as they are. |
| Progress updates | Batched to once every 0.2 s — so that at 100,000 files, drawing the screen never costs more than the copying. |
| Files at once | Within one job, several files are copied at the same time (up to 16). It pays off most with many small files or over a NAS. |
| Rate limit | A ceiling in bytes per second. For when a backup runs while you are in a meeting. The workers share one bucket. |
| Filtering | Include and exclude patterns, whole-folder exclusions, size and date ranges, and skipping hidden files. |
| Preview | Works out what would move without writing anything at all. |
| Pre-flight checks | Free space at the destination, whether the destination sits inside the source, whether it is a protected path, and whether the sources exist — all checked first. |
It is slower than robocopy. For every file it records resume information, verifies what it copied, and writes to the journal — those three are the reason this program exists. On an internal SSD that is roughly 5-15× slower for many small files and about 7× for one large file. The measurements and the method are in the repository.
The window shows what is moving now; the console shows the whole picture — queue, history, recovery, logs, integrity check.
smartcopy-cli admin or the window's Admin console button opens it.
The console opens on 127.0.0.1 only and needs a token that is freshly made on every run. An outside domain pointed at this address (DNS rebinding) is stopped by the Host check, and a request another site makes your browser send is stopped by the Origin check.
For batch files and Task Scheduler, use smartcopy-cli.exe.
Settings and logs live under %LOCALAPPDATA%\SmartCopy and nowhere else.
SmartCopy.exe
Drag and drop to load, and watch progress on job cards. The Explorer right-click menu calls this file too.
smartcopy-cli.exe
copy · move · recover · verify · shell. Good for scripts and schedulers.
Right-click a file or folder for Add to SmartCopy, and in the folder you are moving to, Set as SmartCopy destination. Load them in several goes — they all gather in one window.
Registered under HKEY_CURRENT_USER only — one shell --uninstall undoes it