This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

RsyncUI - a GUI for rsync

RsyncUI is a macOS application built with Swift and SwiftUI for macOS Sonoma and later. The command-line tool rsync performs the synchronization; RsyncUI provides the GUI on top.

RsyncUI is free and open source. Please review the MIT license before you start using it. The project will remain open and free.

Concealing Actions

See Getting started for details on Concealing Actions. Toggle action visibility on the main toolbar with ⌘S.

Privacy statement

RsyncUI is a desktop-only app with no server component. It does not send logs off your Mac. Task data and logs stay local; you can back them up to your Documents directory from Settings. Data leaves your Mac only when you enable tasks that target a remote server, and you are responsible for securing that data.

Changelog and Installation

For current updates, see the changelog. RsyncUI ships as a Universal macOS Binary and runs natively on Apple Silicon and Intel Macs.

RsyncUI can be installed via Homebrew or downloaded from GitHub.

brew install --cask rsyncui

If installed via Homebrew, the SHA-256 hash is automatically verified. For downloads from GitHub, please verify the SHA-256 hash manually.

1 - Important

Before using RsyncUI, review these key notes.

The interface may feel challenging if you are new to the rsync command-line tool. RsyncUI focuses on making rsync easier to use, not on teaching every rsync concept.

Not a backup tool for everyone

RsyncUI specializes in synchronization and file management. The command-line tool rsync performs the actual work. If you need a full system backup tool that creates complete disk images, RsyncUI is not the right fit.

Delete parameter

The --delete parameter keeps the destination in exact sync with the source. When a file is removed from the source, rsync removes it from the destination. With --delete disabled, the destination will accumulate files removed from the source.

Know whether --delete is on or off before you run; it controls whether the destination mirrors the source.

Add and remove the delete parameter

Select Parameters tab within the Tasks menu, select the task, and toggle Add –delete parameter (ON means included). After toggling, remember to update the task.

  • if ON, the –delete parameter is included
  • if OFF, the –delete parameter is removed

Always verify new task

Before running a new task, perform a --dry-run and inspect the result. If you set an empty source and --delete is enabled, rsync will delete all files in the destination.

Temporary halt tasks

You can temporarily halt a task. In the Synchronize view, right-click a task to halt it; the task keeps its type when resumed. Halted tasks display a red stop sign in the action column.

Two options to save updates to data

This option applies to the data synchronized by RsyncUI. By enabling either of these options, you can save changes to data, such as deletions or updates, prior to a synchronization task.

2 - Limitations

There are a few limitations to keep in mind. None will corrupt data, but they may interrupt synchronization.

Long running tasks and sleep

When the Mac sleeps, RsyncUI tasks stop. An active rsync process does not block sleep. If sleep occurs during sync, rsync will likely error out and stop. Restart the task in RsyncUI; rsync will resume from its previous state.

If this happens, RsyncUI will not log the run because it only logs after receiving a termination signal from rsync.

The above will also be true if you are using the Calendar function.

The Schedule

A note about scheduling: the scheduler relies on the Timer library. See Schedule for details.

The scheduler automates chosen tasks while RsyncUI is running and you are logged in. If the Mac sleeps and a scheduled task is missed, it will be listed in the Schedule view after wake.

Aborting Tasks

RsyncUI launches the rsync command-line tool and monitors it.

You can abort a task at any time. Let the abort finish before starting another task; otherwise RsyncUI may become unresponsive.

3 - Getting started

New users should read Important first, then see Latest version of rsync for installation guidance.

Concealing Actions

Concealing actions reduces menu clutter and keeps focus on common tasks.

Use ⌘S or the Task main menu to show or hide Charts, Quick task, log view, and other options that are hidden by default. The primary Sidebar menu is also context-sensitive.

New Tasks and Verification

RsyncUI can synchronize data to:

  • local attached disk
  • remote servers on the Internet or local LAN
    • require passwordless login by ssh-key

Local attached disk

To sync to a local attached disk, connect the disk, add source and destination, and you are ready for your first task.

Remote server and passwordless login

To sync to a remote server (internet or LAN), set up passwordless SSH. With SSH keys in place, add source, destination, login id, and server name and you can synchronize. Without passwordless login, additional setup is required.

Verify tasks

