regsync Simple Fail Sync
- Go 100%
| .gitignore | ||
| api.go | ||
| config.go | ||
| crypto32.go | ||
| files.go | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
| sync.go | ||
| types.go | ||
| web.go | ||
RegSync
Vienas Go binaras katalogų backup/sync tarp serverių be SSH, su embedded bbolt DB ir pilnesniu web UI pagrindiniam serveriui. Agentuose tik vienas veiksmas: regsync add <token>.
Svarbu: transportas yra custom ChaCha32 + HMAC-SHA256. Jei atidarai į internetą, ribok IP, naudok VPN arba reverse proxy su papildoma apsauga.
Build
go build -o regsync
Pirmas paleidimas
Serveriui užtenka:
./regsync
Pagal nutylėjimą bus sukurtas regsync.db, įjungtas web UI ant :8088, sugeneruotas bendras raktas ir baziniai nustatymai.
Atidaryk:
http://SERVER_IP:8088
Default login:
admin / change-me
Kaip prijungti agentą
- Web UI sukurk agentą.
- Nukopijuok sugeneruotą komandą.
- Agento serveryje paleisk:
./regsync add <token>
Tai automatiškai:
- įrašo nustatymus į agento
regsync.db - išjungia web UI agente
- įdeda bendrą raktą
- įdeda
allowed_paths - pažymi agentą serveryje kaip užregistruotą
Po to agentei paleisk tiesiog:
./regsync
Web UI ką jau galima daryti
- valdyti bazinius serverio nustatymus
- kurti agentus ir gauti pilną
regsync add ...komandą - kurti ir redaguoti agentus tame pačiame puslapyje
- kurti ir redaguoti sync job'us tame pačiame puslapyje
- rinktis agentą iš sąrašo vietoje rankinio
remote_url - paleisti
Run now - paleisti
Dry run - matyti agentų health ping būseną
- matyti paskutinį statusą ir log'ą su auto-refresh kas 5 s
Pavyzdinis flow
- A serveryje paleidi
./regsync - Web UI įvedi
Public URL, pvz.http://10.0.0.10:8088 - Sukuri agentą
backup-bsuhttp://10.0.0.22:8088 - B serveryje paleidi duotą
regsync add ... - B serveryje paleidi
./regsync - Web UI susikuri job'ą ir pasirenki agentą iš dropdown
Systemd pavyzdys
[Unit]
Description=RegSync
After=network.target
[Service]
WorkingDirectory=/opt/regsync
ExecStart=/opt/regsync/regsync -db /opt/regsync/regsync.db
Restart=always
RestartSec=3
User=root
[Install]
WantedBy=multi-user.target
Pastabos
- Programa siunčia tik pasikeitusius failų blokus pagal SHA256 blokų parašus.
- Jei failas naujas, siunčiamas visas failas blokais.
- Patch rašomas į
.regsync.tmp, patikrinamas SHA256 ir tik tada daromas atomic rename. - Gyvoms aplikacijoms naudok
pre_commandirpost_command. Delete extra remote fileselgiasi panašiai kaiprsync --delete.