RsyncUI - a GUI for rsync

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. There are no third party libraries included in the code. It is thought three source codes not developed by me are included in the code. The third parts source code is only for support and not critical if removed.

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.7.2 build (85) - 23 September 2023 This is a maintanence relase. Build by Xcode 15 for macOS Monterey to macOS Sonoma. There are no bugfixes (none reported), some enhancements only and a few cleanups in code. there is a change in restore for snapshost task, either select a restore from a previous snapshot or default the latest When macOS Sonoma is released there will be a release for macOS Sonoma only.

Estimate on macOS 12 Monterey

Select the wand and stars on the toolbar for estimate all tasks. After the estimate run, Dismiss the view. From the main view select a task and the i from the toolbar. And the result of the estimation run is displayed.

How are the apps built?

Under development. This page is an overview of the main components of RsyncOSX and RsyncUI. The development of the apps has been an evolving process. The open source community has been and still is a great resource for ideas and how to solve specific tasks. Both apps today are stable and in a state of maintenance. Some numbers: App Lines of code Swift files Version 1.0 RsyncUI about 14K about 170 6 May 2021 RsyncOSX about 11K about 120 14 March 2016 Which application to use?

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.