Unison

Unison

Unison is a file-synchronization tool for OSX, Unix, and Windows that allows two replicas of a collection of files and directories to be stored on different hosts and synchronized by detecting changes and propagating them in either direction.

Similar self-hosted alternatives:
Repository activity:
Stars
4,613
Forks
246
Watchers
84
Open Issues
105
Last commit
3 months ago
Details:
Estimated Popularity
19
Pricing Model
Free
Hosting Type
Self-Hosted
License
GPL-3.0
Deployment Difficulty
Medium
Language
OCaml

Unison is a robust, cross-platform file synchronization tool that enables bidirectional synchronization between two file system replicas. Designed for reliability and precision, Unison carefully tracks changes and allows users to review and control the synchronization process, making it ideal for maintaining consistent file collections across different systems.

Key Features

  • Bidirectional Synchronization:

    • Two-way file and directory synchronization
    • Automatic change detection and propagation
    • Intelligent conflict resolution
    • User-controlled synchronization decisions
    • Maintains file system consistency
    • Handles simultaneous changes gracefully
  • Cross-Platform Compatibility:

    • Native support for Windows, macOS, and Unix/Linux
    • Consistent behavior across platforms
    • Platform-specific optimizations
    • Unicode filename support
    • Case-sensitivity handling
    • Path separator normalization
  • Reliable Change Detection:

    • Fast fingerprinting algorithm
    • Modification time and size comparison
    • Optional content-based checksums
    • Symbolic link handling
    • Permission and ownership tracking
    • Extended attribute support
  • Network Synchronization:

    • SSH-based remote synchronization
    • Socket-based communication
    • Compression for bandwidth efficiency
    • Encryption for secure transfers
    • Resume interrupted transfers
    • Connection multiplexing
  • User Control & Safety:

    • Interactive confirmation of changes
    • Dry-run mode for testing
    • Backup copies of modified files
    • Ignore patterns and filters
    • Batch mode for automation
    • Detailed logging and reporting
  • Performance Optimization:

    • Incremental synchronization
    • Fast update detection
    • Efficient network protocols
    • Minimal memory usage
    • Archive files for state tracking
    • Optimized file comparison
  • Advanced Configuration:

    • Flexible ignore patterns
    • Custom merge tools
    • Profile-based configurations
    • Preference files
    • Command-line options
    • Environment variable support

Technical Specifications

  • Language: OCaml
  • Platforms: Windows, macOS, Linux, Unix
  • Transport: SSH, direct socket, local filesystem
  • Protocols: Custom Unison protocol over SSH/socket
  • Compression: Built-in compression support
  • Encryption: SSH-based encryption
  • Interface: Command-line, text-based UI

Use Cases

  • Personal File Sync: Synchronizing files between home and work computers
  • Backup Solutions: Maintaining synchronized backup copies
  • Development: Keeping source code synchronized across environments
  • Collaboration: Sharing files between team members
  • Migration: Moving files between different systems
  • Version Control: Simple file versioning and history

Unique Advantages

  • Precision Control: User reviews and approves all changes
  • Conflict Handling: Intelligent detection and resolution of conflicts
  • Cross-Platform: True cross-platform synchronization
  • Reliability: Mature, well-tested synchronization algorithms
  • Efficiency: Fast, incremental synchronization
  • Flexibility: Highly configurable for various use cases

Help improve this content

Found an error or want to add more information about Unison? You can edit this page directly on GitHub.

Project Categories

Click on a category to explore similar projects