Feature · Organise

Compare two folders and sync them

Compare the two panels by size and date or by content hash, see every difference with a direction you can override, and apply through the queue with undo.

Default shortcut: Ctrl+Shift+S · Ctrl+Shift+D Updated 15 August 2026 View as Markdown

Put the two folders in the two panels, press Ctrl+Shift+S, and cwdio shows what differs — every file, which side is newer, what would be copied and what would be deleted — before it touches anything. Choose the direction, tick or untick rows, override any single one, and Apply turns the plan into ordinary queue operations you can watch, cancel and undo.

What it does

  • A dry run first. The compare walks both trees in lock step, host-side, and returns a plan: rows with per-side size and date, an include checkbox each, and a decision. Nothing moves until Apply.
  • Five modes. Update → / Update ← (copy new and newer one way, never delete), Mirror → / Mirror ← (exact replica; target-only entries deleted to the Recycle Bin), Two-way. Decided per row, with the ambiguous ones left unchecked.
  • Per-row override. Click a row’s direction to cycle it — copy this way, copy that way, delete, skip — and it wins over the mode. Picking a direction re-includes the row.
  • Compare contents. Optional: same-size pairs are hashed on both sides, with a live Comparing… N files hashed line.
  • Exclude mask. *.tmp;node_modules;.git drops matching rows — matched on any path segment — with an N excluded count.
  • Applied through the queue. Copies run with overwrite and honour Verify copies; deletes go to the trash; the Operations drawer opens so the sync is cancellable, pauses if a drive vanishes, tolerates a failed file, and is journaled like any transfer.
  • Remembered settings. Mode, compare-contents and the exclude mask persist between runs.
  • Compare files. Ctrl+Shift+D — a virtualised side-by-side diff with word-level highlighting and n / p to step through changes.
  • Mark differences. Tools ▸ Mark differences selects, in each panel, the names the other panel lacks — the quick set-difference when you do not need a plan.

How to use it

  1. Left panel: the source (your working folder). Right panel: the target (the backup drive, the copy on the NAS).
  2. Ctrl+Shift+S. Read the summary line — how many to copy each way, how many to delete.
  3. Choose Update → for a backup that must never lose a file, Mirror → for a replica that should not keep what you deleted, Two-way when you edited on both sides.
  4. Add an exclude mask if the plan is full of node_modules; turn on Compare contents if dates cannot be trusted (a restored backup, a cloud folder).
  5. Apply. Watch it in the Operations drawer, or carry on with something else.

What it deliberately does not do

  • It never deletes silently. Deletions appear as rows in the plan and, when applied, go to the Recycle Bin.
  • It does not guess an ambiguous row’s direction. Same date, different size is left to you.
  • The compare is bounded — 2 000 rows, an entry budget — and says so if it was truncated rather than pretending the plan is complete.

Questions

Which sync modes are there?

Five, in the FreeFileSync style: Update → and Update ← copy new and newer files one way and never delete; Mirror → and Mirror ← make an exact replica, copying every difference and deleting target-only entries to the Recycle Bin; Two-way lets each side's new and newer files cross. A row whose direction is ambiguous — same date, different size — stays unchecked until you decide it.

Can I trust size and date, or should I compare content?

Size and date are fast and right almost always. Turn on Compare contents when it matters: same-size pairs are then hashed on both sides, so byte-identical files with different dates drop out of the plan and a same-date content change is caught. Direction still comes from the dates.

Can I exclude build junk?

Yes. The exclude mask takes a semicolon- or space-separated list of name patterns — *.tmp;node_modules;.git — and drops any row where any path segment matches, so a node_modules present on both sides is excluded down to its last file, not just at the top. The mask, the mode and the compare strategy are remembered for next time.

What is Compare files?

Ctrl+Shift+D opens a side-by-side diff of two files — the two selected in the active panel, or the cursor file in each panel — with intra-line highlighting and next/previous-change navigation. It is the same viewer the git integration uses for a file's changes against HEAD.