Skip to content

tuna/tunasync

Repository files navigation

tunasync

Build Status Coverage Status Commitizen friendly GPLv3

Get Started

Download

Pre-built binary for Linux x86_64 and ARM64 is available at Github releases.

Design

# Architecture

- Manager: Central instance for status and job management
- Worker: Runs mirror jobs

 ------------   ---                    --- 
| Client API | |   |    Job Status    |   |     ----------       ----------  
 ------------  |    ----------------->|   |--->|  mirror   ---->|  mirror  | 
 ------------  |   |                  | w |    |  config  |     | provider | 
| Worker API | | H |                  | o |     ----------       ---- -----  
 ------------  | T |   Job Control    | r |                          |       
 ------------  | T  ----------------->| k |        ------------      |       
| Job/Status | | P |   Start/Stop/... | e |       | mirror job |<----        
| Management | | S |                  | r |        ------^-----              
 ------------  |   |   Update Status  |   |     --------- ---------          
 ------------  |   <------------------    |    |     Scheduler     |
|   BoltDB   | |   |                  |   |     ------------------- 
 ------------   ---                    --- 


# Job Run Process


PreSyncing                           Syncing                               Success
 -----------       ----------      -----------      -------------       -------------- 
|  pre-job   -- ->| pre-exec  --->|  job run   --->|  post-exec   - -->| post-success |
 -----------   ^   ----------      -----------      -------------  |    -------------- 
               |                                                   |
               |                 -----------------                 | Failed
                ----------------     post-fail    |<--------------- 
                                 ----------------- 

Building

Go version: 1.13

> make all

Binaries in the build-linux-amd64/.