Select the task and press the play button on the toolbar. Executing the play button includes the –dry-run parameter for rsync, which is an estimation run.

Aborting tasks

RsyncUI executes the command-line tool rsync and monitors progress and termination.

You can abort a task at any time. Allow the abort to complete and cleanup to finish before starting another task; otherwise the app may become unresponsive.

Errors in tagging data

Sometimes you may get the error:

There are errors in tagging data
for synchronize ID XXXX
Most likely number of rows
> 20 lines and no data to synchronize

The message confirms that all data appears synchronized. RsyncUI bases this on rsync summary output. If there are more than ~20 lines yet no data tagged for sync, the message reminds you to double-check. To verify, run the task without an estimate.

Version 3.x of rsync:

Version openrsync:

The Sidebar Menu options

Three Sidebar menu options depend on task properties. If any task meets the requirement, the option appears.

  • Snapshot: available only for snapshot tasks
    • requires rsync 3.x
  • Restore: available for synchronize and snapshot tasks where the destination is on a remote server
    • also available for openrsync, but only for synchronize tasks
  • Verify remote: available for synchronize tasks where the destination is on a remote server
    • requires rsync 3.x

4 - New tasks

A task requires a minimum of a local directory, the source, and a remote directory, the destination.

Pressing the Enter key will advance to the next field. Pressing the Enter key will automatically add a new task after the last input. Tasks are saved to permanent storage after each entry.

Delete Tasks

Select the tasks you wish to delete and delete them from the Edit menu or by pressing the backspace button.

Data about Tasks

The following data pertains to tasks:

Action
  • synchronize - default action for synchronize data from a source to a destination
  • snapshot - saves changes and deletions prior to a synchronize operation
  • syncremote - synchronize data from a remote source to a local folder
    • when adding a syncremote action, add the local folder first and the remote folder as second, RsyncUI will do the flip
Folder Parameters
  • Source folder - required field
  • Destination folder - required field
Trailing /
  • Add - add a trailing slash to both the source and destination
  • Do not add - do not add a trailing slash, or if added remove it
  • Do not check - do not check for trailing slash or not on either the source or destination
Synchronize ID
  • Synchronize ID - informal tag for the task
Remote Parameters
  • Remote username - username for login to the remote server
  • Remote server - either server name or IP address for the remote server

Copy and Paste Tasks

Shortcuts for copy and paste are ⌘C and ⌘V, or from the Edit menu. The copy and paste operation creates a copy of the selected tasks and marks them with the “copy” status. The copied tasks retain all parameters.

4.1 - Update tasks

To update a task, select it and press the update button to write changes to storage.

5 - Synchronize data

Shortcut actions within the Synchronize view:

  • estimate - shortcut ⌘E estimates all or selected tasks
  • synchronize - shortcut ⌘R synchronizes all or selected tasks without estimation
    • no progress bar during synchronization; a progress bar requires estimation first
  • abort - shortcut ⌘K aborts and halts any ongoing task

RsyncUI opens the Synchronize view at launch. Click the wand and stars (shortcut ⌘E) on the toolbar to estimate all tasks.

The estimate displays with blue numbers indicating data to be synchronized. To synchronize from the summarized estimate view, press the left arrow (shortcut ⌘R) on the toolbar.

By selecting a row within the estimate view, you will be presented with detailed information about that task.

After execution, the logs are updated.

6 - RsyncUI settings

Several settings can be adjusted. After changing a setting, save the changes to keep them next time you use RsyncUI. Access your settings with the shortcut ⌘,.

  • Rsync and path - settings for rsync and path
  • Log settings - settings logging
  • SSH - settings for SSH
  • Environment - setting environment variables for SSH, there are several variables that can be set, but RsyncUI only supports one environment variable

The “About" section displays the version of rsync in use and the path for storing and retrieving configurations to the permanent storage location.

6.1 - Rsync and path

After changing a setting, you have to save the changes to keep it next time you use RsyncUI.

Version rsync

It is recommended to install the latest version of rsync. RsyncUI provides direct path support for Homebrew on both Apple Silicon and Intel Macs. RsyncUI will determine the type of Mac you are using. The default path for Homebrew is:

  • Intel-based Mac: /usr/local/bin
  • Apple Silicon: /opt/homebrew/bin

Path rsync

