RsyncUI - a GUI for rsync

Posted by Thomas Evensen on Sunday, November 12, 2023
Last Modified on Friday, December 1, 2023

RsyncUI is a pure SwiftUI based macOS application utilizing the command line tool rsync for synchronizing files. It is rsync which executes the real synchronizing task, not RsyncUI. RsyncUI is a GUI only on top of rsync. RsyncUI is signed and notarized by Apple. Check out the categories for information about other topics not linked to on this page.

Before commencing use of RsyncUI

See the changelog for updates. RsyncUI is built as a Universal macOS Binary, which means it runs nativly on Apple Silicon and Intel-based Mac computers. RsyncUI can be installed by homebrew by command

brew install --cask rsyncui

or by download from GitHub.

Remote servers, passwordless logins and local disks

RsyncUI can synchronize your data to remote servers on the Internet, servers on your local LAN and to local attached disk. If you only want to synchronize data to a local attached disk, connect the disk, add source and destination and you are ready for your first task. If you want to synchronize data to a server there is some more setup to do. If you have enabled passwordless login by ssh you only have to add login id, servername, source and destination and you are ready to synchronize. If you have not enabled passwordless login, there are some more actions required before your first task.

New users

The first time RsyncUI starts, it presents a link to important information. There is also info about the latest version of rsync to install.

RsyncUI can be used in parallel with RsyncOSX. The catalog for storing configuration files is $HOME/.rsyncosx/macserialnumber/. RsyncUI and RsyncOSX do not share user settings, e.g, like enabling version 3.x of rsync, has to be set in both apps.

There are two ways for information and navigation within RsyncUI, either by sheets or by Navigation Stack. Default for new users is by sheets and Navigation Stack might be switch on in user settings. See more info about NavigationStack.

Aborting a task

Please be aware it is an external task not controlled by RsyncUI, which executes the command line tool rsync. RsyncUI is monitoring the task for progress and termination. The user can at any time abort a task. Please let the abort to finish and cleanup properly before starting a new task. It might take a few seconds. If not, the apps might become unresponsive.

RsyncUI vs RsyncOSX

For the moment, there are more users of RsyncOSX than RsyncUI. But the number of users of RsyncUI is growing. And Apple is clear, SwiftUI, which RsyncUI is developed by, is the future. This means that most of my development is now on RsyncUI. RsyncOSX is still supported, but only issues are fixed and no new features.

RsyncUI and RsyncOSX share most of the code for the model components. The main differences between the two apps are the user interface (UI) and how the UI is built. RsyncUI is developed utilizing SwiftUI. RsyncOSX is developed utilizing storyboards. Both apps utilize another great declarative library, Combine, developed by Apple and JSON files for storing tasks, logrecords and user configuration.

New tasks, verify task and synchronizing data

After adding a task within the main view, a double click on task executes a dryrun and the second double click executes the real run. A verification of a new task might also be executed by opening the Rsync parameters view, selecting the task and choosing the Verify button.

For more experienced users of rsync, from within the Rsync parameters view, select the new task. Copy and paste the synchronization string into a terminal view. The rsync command includes the --dry-run parameter as default within this view. Always verify, by a --dry-run, the result of a new task before executing it.