Nav apraksta

Shengqi Chen ab8d1c2120 remove all cmd source files from coverage, make shanker happy 11 mēneši atpakaļ
.github ab8d1c2120 remove all cmd source files from coverage, make shanker happy 11 mēneši atpakaļ
.umlrootfs b372744640 update ci script 2 gadi atpakaļ
.vscode b2a22a9bbc update editor config 5 gadi atpakaļ
autocomplete 83fc766147 feat(bash and zsh autocompletion for tunasynctl): 9 gadi atpakaļ
cmd ef32197fef Run go fmt 11 mēneši atpakaļ
docs bca49abd3c doc: increase default interval 2 gadi atpakaļ
internal a6a03decf0 doc: update README and bump to v0.9.0 11 mēneši atpakaļ
manager 95c4d54ee2 Replace boltdb with bbolt, fix #173, close #174 11 mēneši atpakaļ
systemd 28c8145137 feature(worker): limit rsync memory using cgroup 9 gadi atpakaļ
tests ef32197fef Run go fmt 11 mēneši atpakaļ
worker 113df44f19 cgroup: upgrade to containerd/cgroup/v3 11 mēneši atpakaļ
.gitignore 559f5705f6 ci: rename all coverage files to .gcov, ignore them in git 11 mēneši atpakaļ
.testpackages.txt 44af0d5e62 feature(worker): framework of mirror provider 9 gadi atpakaļ
LICENSE 78f3501e19 Initial commit 11 gadi atpakaļ
Makefile 559f5705f6 ci: rename all coverage files to .gcov, ignore them in git 11 mēneši atpakaļ
README.md a6a03decf0 doc: update README and bump to v0.9.0 11 mēneši atpakaļ
go.mod 113df44f19 cgroup: upgrade to containerd/cgroup/v3 11 mēneši atpakaļ
go.sum b4ca6f4c1e Run go get -u 11 mēneši atpakaļ
package.json c311648546 chore(git): Made this repo commitizen frendly 9 gadi atpakaļ

README.md

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.22

# for native arch
> make all
# for other arch
> make ARCH=linux-arm64 all

Binaries are in build-$ARCH/, e.g., build-linux-amd64/.