The snapshot and syncremote features require the latest rsync. If an updated or new rsync is not installed by Homebrew, set the path manually.

  • If Rsync v3.x is enabled, set the optional path if not installed by Homebrew.
  • Any version of rsync will work, but only the default macOS versions and the latest rsync release have been tested
    • testing and verification ensure accurate parsing of rsync output

Path for restore

  • Preset temporary path for restoring single files and directory
  • Preset temporary path for a full restore

Mark days after

Tasks with an execution date older than the number of days are marked red.

Backup configurations

You can back up the current setup, configurations, and logs (including all profiles) at any time by clicking the wrench button. The backup is copied to your Documents directory with a timestamp: -month-day-year/hour/minute.

The backups are located in your Documents directory: $HOME/Documents/RsyncUIcopy-05-06-2024/08/21

6.2 - Log settings

After changing a setting, save the changes to keep them next time you use RsyncUI.

Check for Errors in Output:

  • default: off
  • if the word “error” is found in rsync output, you are notified

Add Summary Log Record:

  • default: on
  • a summary of each synchronization is added to the log records; view “Log Listings” from the Sidebar

No time delay Synchronize URL-actions

  • default: off
  • if on, estimated tasks triggered by URL-actions will synchronize without any chance to abort

Hide the Sidebar on startup

  • default: off
  • the sidebar can be hidden; when on, the sidebar is hidden when RsyncUI starts

Observe mounting of external drives

  • default: off
  • automatic profile selection when RsyncUI detects a new mount of a local attached disk

Always present the summarized estimate view

  • default “on”
  • after an estimate, by selecting the Magic Wand on toolbar Synchronize task view, always present the summarized view

Hide Verify remote:

  • default “on”
  • refer to section “Verify remote”, this is a kind of special function, default not enabled

Use two tavles Inspector

  • apply to main Sidebar menu Tasks
  • utlize one or two tables for select Inspector for edit tasks and parameters

Silence missing stats

  • default: off
  • stats is the summarized output from rsync; if on, RsyncUI notifies if stats are missing after termination
  • in version 2.8.4, missing stats are unlikely due to the new RsyncProcessStreaming

Validate arguments

  • default “on”, a validation for default parameters
  • if the —delete parameter is included in the task configuration, the validation checks its presence or absence based on the task configuration’s state, which specifies whether a delete operation is required
  • other default validated parameters include —archive, —compress, and —dry-run
    • the —archive parameter is always enabled
    • the —compress parameter is only applicable for remote tasks
    • if the user requests an estimate, the validation checks that the —dry-run parameter is included within the arguments

Confirm Execution:

  • see below

Error Output from rsync:

Sample of an error in output from rsync. If the switch “Check for error in output” is enabled, RsyncUI writes the output to the log file and alerts the user about any errors in rsync.

The log file is stored at $HOME/.rsyncosx/macserial/rsyncui.txt. The log file can be opened from the main view.

Confirm Execute

This option is only available if version 3.x of rsync is enabled.

The confirm dialog appears when the number of files to synchronize is comparable to a new task. Sometimes a remote server or local disk becomes unavailable or you forget to attach it. If you start a synchronize task when the destination is unavailable, rsync may think it’s a new full sync and prompt you to confirm or abort.

If a remote server is unavailable, rsync will likely complain and generate an error. If the check for error in output option is enabled in the user settings, the rsync error messages written to the log and an Alert will be displayed.

If a local disk is not attached, rsync will attempt to synchronize the data to the /Volumes/ directory on your Mac. This directory is typically where macOS mounts local attached disks.

/dev/disk5s2 on /Volumes/Import bilder (apfs, local, nodev, nosuid, journaled, noowners)
/dev/disk6s1 on /Volumes/Backups (apfs, local, nodev, nosuid, journaled, noowners)

Below the local attached volume is not connected, and the estimate may interpret this as a new synchronize task. If you have simply forgotten to attach the disk, you do not want RsyncUI to synchronize data to the /Volume directory.

6.3 - SSH settings

After changing a setting, save the changes to keep them next time you use RsyncUI.

In this view, you can use RsyncUI to help create an SSH key and set up a global SSH keypath and identity file. SSH keys are required for passwordless logins. You can use default SSH key values or define your own. For more information, see Passwordless login.

Local SSH Key Present

