Unison is a file synchronization tool that keeps two replicas of files and directories on different hosts or disks in sync by detecting and propagating changes bidirectionally.
Unison solves the problem of maintaining synchronized copies of data across multiple machines or storage locations while allowing independent modifications to both replicas. Unlike simple mirroring tools, it detects conflicting changes and can automatically propagate non-conflicting updates. The tool works by comparing file metadata and content, communicating typically over SSH or direct TCP connections, and uses compression protocols similar to rsync to minimize bandwidth usage when transferring updates to large files. It maintains careful state management to remain resilient to network failures and abnormal termination.
Unison suits users who need bidirectional synchronization across platforms—it runs on POSIX-compliant systems and Windows—and who value offline access to already-synchronized data. It is particularly useful for scenarios where kernel modifications or superuser privileges are unavailable, since it operates as a user-level program using standard system calls. The tool works well over slow network links and can run in repeat mode with filesystem monitoring for near-real-time synchronization. Choose Unison if you need precise control over conflict detection and resolution rather than automatic overwriting, and if you require a clear, formally specified synchronization protocol.
Development of the tool is maintained by a very small team, with an estimated 2.5 people and 0.1 full-time equivalents actively working on it. The project emphasizes high-quality bug reports and proposed fixes from the community, and directs user support questions to dedicated mailing lists rather than the issue tracker. The README explicitly requests that contributors read the wiki and contributing guidelines before opening issues, indicating a structured but resource-constrained maintenance approach.