RsyncUI - a GUI for rsync

RsyncUI is a pure SwiftUI and Swift based macOS application utilizing the command line tool rsync for synchronizing files. It is rsync which executes the actual synchronize task. RsyncUI is a GUI only ontop of rsync. RsyncUI is signed and notarized by Apple. Apple has verified it for not containing malicious code and digitally signed. rsync is a file based tool for synchronization of files. Before commenze use of RsyncUI RsyncUI is compiled for macOS Monterey and later.

Changelog

RsyncUI is signed and notarized and built as Universal macOS Binary. Please see info about the latest version of rsync in install. Version 1.4.8 build(70) - 24 March 2023 There are cleanup and refactor of the main tasks view, internal code only. There are also two GUI updates: after an estimate it is now possible to execute task direct there is a list of all tasks for all profiles sorted by last run date from the main tasks view Version 1.

How to compile RsyncUI

RsyncUI is only depended upon the Swift language and SwiftUI and Foundation frameworks. There are two ways to compile, either in Xcode or utilize make from command line in RsyncUI catalog. To use make require Xcode command line utilities to be installed. Execute the following command and follow the instructions. xcode-select --install Remove signing credentials or replace To compile you have to either remove signing or replace signing credentials. To remove or replace select Target RsyncUI and tab “Signing and Capabilities”.

Latest version of rsync

The default version 2.6.9 of rsync in macOS was released in nov 2006. And there has been several fixes and releases since then. The news about the current release of rsync is here. Due to new features in rsync and dependency to shared libraries it is not possible to bundle the latest version together with RsyncUI. It is adviced to install rsync as part of Homebrew. In RsyncUI select user configuration and set path for optional version of rsync.

Passwordless logins by ssh-keys

RsyncUI utilizes user set ssh keypath and identityfile. Default values for ssh are ~/.ssh/id_rsa and portnumber 22. It is not required to set your own values for key path and identityfile if default values are used. The ssh parameter within the rsync command is, if set by the user: -e "ssh -i ~/.ssh_keypath/identityfile -p NN" where -i ~/.ssh_keypath/identityfile is the ssh keypath and identityfile and -p NN is the port number ssh communicates through, default port 22

Rsync daemon setup

With a few tweaks it is possible to get RsyncOSX working with rsync daemon. Be aware of not utilizing ssh, transfer of data is not encrypted. This is might not a problem on a local network, but I would not advise it on a public network. Also be aware of snapshot is not possible with a rsync daemon setup. Setting up a rsync daemon setup require a server side setup and some tweaks in RsyncOSX.

RsyncUI configuration files

RsyncUI stores its configurations, schedules and log records and user settings as JSON files. The storage of those files is: $HOME/.rsyncosx/macserialnumber In the Settings and Info part the used path for configuration files is shown. RsyncUI evaluates the computer mac serial number at startup. The catalog $HOME/.rsyncosx/macserialnumber/ is used because RsyncUI and RsyncOSX shares the path from where configuration files are read and stored. Configuration files $HOME/.rsyncosx/macserialnumber/configurations.json If profile is utilized:

Snapshots

Utilizing snapshot is an effective method for restore of previous versions of data and deleted files. Snapshot utilize hardlinks and only changed and deleted files are saved as separate files in a snapshot. Files which are not changed are hardlinks to the original file. If a file.txt is saved in snapshot number one and never changed or deleted, the file file.txt in the latest snapshot is just a hardlink to the original file.

RsyncUI settings

There are a few settings to be tweaked. Settings are saved to permanent store. The settings are dividede into three parts. When the user has changed a setting it is marked with a change on the Save button. The Save button is disabled until a change has happend. Usersettings might be opened by the default ⌘, shortcut for settings. Settings - rsync and other settings Ssh - SSH settings Environment - environment settings The info tab shows which version of rsync in use and the path for storing and reading configurations to permanent store.

Quicktask

Use RsyncUI for quickly synchronize files to either local or remote storage. If synchronizing to a remote storage require setup of passwordless login. There are two types of quick tasks: synchronize - synchronize local files to remote syncremote - synchronize remote files to local Caution: if syncremote the localcatalog in the form is the remote data and remotecatalog is the local data where remote data will land when pulled. After entering data, default is a --dry-run task.