2026-09-08 20:06:58 +01:00
2026-09-09 14:40:18 +01:00
2026-09-09 14:40:18 +01:00
2026-09-09 08:36:35 +01:00
2026-09-09 08:23:43 +01:00
2026-09-08 20:06:58 +01:00
2026-09-08 20:06:42 +01:00

Rsync Studio for macOS

Native SwiftUI rsync job manager for macOS 14+.

Features

  • Persistent saved sync jobs using SwiftData
  • Create, edit, duplicate and delete jobs
  • Local/mounted-volume destinations
  • SSH remote destinations with custom port and SSH key
  • Archive, compression, delete, permissions and extended-attribute options
  • One-exclusion-per-line rules
  • Additional custom rsync arguments
  • Dry-run mode
  • Run on demand
  • Live rsync output
  • Cancel active job
  • Permanent run history with full command/stdout/stderr/exit code
  • Warning before a live --delete run
  • Automatically prefers /opt/homebrew/bin/rsync, then /usr/local/bin/rsync, then /usr/bin/rsync

Open and run

Open Rsync Studio.xcodeproj in Xcode and press Run.

The app deliberately has App Sandbox disabled because a general rsync utility needs to execute rsync/ssh and access arbitrary source/destination paths. Hardened Runtime remains enabled.

For a current rsync on Apple Silicon:

brew install rsync

SSH authentication works with your normal OpenSSH configuration and keys. If no SSH key is specified on a job, ssh uses its normal configuration in ~/.ssh/config.

macOS requirement

macOS 14 or later (SwiftData).

Automation

Rsync Studio supports per-job scheduling (once, hourly, daily, weekly, monthly and custom minute intervals), a month calendar/agenda, and FSEvents-based file watching. Scheduled and watch-triggered runs are silent and always written to History with their trigger source.

Background automation remains active while the application is running, including when its window is minimised, hidden or closed. The Automation settings include a native macOS Launch at Login option so the scheduler and watchers are available after sign-in. Quitting the application stops its in-process scheduler/watchers until it is launched again.

Production security hardening

This project targets Developer ID signed/notarised direct distribution, not the Mac App Store. Current hardening includes Hardened Runtime, validated rsync executables, protected advanced rsync arguments, non-interactive SSH with timeouts/keepalives, normal SSH host-key verification, private-key/agent authentication only, unattended --delete authorisation, local source/destination overlap protection, sanitised/capped run logs, configurable history retention, a privacy manifest, and persistent-store recovery mode.

See Docs/RELEASE.md and run Scripts/security-check.sh before producing a release archive.

Professional reliability features

The production build includes job preflight health checks, destination-volume identity protection, minimum-free-space checks, network-aware remote queues, automatic retries for scheduled/watch runs, native failure/success notifications, coalesced FSEvents watching, system-sleep prevention while rsync is active, cancellable Sync All batches, versioned job configuration import/export, filtered/exportable history, diagnostics export, and a signed-manifest update checker. SSH key paths are not exported in job backups.

Commercial direct-distribution build

On the release Mac, Scripts/release.sh creates the Developer ID signed, notarized and stapled DMG plus its SHA-256 checksum. The script never publishes automatically. See Docs/COMMERCIAL_RELEASE_STAGE2.md.

S
Description
The RSYNC GUI
Readme
972 KiB
Languages
Swift 44.3%
Blade 32.5%
PHP 19.6%
Shell 3.4%
JavaScript 0.1%