How oferchen/rsync works
oc-rsync is a Rust reimplementation of rsync, providing local, SSH, and daemon transfers with delta synchronization and metadata preservation. The main workflow starts with CLI arguments, configures and dispatches a client transfer, then compares file data and applies changes at the destination; daemon mode additionally accepts and authenticates connections. The graph includes the README’s major product capabilities. Relationships are limited where sampled source or explicit documentation supports them; several subsystems are represented by their exact enclosing paths because their implementation was not sampled.
Main entry points: pipelined.rs Receive transfer · arguments/mod.rs CLI options · client/mod.rs Client orchestration · daemon.rs Daemon runtime
Components 18
User interface
- CLI options
crates/cli/src/frontend/arguments/mod.rs
Transfer runtime
- Client orchestration
crates/core/src/client/mod.rs - Remote transports
crates/core/src/client/remote/mod.rs - Local copy
crates/engine/src/local_copy/pipelined_state.rs - Receive transfer
crates/transfer/src/receiver/transfer/pipelined.rs - Incremental receive
crates/transfer/src/receiver/transfer/pipelined_incremental.rs
Delta and encoding
- Signature generation
crates/signature/src/pipelined_gen.rs - Checksum algorithms
crates/checksums/src/lib.rs - Batch recording
crates/batch/src/lib.rs - Compression
crates/compress/src/lib.rs
Daemon service
- Daemon runtime
crates/daemon/src/daemon.rs - Daemon configuration
crates/daemon/src/daemon/sections/config_parsing.rs
Transfer capabilities
- Source and destination
- Filters and selection
crates/cli/src/frontend/filter_rules/mod.rs - Metadata preservation
crates/transfer/src/receiver/pipeline_setup.rs - Bandwidth limiting
crates/bandwidth/src/lib.rs - Apple file metadata
crates/apple-fs/src/lib.rs
Other components
- User
Connections 19
- User → CLI options: supplies options
- CLI options → Client orchestration: configures transfer
- Client orchestration → Local copy: dispatches local
- Client orchestration → Remote transports: dispatches remote
- Remote transports → Receive transfer: runs transfer
- Local copy → Source and destination: reads and writes
- Receive transfer → Source and destination: reads and writes
- Receive transfer → Signature generation: generates signatures
- Signature generation → Checksum algorithms: computes digests
- Receive transfer → Incremental receive: selects receive mode
- Client orchestration → Batch recording: records or replays
- Receive transfer → Compression: encodes transfer data
- CLI options → Daemon runtime: starts service
- Daemon runtime → Daemon configuration: parses configuration
- Daemon runtime → Remote transports: serves connections
- CLI options → Filters and selection: parses rules
- Receive transfer → Metadata preservation: uses transfer state
- Receive transfer → Bandwidth limiting: limits transfer rate
- Metadata preservation → Apple file metadata: supports Apple metadata