Hi @PhaustSceptic, restic is definitely capable for your use case and is very fast if used properly. A few things to check:
1. Parent snapshot detection
Restic uses a “parent” snapshot to determine what’s changed. From the restic docs:
By default restic groups snapshots by hostname and backup paths, and then selects the latest snapshot in the group that matches the current backup.
If something is preventing parent detection (different hostname, changed paths), restic rescans everything. Check your snapshots:
restic -r "%RESTIC_REPOSITORY%" snapshots
If you see the previous backup listed, try explicitly setting the parent:
restic -r "%RESTIC_REPOSITORY%" backup --parent SNAPSHOT_ID --files-from "%BACKUP_LIST%"
2. Windows change detection
On Windows, change detection is limited:
On Windows, a file is considered unchanged when its path, size and modification time match.
If your files have changing modification times (some sync tools do this), restic will rescan them even though content is identical.
3. Cache location
Restic uses a local cache to iprove performance. On Windows this is typically %LOCALAPPDATA%\restic. If the cache is being cleared between runs, you lose the performance benefit. You can set a persistent location if you like:
set RESTIC_CACHE_DIR=C:\restic-cache
restic -r "%RESTIC_REPOSITORY%" backup --files-from "%BACKUP_LIST%"
4. Run with verbose output
To see where time is being spent:
restic -r "%RESTIC_REPOSITORY%" backup -v --files-from "%BACKUP_LIST%"
Look for the “using parent snapshot” line. If it’s missing, that’s most likely your problem.
5. Excluding stable directories
For stable year folders, you can use --exclude:
restic -r "%RESTIC_REPOSITORY%" backup --exclude "photos\2000" --exclude "photos\2001" --files-from "%BACKUP_LIST%"
That said, if parent detection is working correctly, restic should skip unchanged files quickly based on metadata alone without needing excludes.
Hope this helps.