You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
9 months ago | |
---|---|---|
.. | ||
arthur | 9 months ago | |
cmd/arthur | 9 months ago | |
config | 9 months ago | |
logger | 9 months ago | |
sync | 9 months ago | |
test | 2 years ago | |
.gitignore | 2 years ago | |
Handoff.md | 9 months ago | |
README.md | 9 months ago | |
go.mod | 9 months ago | |
go.sum | 9 months ago | |
merlin-config-all.ini | 10 months ago | |
merlin-config.ini | 9 months ago | |
merlin-go.service | 9 months ago | |
merlin.go | 9 months ago |
README.md
Merlin
This folder contains the code for merlin (which does the actual syncing) and arthur (which sends commands to merlin).
Check out the the mirror env for a testing environment
Usage
go build merlin.go
Then configure merlin-config.ini
and run using ./merlin
Nice Features To Add
- detect if an rsync process is stuck (watch the stdout/stderr of the rsync processes)
- get the config or the rsync commond that a repo will sync with using a cli tool
- improve conversion from exit status enum to string
- sort
arthur status
by last time synced - time spent to sync during last sync, seconds/minutes/hours until next sync
Completed
- add bwlimit option for each rsync process
- write process manager
- save state (last attempted time, last attempted status) for each repo, and restore state on startup (e.g. use JSON/INI file for each repo)
- calculate difference between the scheduled time of a job and the time at which it actually ran; log this
- add all repos to merlin-config.ini (*)
- handle termination signals in merlin (SIGINT, SIGTERM); close stopChan for this
- listen on Unix socket in merlin
- implement arthur.go (commands: sync and status)
- allow dynamic reloading in merlin
- use separate log file for each child process (currently sharing stdout/stderr with parent)
- implement zfssync in merlin (just invoke the existing Python script)