Backing up data is essential, but keeping multiple drives in sync and verifying file integrity across copies remains genuinely tricky — even in 2026. macOS Sequoia and its successors ship with a solid set of command-line utilities that handle the heavy lifting, and the third-party ecosystem has matured around them. Chief among the graphical options is Carbon Copy Cloner, which you should simply go ahead and use. It has earned its reputation over many years as the most dependable drive-cloning tool on the Mac. That said, knowing the underlying Unix tools gives you flexibility, scriptability, and a deeper understanding of what your backups are actually doing.
TL;DR – The best macOS tools for syncing and comparing backup drives include rsync for file transfer, diff for directory comparison, shasum for integrity checks, and fswatch for real-time monitoring. Carbon Copy Cloner handles all of this graphically with a polished interface and SafetyNet protection. Automating verification with cron or launchd keeps backups trustworthy without manual effort.
Contents
- Carbon Copy Cloner
- Using rsync for Efficient File Synchronisation
- Basic Usage
- Incremental Backups
- Excluding Files and Folders
- Comparing Directories with diff
- Checking Directory Differences
- Verifying Integrity with shasum
- Finding Differences with comm and uniq
- Comparing Sorted File Lists
- Identifying Duplicates
- Monitoring Changes with fswatch
- Real-Time File Monitoring
- Automating Backup Verification
- Scheduling with cron
- Using launchd as an Alternative
- Summary
Carbon Copy Cloner
Start here. Carbon Copy Cloner (CCC) is not a command-line tool, but it is the gold standard for drive cloning on macOS and the first thing you should reach for. It has been actively developed and maintained for well over two decades, consistently keeping pace with every major macOS change — APFS, Apple Silicon, Sequoia's volume structure, all of it. The developer, Mike Bombich, is genuinely responsive; when I raised what turned out to be a misunderstanding on my part about APFS snapshot behaviour, I got a clear and patient reply. That kind of support is rare.
CCC's SafetyNet feature is worth highlighting on its own: it preserves deleted or overwritten files in a hidden folder on the destination drive for a configurable period, giving you a safety margin if a sync goes wrong. The task-based interface makes scheduling incremental backups straightforward, and the built-in snapshot support integrates cleanly with APFS. If you are running Apple Silicon hardware — an M3, M4, or later Mac — CCC handles the nuances of bootable backups that rsync alone cannot replicate.

Carbon Copy Cloner is available at bombich.com. It is paid software with a free trial, and it is worth every penny given how much grief a failed backup costs.
Using rsync for Efficient File Synchronisation
rsync is one of the most reliable tools for copying and syncing files. It transfers only changed data, making it well suited to incremental backups of large drives. macOS ships with rsync built in, though the bundled version has historically lagged behind the upstream release. If you want the current version, install it via Homebrew — it is worth doing.
Basic Usage
% rsync -av /source/directory/ /destination/directory/
-a (archive mode) preserves permissions, timestamps, symbolic links, and ownership.-v enables verbose output so you can track what is being transferred.
Incremental Backups
To copy only files that are newer on the source than the destination:
% rsync -av --update /source/directory/ /destination/directory/
Always test a new rsync command with --dry-run (or -n) first. It shows exactly what would be transferred without touching anything:
% rsync -avn /source/ /destination/
Excluding Files and Folders
On modern macOS, certain system directories and APFS metadata will cause errors if you try to sync them directly. Use --exclude to skip them cleanly:
% rsync -av --exclude='.Spotlight-V100' --exclude='.fseventsd' --exclude='.Trashes' /source/ /destination/
This is particularly relevant when syncing between external drives formatted as APFS or HFS+, where macOS writes hidden metadata that does not need to travel with your backup.
Comparing Directories with diff
Checking Directory Differences
Use diff to compare the contents of two directories:
% diff -rq /dir1 /dir2
-r compares directories recursively.-q reports only which files differ, without showing the actual content differences — useful when you just want to know whether two backup copies match.
Verifying Integrity with shasum
Generating and comparing checksums is the most reliable way to confirm that a copy is bit-for-bit identical to the source. Silent data corruption — sometimes called bitrot — is a real risk on drives that sit idle for extended periods, and checksums catch it where a simple directory comparison will not.
% shasum -a 256 file1 > file1.sha256
% shasum -c file1.sha256
For an entire directory, generate a manifest you can store alongside the backup:
% find /backup -type f -exec shasum -a 256 {} \; > /backup/checksums.sha256
Run shasum -c /backup/checksums.sha256 periodically to confirm nothing has changed unexpectedly. If you are storing backups on drives that spend months in a drawer, running this check every few months is genuinely worthwhile.
Finding Differences with comm and uniq
Comparing Sorted File Lists
comm is useful for comparing two sorted lists — for example, the file inventories of two backup drives:
% comm -3 <(ls /drive1 | sort) <(ls /drive2 | sort)
comm outputs three columns: lines only in the first input, lines only in the second, and lines in both. The -3 flag suppresses the shared entries, leaving only the differences.
Identifying Duplicates
To find duplicate entries in a sorted file list:
% uniq -d file_list.txt
Monitoring Changes with fswatch
Real-Time File Monitoring
fswatch watches a directory and reports file-system events as they happen. It is not built into macOS but is available via Homebrew:
% brew install fswatch
% fswatch -o /backup-drive
This is useful for confirming that a backup task is actively writing, or for triggering a script whenever a monitored directory changes. Piping fswatch output into a sync command gives you a lightweight continuous-backup workflow without a full daemon.
Automating Backup Verification
Scheduling with cron
cron is the classic Unix scheduler — old, ubiquitous, and perfectly functional for periodic backup checks. Add a job to verify your checksum manifest weekly:
0 3 * * 1 shasum -c /backup/checksums.sha256 >> /backup/logs/sha256.log 2>&1
This runs every Monday at 3 am and appends results to a log file. Edit your crontab with crontab -e.
Using launchd as an Alternative
macOS has long preferred launchd over cron for scheduled tasks, and on modern macOS it is the more robust option — particularly for tasks that need to run even after a reboot or when the system wakes from sleep. You define a job as a property list file in ~/Library/LaunchAgents/ and load it with launchctl. It is more verbose to configure than a cron entry, but it integrates properly with macOS power management and logs to the unified logging system, which makes debugging easier. For anything running unattended on a machine you care about, launchd is the better long-term choice.
Summary
rsync, diff, and shasum are built into macOS. fswatch is available via Homebrew — see Installing wget with Homebrew on macOS for a guide to getting Homebrew set up if you have not already. Carbon Copy Cloner is available at bombich.com.
Together these tools give you a complete picture of your backup health: CCC for reliable, scheduled cloning with SafetyNet protection; rsync for scriptable incremental sync; shasum to catch silent corruption; and diff or comm to confirm two copies match. Automating the verification step is the part most people skip, and it is the part that matters most — a backup you have never tested is a backup you cannot trust. Run the checks, review the logs, and make sure you have at least one copy that is not Time Machine. Time Machine is excellent, but it should not be your only safety net.