If “on” is selected in RsyncUI, it has detected a local SSH key.

The default RSA-based SSH key values are ~/.ssh/id_rsa and port 22. These are not required if you use the defaults. If you do not specify your own keypath and identity file, RsyncUI uses the defaults. If a local SSH key is present, leave the settings as-is or set your own keypath and identity file. RsyncUI will mark the selected settings as default.

Set SSH Keypath and Identityfile

The user can specify a selected SSH keypath and identityfile that will apply to all configurations.

  • SSH Keypath and Identityfile: If the user selects a different keypath or identityfile from the default, it will be used for all configurations.
  • Port Number: The user can specify the port number through which SSH communicates. The default port number is 22.

If global SSH parameters are set, they will apply to all configurations. It is possible to specify different SSH parameters for each task.

7 - Some advanced features

There are several advanced features in RsyncUI. If you are new to RsyncUI or rsync, learn the basics before using them.

Halting tasks

Right-click on a task (on column Synchronize ID or Task) to halt or release it. A halted task is marked and unavailable for estimate or execute. When released, it remembers what type it was before halting.

7.1 - URL commands

Deep links provide direct access to app features via URL. Using deep links, you can estimate and synchronize in a single click. Deep links in RsyncUI group actions that typically require multiple steps.

There are three methods of using deep links:

  • enable RsyncUI widgets
  • use URL functions direct within RsyncUI
  • save an URL-link in e.g. Notepad

RsyncUI Widget

One widget is embedded in RsyncUI:

  • estimating and synchronizing

The widget retrieves a saved URL from storage. In the Tasks view, there is a URL view where you can save the required URL. The widget shows whether a validated URL is present. To enable the widget on macOS, click the date and time icon in the upper right corner of your screen. Edit widgets and select RsyncUI, then add the widget.

After enabling the widget, a single click on the widget will launch RsyncUI and execute the corresponding action. To modify the URL, update and save the new URL.

Execute URL´s from within RsyncUI

Deep links also enable automation of actions within RsyncUI. A single click on the toolbar icon executes the URL action. RsyncUI generates the necessary URL based on the loaded profile and the required action. The two yellow toolbar icons allow execution of URL commands from within RsyncUI, as demonstrated in section above.

URL´s and Notepad

URL´s must start with rsyncuiapp://:

ActionURL
Estimate all tasks, automatically synchronize datarsyncuiapp://loadprofileandestimate?profile=Pictures
  • Estimate all tasks and automatically synchronize data
    • load profile, estimate all tasks and automatically synchronize data

View URL

You may copy the correct URLs and save the URLs in e.g Notepad for easy access to start a synchronize task.

If RsyncUI encounters an invalid URL link, it will generate errors. Only well-defined URLs (specifically those supported by RsyncUI) are processed and executed. All URLs are validated as valid, but only defined URLs for RsyncUI are actually executed.

7.2 - Passwordless login

To synchronize to a remote server using RsyncUI, passwordless SSH key authentication is required. RsyncUI does not support password-based authentication. SSH keys are generally more secure than passwords.

If default values for RSA-based SSH keys are used, no additional SSH info is needed in RsyncUI. Custom SSH keypaths, identity files, or port numbers must be configured.

The SSH keypath and identity file are specified as follows:

-e "ssh -i ~/.keypath/identityfile -p NN"

where:

  • -i ~/.keypath/identityfile is the SSH keypath and identity file
  • -p NN is the port number used for communication (default port 22)

To use custom SSH key and keypath data, add the following information to RsyncUI in the settings:

To configure the SSH keypath and identity file, refer to the user configuration in the SSH settings. When enabling a custom SSH keypath and identity file, please ensure they follow this format:

~/.mynewsshdirectory/mynewkey

For example:

~/.ssh_rsyncosx/rsyncosx

The path must start with ~ followed by /. RsyncUI will verify that the SSH keypath begins with ~ and contains at least two forward slashes (/) before saving the new SSH keypath.

The rsync command to synchronize my Documents directory to my Raspberry Pi server is set by RsyncUI as:

/opt/homebrew/bin/rsync --archive --verbose --compress \
-e "ssh -i ~/.ssh_rsyncosx/rsyncosx -p 22" --stats \
/Users/thomas/Documents/ thomas@raspberrypi:/backups/Documents/

