Rsync had finished hours ago. The transfer was clean. Or so it seemed. Hidden between the lines of stdout and stderr were clues—bytes skipped, files with mismatched timestamps, directories where changes never landed. Auditing Rsync is not just about verifying the last run. It’s about knowing exactly what moved, what didn’t, and why.
Rsync remains one of the most relied-on tools for file synchronization. It’s fast, versatile, scriptable, and built for both local and remote transfers. But its speed hides complexity. A completed command does not guarantee every file is where it should be. Problems arise from permissions, partial transfers, network interruptions, and human error. Without an audit process, you run on trust instead of proof.
The core steps in auditing Rsync are straightforward. Enable verbose logging with flags like --itemize-changes and --stats for detailed per-file output. Redirect logs to a file you can parse later. Use --checksum when absolute data integrity matters more than speed. Compare post-transfer file trees with tools like diff or find to make sure every expected file exists and matches its source. Automate your checks so every run is traceable and every mismatch gets flagged.