-
[Plugin] Unraid Rsync — multi-job rsync backup scheduler
Unraid Rsync is a native webGui plugin for scheduling and monitoring rsync backup jobs — either over SSH to/from a remote host, or locally between two paths on the server. Unlike the existing single-schedule rsync plugins, this is a multi-job scheduler: each job gets its own cron schedule, its own source→destination pairs, and its own rsync options. GitHub: https://github.com/sasa-fajkovic/unraid-rsync Install URL: https://github.com/sasa-fajkovic/unraid-rsync/releases/latest/download/unraid.rsync.plg Why I built this I wanted to back up music, appdata, a Nextcloud install, and an Immich library to a remote Raspberry Pi over SSH — each with different schedules, different rsync flags, and pre/post hooks (stopping a database container before the transfer, starting it again after) while having proper integration with Unraid and it's notification system. None of the existing plugins covered multi-job + per-job hooks + per-job flag overrides in one place, so I built this one. What it does - Multiple independent jobs, each with: - Transport: SSH (push/pull to a remote host) or Local (paths on this server, under /mnt) - Its own cron schedule (not one global schedule), with a live "Next run" column - A curated, whitelisted set of rsync flags as checkboxes/inputs (no free-form flag string — destructive flags are gated), each with inline help on hover - Explicit source → destination pairs (one rsync call per pair, not a cartesian product of multiple sources × destinations) - Pre/post hooks (run as root, output captured into the per-run log) - Per-job log level and notify mode (off / success-only / failure-only / always) - Live state badges (success/warning/failed/aborted/pending/running) and a per-run log viewer that polls live while a job is running - Manual Run / Dry-run / Abort per job — dry-run before you trust anything unattended - A Connections tab for reusable SSH endpoints (existing key file, managed key, or password via sshpass), with host-key discovery and a connection test - A Credentials tab — a managed SSH key keychain (generate or import) - Status tab showing the rolling plugin log + an rsync-binary presence check - Notifications through Unraid's native notify system - Clean uninstall (removes both the runtime tree and the persistent /boot config, clears cron lines) Screenshots Install Requires Unraid 7.0.0+. 1. Plugins → Install Plugin 2. Paste: https://github.com/sasa-fajkovic/unraid-rsync/releases/latest/download/unraid.rsync.plg 3. Click Install, then open Settings → User Utilities → Unraid Rsync Updates are automatic via Plugins → Check for Updates — releases use CalVer and publish automatically on every merge to main. A note on credential security Credentials are stored on the USB flash /boot/config/plugins/unraid.rsync/credentials.json), which is FAT32 and world-readable — Unix permissions don't apply there. To keep things safe by default: - Existing-key-file auth (the default) never copies your private key into the plugin's store — only the path is recorded. - Managed keys are only ever decrypted to RAM (tmpfs, mode 600) at run time, and the private key is never shown again in the UI after saving. - Password auth is stored obfuscated, not encrypted — use key auth where possible, and a low-privilege remote account if you must use a password. This is documented up front in the README rather than buried, since it's a backup tool handling credentials. Status Feature-complete for my own use case (appdata / Nextcloud / Immich → remote Pi over SSH with DB stop/start hooks), running nightly. Not yet in Community Applications — submitting once this thread exists, since CA wants a forum support link in the .plg. Bugs / feature requests: https://github.com/sasa-fajkovic/unraid-rsync/issues Feedback welcome, especially on the credential-storage approach and anything that looks unsafe before more people start pointing this at real backups.
fajkovic.sasa
Members
-
Joined
-
Last visited