For more information on passwordless login, please refer to the Tools for passwordless login section.

7.3 - Tools for passwordless login

RsyncUI uses standard SSH tools ssh-keygen and ssh-copy-id to help you set up passwordless login via SSH key authentication.

SSH Key Methods

RsyncUI supports two approaches:

  1. Default SSH keys: Uses the standard RSA key location (~/.ssh/id_rsa)
  2. Custom SSH keys: Uses a user-specified location (e.g., ~/.ssh_rsyncosx/rsyncosx)

With default keys, RsyncUI doesn’t add extra SSH parameters. Custom keys require additional parameters.

Step-by-Step: Creating Custom SSH Keys

Step 1: Create the SSH Directory

cd
mkdir .ssh_rsyncosx

Step 2: Generate the Key Pair

ssh-keygen -t rsa -N "" -f ~/.ssh_rsyncosx/rsyncosx

Parameters explained:

  • -t rsa - Creates an RSA-based key pair
  • -N "" - Sets no password (empty passphrase)
  • -f ~/.ssh_rsyncosx/rsyncosx - Specifies where to save the keys

Step 3: Copy Public Key to Server

ssh-copy-id -i ~/.ssh_rsyncosx/rsyncosx.pub -p NN user@server

Replace:

  • NN with your SSH port number (default is 22)
  • user with your remote username
  • server with your server address

Step 4: Set Correct Permissions

chmod 700 ~/.ssh_rsyncosx

Step 5: Verify the SSH-key

/usr/bin/ssh -p NN -i ~/.ssh_rsyncosx/rsyncosx user@server

Replace:

  • NN with your SSH port number (default is 22)
  • user with your remote username
  • server with your server address

Step 6: Configure RsyncUI

Add your custom SSH keypath and identity file in RsyncUI’s user configuration. RsyncUI will automatically apply these settings.

You can also set custom SSH parameters for individual tasks, which will override the global settings.

7.4 - Export and import

Tasks can be exported and imported between profiles and to new Macs. Select the “File” menu and then “Export and import.”

7.5 - Snapshots

In each snapshot task, RsyncUI stores the next snapshot number. The number increments by one after each run. Rsync automatically creates the next snapshot directory, and RsyncUI updates the stored number. The number is displayed as part of the log timestamp.

If a file named “file.txt” is saved in the initial snapshot and remains unchanged or is deleted, the “file.txt” in the latest snapshot is a hardlink to the original file in the first snapshot.

If “file.txt” is deleted from the source, the filesystem manages the hardlink appropriately during the delete operation.

In RsyncUI, the first and last snapshots are never deleted, even if all snapshots are marked for deletion.

Snapshots

A snapshot is a saved state or backup of data at a specific point in time. Each snapshot is synchronized with the source at the time of creation.

Remote Server

The rsync parameter for the next snapshot to synchronize to a remote.server is:

--link-dest=~/snapshots/n-1 /Users/thomas/data/ user@remote.server:~/snapshots/n

where:

  • n is the number of the next snapshot to be synchronized
  • n-1 is the latest synchronized snapshot
  • /Users/thomas/data/ is the source directory, only read by rsync
  • ~/snapshots/ is the destination directory where snapshots are synchronized

Local Attached Disk

The above example with a local attached disk, mounted at /Volumes/backup, is:

--link-dest=/Volumes/backup/snapshots/n-1 /Users/thomas/data/ /Volumes/backup/snapshots/n

where:

  • n is the number of the next snapshot to be synchronized
  • n-1 is the latest synchronized snapshot
  • /Users/thomas/data/ is the source directory, only read by rsync
  • /Volumes/backup/snapshots/ is the destination directory where snapshots are synchronized

Snapshot Creation

To create a snapshot task, select “snapshot” as the action in the Add tasks section. RsyncUI automatically manages the snapshot number “n” for the task. This number represents the next available snapshot number and is used to calculate the rsync parameter.

Snapshot Administration

Snapshot administration is essential for maintaining an organized and efficient backup system. It involves regularly reviewing and deleting unnecessary or outdated snapshots to prevent clutter and optimize backup space usage.

Deleting Snapshots

Deleting snapshots is a destructive operation that should be performed with caution. It is important to have a plan in place to determine which snapshots to keep and which to delete. RsyncUI provides a simple plan for managing snapshot retention.

