regsync Simple Fail Sync
Find a file
Regimantas Baublys 74c3c94f46 Add gitignore
2026-06-19 21:48:12 +03:00
.gitignore Add gitignore 2026-06-19 21:48:12 +03:00
api.go first commit 2026-06-19 21:43:28 +03:00
config.go first commit 2026-06-19 21:43:28 +03:00
crypto32.go first commit 2026-06-19 21:43:28 +03:00
files.go first commit 2026-06-19 21:43:28 +03:00
go.mod first commit 2026-06-19 21:43:28 +03:00
go.sum first commit 2026-06-19 21:43:28 +03:00
main.go first commit 2026-06-19 21:43:28 +03:00
README.md first commit 2026-06-19 21:43:28 +03:00
sync.go first commit 2026-06-19 21:43:28 +03:00
types.go first commit 2026-06-19 21:43:28 +03:00
web.go first commit 2026-06-19 21:43:28 +03:00

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ą

  1. Web UI sukurk agentą.
  2. Nukopijuok sugeneruotą komandą.
  3. 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

  1. A serveryje paleidi ./regsync
  2. Web UI įvedi Public URL, pvz. http://10.0.0.10:8088
  3. Sukuri agentą backup-b su http://10.0.0.22:8088
  4. B serveryje paleidi duotą regsync add ...
  5. B serveryje paleidi ./regsync
  6. 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_command ir post_command.
  • Delete extra remote files elgiasi panašiai kaip rsync --delete.