How saivijayragav/binarysync works
BinarySync versions and synchronizes large binary files by content-defined, SHA-256-addressed chunks. The principal workflow is: the CLI chunks a file, checks which chunks are missing, uploads only those, and commits a version manifest; downloads request a manifest diff and reuse cached chunks. Repository membership and role checks govern access, while metadata and chunk bytes are stored separately. The README documents these capabilities; source excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: ApiClient.java HTTP client · commands CLI commands · RepositoryService.java Repository access · repository Metadata repositories
Components 20
CLI client
- CLI commands
binarysync-client/src/main/java/com/binarysync/client/commands - HTTP client
binarysync-client/src/main/java/com/binarysync/client/ApiClient.java - Client config
binarysync-client/src/main/java/com/binarysync/client/ConfigManager.java
Chunk sync
- CDC chunker
binarysync-core/src/main/java/com/binarysync/service/ContentDefinedChunker.java - Chunk cache
binarysync-client/src/main/java/com/binarysync/client/ChunkCacheManager.java - Sync state
binarysync-client/src/main/java/com/binarysync/client/SyncStateManager.java - Cache cleanup
binarysync-client/src/main/java/com/binarysync/client/CacheCleaner.java
Server API
- Auth endpoints
binarysync-server/src/main/java/com/binarysync/controller/AuthController.java - Repository endpoints
binarysync-server/src/main/java/com/binarysync/controller/RepositoryController.java - File endpoints
binarysync-server/src/main/java/com/binarysync/controller/FileController.java - Chunk endpoints
binarysync-server/src/main/java/com/binarysync/controller/ChunkController.java - Delta sync endpoint
binarysync-server/src/main/java/com/binarysync/controller/SyncController.java - Repository access
binarysync-server/src/main/java/com/binarysync/service/RepositoryService.java - Version and manifest
binarysync-server/src/main/java/com/binarysync/service/SyncService.java - Chunk storage service
binarysync-server/src/main/java/com/binarysync/service/StorageService.java - JWT security
binarysync-server/src/main/java/com/binarysync/security
Persistence
- Metadata repositories
binarysync-server/src/main/java/com/binarysync/repository - Version metadata
binarysync-server/src/main/java/com/binarysync/model
Other components
- CLI user
- AWS S3
Connections 24
- CLI user → CLI commands: runs commands
- CLI commands → HTTP client: makes requests
- CLI commands → CDC chunker: chunks files
- CLI commands → Chunk cache: checks or stores
- CLI commands → Sync state: reads or saves
- CLI commands → Cache cleanup: cleans cache
- HTTP client → Client config: uses credentials
- HTTP client → Auth endpoints: calls auth
- HTTP client → Repository endpoints: manages repositories
- HTTP client → File endpoints: uploads and lists
- HTTP client → Chunk endpoints: transfers chunks
- HTTP client → Delta sync endpoint: requests delta
- Auth endpoints → Metadata repositories: reads or writes
- Repository endpoints → Repository access: delegates operations
- Repository access → Metadata repositories: reads or writes
- Repository access → Version metadata: manages records
- File endpoints → Version and manifest: delegates file actions
- File endpoints → Repository access: checks access
- Delta sync endpoint → Repository access: checks access
- Delta sync endpoint → Metadata repositories: reads manifest
- Chunk endpoints → Chunk storage service: transfers chunk data
- Version and manifest → Metadata repositories: reads or writes
- Version and manifest → Version metadata: updates version records
- Chunk storage service → AWS S3: reads and writes chunks