The Plan for Keep and Delete

Selecting the “Tag” button evaluates all snapshots based on the date within the log record. Based on the selected plan and date, snapshots are either tagged with “keep” or “delete.” Snapshots tagged with “delete” are also preselected for deletion. To delete the marked snapshots, select the “Delete” button.

Even if all snapshots are tagged for deletion, the first and last snapshots are never deleted. They are automatically removed from the delete list during the internal preparation for deletion.

The plan is based on three time periods, where the plan parameter affects previous months (and years):

  • The current week

    • keep all snapshots within the current week
    • the value of plan has no effect on the current week
  • The current month (minus the current week)

    • keep all snapshots for the selected day of week, e.g., all snapshots every Sunday this month
    • the value of plan has no effect on the current month
  • Previous months (and years)

    • keep the snapshot in the last week of the month for the selected day of week, e.g., the last Sunday in the month
    • if plan == Every, keep snapshots for the selected day of week, e.g., all snapshots every Sunday in previous periods
    • if plan == Last, keep snapshots for the selected day of week, e.g., all snapshots on the last Sunday of every month in previous periods

Tagging and Deleting Snapshots

It is recommended to optimize the number of snapshots regularly. Select a plan, tag the snapshots, and delete the snapshots marked for deletion.

8 - General information

General information that may be useful.

8.1 - Latest version of rsync

The default /usr/bin/rsync differs between macOS versions:

  • macOS Sonoma: Uses rsync version 2.6.9 (released November 2006)
  • macOS Sequoia and Tahoe: Use openrsync, a BSD-licensed implementation compatible with rsync protocol 29 and version 2.6.9

Installing rsync via Homebrew

Install the latest version using Homebrew:

brew install rsync

After installation, configure RsyncUI:

  1. Navigate to Settings and select Rsync and path
  2. Enable Rsync ver3.x
  3. RsyncUI will automatically set the correct path

Note: RsyncUI’s snapshot and sync remote features require rsync version 3.x due to limitations in version 2.6.9.

8.2 - MIT License

The MIT License (MIT), also explained on Wikipedia.

Copyright (c) 2020 - 2025 - Thomas Evensen

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject
to the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

8.3 - RsyncUI files, JSON

RsyncUI stores all data locally on your Mac in JSON format, including task configurations, logs, and settings. Understanding the file structure helps with backup and troubleshooting.

File Locations

All RsyncUI files are in: $HOME/.rsyncosx/<macserialnumber>, where <macserialnumber> is your Mac’s serial number retrieved at startup.

At startup, RsyncUI reads user settings and the default configuration from JSON files. Log records load only when viewing or updating logs.

Configuration Files

Task configurations are stored in:

$HOME/.rsyncosx/<macserialnumber>/configurations.json

If you use profiles, each profile has its own configuration file:

$HOME/.rsyncosx/<macserialnumber>/<profile>/configurations.json

Log Records

Synchronization logs are stored in:

$HOME/.rsyncosx/<macserialnumber>/<profile>/logrecords.json

User Settings

User settings are stored in:

$HOME/.rsyncosx/<macserialnumber>/rsyncuiconfig.json

User settings apply to all profiles.

The Log File

The application log file is a text file that can be viewed within RsyncUI:

$HOME/.rsyncosx/<macserialnumber>/rsyncui.txt

8.4 - Signing and notarization

RsyncUI is digitally signed with my Apple Developer Certificate and notarized by Apple. This verification ensures the application is free from malicious code and works with Gatekeeper. When opening a new or updated app for the first time, Apple will display a notification.

9 - Parameters to rsync

RsyncUI provides sensible defaults for synchronization. The defaults applied to a task depend on whether rsync runs over a network or to a local disk.

You can adjust the defaults. Task configurations store their parameters, including any task-specific SSH option, which overrides the global SSH setting.

Task-Specific Parameters to rsync

To add a parameter, enter it in a field. RsyncUI supports seven user-defined parameters across the fields. You are responsible for correctness—invalid values will cause rsync errors.

Parameters to rsync are typically constructed as follows (examples only—rsync supports many options):

  • parameter=value
    • --exclude-from=/Volumes/home/user/exclude-list.txt - exclude list for rsync
  • parameters only
    • --stats - enables the display of statistics during the synchronization process
    • --dry-run - executes a simulated synchronization without modifying the files

