Rsync Web App Guide¶
URL¶
Default URL:
http://rsync.localhost:8787
If 8787 is occupied, the app auto-selects another free local port and prints it in ./bin/start-ui.sh output.
Navigation Areas¶
- Overview
- Jobs
- Locations
- Job Builder
- Logs & Diagnostics
- Setup & Updates
Start / Stop¶
cd /path/to/rsyncwebapp
./bin/quickstart.sh
./bin/start-ui.sh
./bin/status-ui.sh
./bin/stop-ui.sh
Open in browser:
./bin/open-ui.sh
Update helpers:
./bin/update-app.sh
Windows:
.\bin\update-app.ps1
Autostart and Desktop Integration¶
macOS autostart (restart on crash + start at login):
./bin/install-launchagent.sh
macOS menu bar controller:
./bin/install-menubar.sh
Remove menu bar controller:
./bin/uninstall-menubar.sh
Optional signing/notarization for distributing the menu bar helper:
./bin/sign-menubar.sh "Developer ID Application: YOUR NAME (TEAMID)"
./bin/notarize-menubar.sh rsyncwebapp-notary
macOS desktop shortcuts:
./bin/install-desktop-shortcuts.sh
Desktop shortcuts include a one-click Reinstall LaunchAgent command.
Linux autostart (systemd user service):
./bin/install-linux-autostart.sh
Linux desktop launchers:
./bin/install-linux-desktop-shortcuts.sh
Windows desktop shortcuts (PowerShell):
powershell -NoProfile -ExecutionPolicy Bypass -File .\bin\install-windows-shortcuts.ps1
Windows one-click starter:
.\bin\get-started-windows.bat
First Configuration¶
- Open the UI.
- Complete the First-Run Wizard cards from left to right.
- Use Setup Center and run Install Dependencies first (
python3,ssh,rsync). - Use remaining one-click helpers (autostart/menu/tray/shortcuts where available).
- Create jobs with your own:
- SSH server (
user@host) - absolute remote path (
/remote/source/path) - absolute local path (
/absolute/local/path) - For
mirrormode, explicitly enable Mirror delete confirmed in the editor. - Keep
dry runenabled for first validation. - Run
Test ConnandPreview Deletes. - Disable dry-run only after validation.
- Use
Pause Auto-Syncwhen ZTNA is intentionally offline for extended periods. - Use Copy Diagnostics in the header when you need a full state snapshot for debugging/support.
- Use Check Updates in the header and Update App in Setup Center for one-click upgrade flow.
- Automatic update checks run at most once per week per browser profile.
- Use Locations to manage reusable remote/local profiles and compose jobs in bulk.
Editor Modes¶
Basic: required fields and safe defaultsAdvanced: retry, timeout, schedule, and performance controlsExpert: raw args and exact command preview
Job Modes¶
mirror: synchronize and delete local files removed on remoteappend: copy only new files, keep existing local files
Network Interruptions / ZTNA¶
When SSH/rsync is unavailable:
- job status moves to
waiting_network - retry backoff is applied
- SSH reachability is probed
- job resumes automatically when reachable again
When Pause Auto-Sync is enabled:
- new runs are blocked
- retry/probe loops are suspended
- connectivity probing is paused
Runtime Storage¶
- Job profiles:
profiles/jobs.json(local) - Example profile:
profiles/jobs.example.json - Location profiles:
profiles/locations.json(local) - Example locations:
profiles/locations.example.json - Service state:
state/ - Logs:
state/logs/ - Metadata DB:
state/rsync-webapp.db
API (Local)¶
GET /api/healthGET /api/jobsGET /api/locationsPOST /api/jobs/preview-commandPOST /api/jobsPOST /api/locations/remotePOST /api/locations/localPOST /api/locations/composePUT /api/jobs/{id}PUT /api/locations/remote/{id}PUT /api/locations/local/{id}DELETE /api/jobs/{id}DELETE /api/locations/remote/{id}DELETE /api/locations/local/{id}POST /api/jobs/{id}/startPOST /api/jobs/{id}/dry-runPOST /api/jobs/{id}/pausePOST /api/jobs/{id}/resumePOST /api/jobs/{id}/cancelPOST /api/jobs/{id}/test-connectionPOST /api/jobs/{id}/preview-deletesGET /api/jobs/{id}/logGET /api/jobs/{id}/historyGET /api/connectivityGET /api/system/checksGET /api/app/versionGET /api/app/update-checkGET /api/onboarding/statusGET /api/diagnosticsGET /api/setup/optionsGET /api/service/statusGET /api/service/settingsGET /api/service/logsPOST /api/service/pause-autoPOST /api/service/resume-autoPOST /api/service/restartPOST /api/service/stopPOST /api/setup/{action_id}