For a comprehensive list of parameters for rsync, please refer to the official rsync documentation.

Task-Specific SSH Parameter

If you rely on default SSH keys and no SSH info is set in RsyncUI, the parameter -e ssh is appended so data is tunneled and encrypted. This applies only to remote tasks and restores.

Task-specific SSH parameters override global SSH settings.

  • ssh-port: specify if ssh uses a port other than the default port 22
  • ssh-keypath and identity file: typically, these are .ssh/id_rsa; set only if alternative ssh-keypath and identity file are to be used by ssh

Backup Switch

The rsync command allows you to instruct it to save modified and deleted files in a separate backup directory prior to the synchronization process. This feature can be enabled by setting the following parameters:

  • --backup - Enables saving modified files
  • --backup-dir - Directory where modified or deleted files are saved before synchronization

RsyncUI provides a default value for this parameter, but you can customize it as needed. For a synchronized directory named <directory to synchronize>, the default backup directory is ../backup_<directory to synchronize>, which is relative to the synchronized directory.

10 - Schedule

Schedules are saved automatically. RsyncUI loads tasks that are due. Tasks scheduled while the Mac was shut down are not loaded. If the Mac sleeps, unexecuted tasks appear in the Schedule view. Missed tasks do not run automatically.

Add Schedule

To add a schedule, click on the date, set the time, and schedule the task. When a schedule is active, the user is notified in the sidebar or on the toolbar when the sidebar is hidden. Right-clicking on a date will present schedules by date.

Tasks added to the schedule are validated. The planned next task schedule must either:

  • be 10 minutes ahead of the first schedule in queue
    • the first schedule in queue is always ahead of the current time
  • be within 10 minutes before the first schedule in queue
    • as above, the planned next schedule must also be later than the current time

The Schedule function is designed to handle Mac sleep mode:

  • when a scheduled task is not executed because the Mac enters sleep mode, the Schedule function retrieves unexecuted tasks and displays them in a table
  • the user may move the unexecuted tasks to the schedule table

The Schedule view visually distinguishes invalid times in red font. Only validated task schedules are incorporated into the schedule.

Delete Schedules

Select one or more schedules and press the backspace key.

11 - Profiles

Tasks can be organized into profiles. A profile is a named directory where RsyncUI stores its files.

When you create a profile (for example, newprofile), RsyncUI creates a new directory at:

$HOME/.rsyncosx/<macserialnumber>/newprofile

where <macserialnumber> is your Mac’s serial number. All tasks and log files for that profile are stored within this directory.

The list on the right shows tasks not updated within the number of days configured under “Mark days after” in Settings.

12 - QuickTask

Use QuickTask to quickly copy or transfer files. QuickTask remembers the last task as defaults; you can clear them via the toolbar. QuickTask works only with remote servers and requires passwordless SSH login.

There are two types of quick tasks:

  • synchronize - synchronize local files to remote, aka push data
  • syncremote - synchronize remote files to local, aka pull data

Trailing Slash Options

  • Add - adds a trailing slash to both the source and destination
  • Do not add - does not add a trailing slash, or if added, removes it
  • Do not check - does not check for a trailing slash on either the source or destination

After entering data, the default task is a --dry-run task. Inspect the result before executing the actual run.

Folder Parameters

  • Source folder - required
  • Destination folder - required
    • ~ expands to the remote home directory
    • you can also use the full path, depending on where the backup is stored on the remote

Remote Parameters

  • Remote username - username for login to the remote server
  • Remote server - either server name or IP address for the remote server

13 - Restore data

RsyncUI restores only from remote servers. For local attached volumes, use Finder. Always restore to a temporary path to avoid overwriting your original data.

How to Restore Files

  1. Filter files: Use the filter field to search for files or directories. The filter shows only filenames containing the search string.
  1. Select files: Choose either a file or a directory to restore.

  2. View the command: Toggle the command switch to see the actual restore command that will be executed.

  3. Preview the restore: Select restore to display a --dry-run preview of the restore operation.

  1. Execute the restore: Turn off the --dry-run toggle to perform the actual restore.
  1. Review results: After the restore completes, RsyncUI displays the output from rsync.