Note: I have utilized the new AI-based writing tools in macOS 15.2 for proofreading most of text within this
documentation. Even if it is excelent tools, especially if your native language is not English, there may
be some weird translations within the text. Please let me know if you find text which does not make sence.
RsyncUI is a macOS application developed using Swift and SwiftUI, designed for macOS Sonoma and subsequent versions.
It leverages the command-line tool rsync for file synchronization. Notably, rsync executes the synchronization tasks, while
RsyncUI provides a graphical user interface (GUI) on top of rsync.
RsyncUI is digitally signed and notarized by Apple.
Changelog and Installation
For the most up-to-date information, please refer to the changelog. RsyncUI is constructed as a Universal macOS Binary,
ensuring native execution on Apple Silicon and Intel-based Mac computers.
If installed via Homebrew, the SHA-256 hash is automatically verified. For downloads from GitHub, please verify the SHA-256 hash manually.
For New Users
For new users, kindly refer to the important information. Additionally, please find information
about the latest version of rsync to install.
File Storage and Synchronization
RsyncUI provides a centralized catalog for storing files, located at:
$HOME/.rsyncosx/macserialnumber/.
RsyncUI supports synchronizing data to:
Local attached disk
Remote servers on the Internet or local LAN
Additional Setup Required for Data Synchronization
For synchronizing data to servers on the Internet or local LAN, additional setup is necessary. If passwordless login
via SSH keys has been enabled, you can initiate data synchronization by adding the source, destination, login ID, and server name.
If passwordless login is not enabled, additional actions must be taken before executing your first task.
New Tasks, Verification, and Synchronization
After adding a task, you can execute a --dry-run by double-clicking on the task in the main view. The second double-click will
execute the task in real time, including synchronization.
A verification of a new task can also be executed by opening the Tasks or Rsync parameters view from the main sidebar,
selecting the task, and choosing the “play” icon on the toolbar. This action will execute an estimation run and a
--dry-run to verify the task.
For more experienced users of rsync:
You can select the new task from the Rsync parameters view, copy and paste the synchronization string into a terminal view,
and execute the rsync command. The --dry-run parameter is automatically set as default in this view.
Local attached disk, remote server, and passwordless login:
RsyncUI can synchronize your data to a local attached disk, remote servers on the Internet, and on your local LAN.
If you only want to synchronize data to a local attached disk, connect the disk, add the source and destination,
and you are ready for your first task.
If you want to synchronize data to a server, on the Internet, or your local LAN, there is some more setup to do.
If you have enabled passwordless login by ssh-key, you only have to add source, destination, login id,
and servername and you are ready to synchronize data. If you have not enabled passwordless login, there are some more
actions required before your first task.
Aborting a task:
Please note that this is an external task not controlled by RsyncUI, which executes the command-line tool rsync.
RsyncUI monitors the task for progress and termination.
The user can abort a task at any time. However, it is essential to allow the task to complete and perform any necessary
cleanup operations before starting a new task. This process may take a few seconds, and if not, the applications may
become unresponsive.
1 - Add tasks
Always verify the result of a new task before executing it using the --dry-run option, which performs an estimation run.
After adding a task, select it from the Add and update task view and then click the play icon on the toolbar to perform an estimation run.
A task requires a minimum of a local catalog and a remote catalog.
Pressing the Enter key will advance to the next field. Pressing the Enter key will automatically add a new task after the last input. Alternatively, you can click the checkmark icon on the toolbar to add a new task. Tasks are saved to permanent storage after each entry.
Delete
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:
Task
synchronize: Default task that maintains synchronization between the source and destination.
snapshot: Saves changes and deletions prior to a synchronize operation.
syncremote: Synchronizes a remote source to a local volume.
Catalog Parameters
Local catalog: Required field.
Remote catalog: Required field.
The backup catalog may also be a local catalog on a local attached disk.
Trailing /
Dont´t add /: by default a trailing / is added to both source and 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:
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.
2 - Update tasks
To update a task, select the task and then select the checkmark icon on the toolbar or press the Enter key.
Global changes, either partial or complete string modifications, can be applied to all tasks simultaneously. While updating tasks individually may be feasible, this method is more effective for modifying all tasks.
Example:
Suppose parts of a remote catalog need to be updated. The $ character serves as a split character, allowing the string backups $ newbackup to update all remote catalogs. If no split character is present, the entire string is replaced.
Remote User and Server:
There is no split character for remote users and servers.
Data Confirmation and Storage Update:
Changes to data must be confirmed before being updated and written to storage.
Dynamic View Updates:
When a split character $ is added, the view dynamically updates with the replaced string.
Catalogs
Selecting the “Home” icon displays all catalogs from your “$Home” directory. If a local disk is attached, the mounted volumes are also presented.
Select the home catalog and the mounted volume. Return to the main Task view, and RsyncUI will suggest some values.
3 - Synchronize data
The Synchronize view enables the execution of either all or selected tasks in a single operation,
either by shortcut actions or by functions on the toolbar.
Or, for a single task,
a double click on one task initiates a --dry-run, an estimate run, and the subsequent
double click executes the actual run for that task.
Shortcut actions within the Synchronize view:
Estimate: ⌘E estimates all or selected tasks
Synchronize: ⌘R synchronizes all or selected tasks without estimation
no progress bar during synchronization, progress bar requiere estimation first
Abort: ⌘K aborts and halts any ongoing task
Upon launching RsyncUI, it automatically opens the Synchronize view. Selecting the wand and stars (shortcut ⌘E)
from the toolbar initiates estimation of all tasks.
The outcome of an estimate is displayed, with blue numbers indicating data that requires synchronization.
To execute the actual synchronize tasks, directly from the summarized estimated view, by pressing the left
arrow (shortcut ⌘R) on the toolbar.
By selecting a row within the estimated view, you will be presented with the detailed information.
After execution, logs are updated.
4 - Verify remote
The user is solely responsible for determining the appropriate action. RsyncUI provides only advisory guidance,
based on a rudimentary evaluation of a push and pull data comparison. The function also requiere version 3.x of
rsync to be installed and enabled.
Note: Within the Push or pull view, the text switching --dry-run mode off is incorrect. The switch itself is correct,
but the text displayed in the button is misleading; text should be Off. Fixed in code.
The function is not intended to be automated. Users must verify their subsequent actions. If the remote destinations are stored
on a Git server, such as GitHub or Gitea, regular git push and pull commands will suffice. Git is a superior tool for
version control, but in certain situations, creating a Git repository may not be feasible, and this function may prove useful.
The verification applies only to remote destinations on servers.
Synchronization of Multiple Macs to a Remote Server
If you are using multiple Macs, as I do, and all Macs synchronize data to the same remote storage, there may be challenges maintaining synchronization
and preventing data loss, particularly if the remote storage is not a Git server, such as GitHub and Gitea.
I have over 3,000 bird photos (130 GB) from the past four years that are synchronized using RsyncUI to a local remote server at home.
New photos are added, old photos are deleted, and updates are made to sidecars of the photos. As long as I was using only one Mac,
all updates were made on that Mac. However, with two Macs, I now use both Macs to work on my photos.
When I synchronize my changes, I need to transfer those changes to my second Mac.
Arguments for rsync
The following arguments are used in both push and pull.
--itemize-changes - output change-summary for all updates
--dry-run - rsync execute an estimate run
--update - evaluates the timestamp
The result from the pull command is subtracted from the result of the push command. Conversely, the push command is subtracted
from the result of the pull command. After both subtractions, the resulting arrays are compared based on the number of rows.
The outcome is as follows:
If pull has more data than push, it is likely that the remote repository is more up-to-date than the local repository.
If push has more data than pull, it is likely that the local repository is more up-to-date than the remote repository.
If the number of rows is equal, it is likely that the local repository is more up-to-date than the remote repository.
Itemized output - push or pull
The parameter -i or --itemize-changes produces details about each file. The format of the output is YXcstpoguax:
YXcstpoguax
|||||||||||`-------------------------- the TYPE OF UPDATE:
|||||||||| <: file is being transferred to the remote host (sent).
|||||||||| >: file is being transferred to the local host (received).
|||||||||| c: local change/creation for the item, such as:
|||||||||| - the creation of a directory
|||||||||| - the changing of a symlink,
|||||||||| - etc.
|||||||||| h: the item is a hard link to another item (requires --hard-links).
||||||||||"+" - the file is newly created
|||||||||| .: the item is not being updated (though it might have attributes that are being modified).
|||||||||| *: means that the rest of the itemized-output area contains a message (e.g. "deleting").
||||||||||`----------------------------- the FILE TYPE:
||||||||| f for a file,
||||||||| d for a directory,
||||||||| L for a symlink,
||||||||| D for a device,
||||||||| S for a special file (e.g. named sockets and fifos).
|||||||||`--------- c: different checksum (for regular files)|||||||| CHANGED VALUE (for symlink, device, and special file)`-------- s: Size is different
`------- t: Modification time is different
`------ p: Permission are different
`----- o: Owner is different
`---- g: Group is different
`--- u: The u slot is reserved for future use.
`-- a: The ACL information changed
RsyncUI indicates remote is more updated than my local repository. However, this is merely an advisory.
I must verify this independently to ensure my certainty. From the toolbar, choose Push or Pull
to view more details.
5 - Export and import
Tasks can be exported and imported between profiles and to new Macs. Select the “File” menu and then choose “Export and import.”
Export
Import
6 - Latest version of rsync
The default /usr/bin/rsync on macOS Sonoma and macOS Sequoia differ in their versions. Both versions adhere to protocol 29 of version 2.6.9,
but the licenses for these versions are distinct. Additionally, there may be variations in the underlying code.
The command /usr/bin/rsync --version in macOS Sequoia displays openrsync: protocol version 29, rsync version 2.6.9 compatible.
It is recommended to install the latest release of rsync via Homebrew. To install Homebrew, execute the following command:
brew install homebrew
Then, install the latest version of rsync using the command:
brew install rsync
In RsyncUI, navigate to the settings menu and select Rsync and path. If rsync is installed via Homebrew, simply tick the boxes for Rsync ver3.x and ensure that RsyncUI correctly sets the path for rsync.
Note:
RsyncUI supports snapshots of files. However, due to a bug in version 2.6.9 of rsync, the snapshot feature in RsyncUI requires the installation of the latest version of rsync.
7 - Passwordless login
To synchronize data to a remote server using RsyncUI, passwordless login via SSH-key authentication is required.
It is not possible to provide a user login and password during data synchronization via RsyncUI.
SSH-key authentication is generally considered more secure than password-based authentication.
If default values for RSA-based SSH-key authentication are used, no additional information about the SSH-key is required in RsyncUI.
However, it is necessary to provide information if custom SSH-keypath, identityfile, or port number is used.
Example:
For demonstration purposes, I have created an SSH-key specifically for rsync. The SSH-keypath is set to ~/.ssh_rsyncosx/, and the RSA-based SSH-key is used. The SSH-keypath and identityfile are specified as follows:
-e "ssh -i ~/.ssh_rsyncosx/identityfile -p NN"
where -i ~/.ssh_rsyncosx/identityfile is the SSH-keypath and identityfile, and -p NN is the port number used for communication (default port 22). The identity file for rsync is rsyncosx, and the default port is 22.
The rsync command to synchronize my Documents catalog is set by RsyncUI to my Raspberry Pi server:
To use my own SSH key and SSH keypath data, the following is added to RsyncUI in the settings:
To configure SSH-keypath and Identityfile, refer to the user configuration located in the SSH settings.
Global SSH Parameters:
Global SSH parameters apply to all configurations. However, it is possible to set specific SSH values for each task.
SSH-Keypath and Identityfile Validation:
When enabling user-selected SSH-keypath and Identityfile, please ensure they adhere to the following format:
~/.mynewsshcatalog/mynewkey
The prefix must be ~ followed by a /. RsyncUI will verify that the SSH-keypath begins with ~ and contains at least two / characters before saving the new SSH-keypath.
For more information on passwordless login, please refer to the Tools passwordless login section.
8 - RsyncUI files, JSON
RsyncUI read and store configurations, log records and user settings as JSON files.
The location of files is: $HOME/.rsyncosx/macserialnumber. RsyncUI get the computer mac serial number at startup.
At startup RsyncUI reads the user settings and default configurations from JSON data. Log records are only loaded when viewing logs
and when updating the logs after a synchronization task.
The logfile is a text file and normally view within RsyncUI.
$HOME/.rsyncosx/macserialnumber/rsyncui.txt
9 - Snapshots
Utilizing snapshots is an effective method for restoring previous versions of data and deleted files. Snapshots employ hardlinks (https://en.wikipedia.org/wiki/Hard_link) to save only modified and deleted files as separate files in a snapshot. Files that remain unchanged are hardlinks to the original file.
In every snapshot task, RsyncUI stores the next available snapshot number for use. The snapshot number is a sequential number incremented by one after each snapshot task execution. The rsync command automatically creates the next snapshot catalog by number and stores the next snapshot number to use on the task. The snapshot 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 deleted, the file “file.txt” in the latest snapshot is a hardlink to the original file in the first snapshot.
If the “file.txt” is deleted from the initial snapshot, the filesystem handles the update and determines the appropriate location to save the original file as part of the delete operation.
In RsyncUI, even if all snapshots are marked for deletion, the first and last snapshots are not deleted.
Note: Snapshot functionality is not available in a rsync daemon setup.
Definition of a Snapshot:
A snapshot is a saved state or backup of data at a specific point in time. Each snapshot is synchronized with the local catalog at the time of creation.
Previous versions of files can be restored from a snapshot using the --link-dest parameter with rsync.
Remote server
The rsync parameter for next snapshot to synchronize to a remote.server is:
n is the number of next snapshot to be synchronized
n-1 is the latest synchronized snapshot
/Users/thomas/data/ is the source catalog, only read by rsync
/Volume/backup/snapshots/ is the destination catalog where snapshots are synchronized
Snapshot Creation
To create a snapshot task, select “snapshot” as the task type in the add tasks section. Do not copy and paste the command for execution within a terminal window. RsyncUI automatically saves the snapshot number “n” to the task. This number represents the next available snapshot number and is used to calculate the rsync parameter. The value of “n” is retrieved from the configuration.
Snapshot Administration
Snapshot administration is crucial to maintain an organized and efficient backup system. It involves deleting unnecessary or irrelevant snapshots to prevent clutter and simplify the management of the backup space. Regularly reviewing and deleting snapshots is essential to ensure that only the most relevant data is retained.
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 deleting and keeping snapshots.
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 not deleted. The first and last snapshots are removed from the delete list as part of the internal preparation for deletion.
The plan is based on three parts, where the parameter plan has an effect on previous months (and years):
the current week
keep all the snapshots within the current week
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
value of plan has no effect on the current month
previous months (and years)
keep the snapshot in the last week of month for selected Day of week, e.g the last Sunday in the month
if plan == Every, keep for the selected Day of week, e.g all snapshots every Sunday, every week in previous period
if plan == Last, keep for the selected Day of week, e.g all snapshots every last Sunday every month in previous period
Tagging and Deleting Snapshots
It is recommended to optimize the number of snapshots. Select a plan, tag the snapshots, and delete the snapshots marked for deletion.
10 - Tools passwordless login
The following SSH tools are utilized: ssh-keygen and ssh-copy-id. RsyncUI primarily assists in establishing an RSA-based key.
The SSH functions facilitate two methods:
Private and public SSH-key pairs based on default SSH values for RSA keys (~/.ssh/id_rsa)
Private and public SSH-key pairs based on user-selected values (~/.ssh_rsyncosx/rsyncosx)
If creating a new public SSH-key pair based on default SSH values for RSA keys, RsyncUI does not add any parameters to the rsync
command because these are default values. SSH parameters are added to the rsync command only when the second method is selected.
The following commands for creating a new, alternative private and public SSH-key pair are provided:
The following command copies the newly created public key to the server:
ssh-copy-id -i /Users/thomas/.ssh_rsyncosx/rsyncosx -p NN user@server
The user can also configure the new SSH keypath and identityfile in a terminal window and subsequently add them to the Userconfig.
RsyncUI will automatically enable these settings when added to the Userconfig.
The user can also apply local SSH keypath and identityfile and SSH port, which govern global settings, to each task.
Ensure that the new SSH catalog has the appropriate permissions. Open a terminal window and execute the following command:
chmod 700 ~/.ssh_rsyncosx
11 - RsyncUI settings
There are several settings that can be adjusted. These settings are saved to a permanent storage location.
Users can access their settings by default using the shortcut ⌘,.
Rsync and Path: - Settings for rsync and path
Monitor and Log: - Settings for monitoring and 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 “Info” section displays the version of rsync in use and the path for storing and retrieving configurations to the permanent storage location.
11.1 - Monitor and log
Changes to settings are automatically saved.
Monitor Network:
Monitor network connection during task execution.
If a network connection is dropped during execution, RsyncUI sends an interrupt signal to the task, halting it with an error.
Check for Errors in Output:
If the word “error” is discovered in the output from rsync, it is notified.
Add Summary Log Record:
By default, “on,” a summary of each synchronization is added to the log records. View “Log Listings” from the Sidebar.
Confirm Execution:
See below.
The log file is stored at $HOME/.rsyncosx/macserial/rsyncui.txt. The log file can be opened from the main view.
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.
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. Occasionally, a remote server or local disk becomes unavailable or is forgotten to be attached. If you initiate a synchronize task without being aware that the destination resource is not available, rsync may mistakenly believe this is a new full synchronize and prompts a dialog to confirm synchronize 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/ catalog on your Mac. This catalog 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 catalog.
11.2 - Rsync and path
Changes to settings are automatically saved.
Version rsync
It is recommended to install the latest version of rsync using Homebrew. 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
If rsync is installed by Homebrew, the path is set to the default value or rsync if it is part of your macOS. The snapshot feature
requires version 3.2.x of rsync.
If the version of rsync is not installed by Homebrew, set the path to rsync.
If Rsync v3.x is enabled, set the optional path if not installed by Homebrew.
Any version of rsync will work, but only versions 2.6.9 and the latest release of version 3.2.x have been tested and verified.
Path for restore
Preset temporary path for restoring single files and catalogs
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 backup the current setup, configurations, and logs, including all profiles, at any time by clicking the wrench button.
The backup executes a copy to your Documents catalog and appends a timestamp -month-day-year/hour/minute to the copy.
The backups are located in your Documents catalog: $HOME/Documents/RsyncUIcopy-05-06-2024/08/21
11.3 - SSH settings
In this perspective, you can utilize RsyncUI to assist in creating an SSH key and setting up a global SSH keypath and identity file.
SSH keys are required for passwordless logins to remote servers. You can either use the default values for SSH keys or set your own.
For more information on passwordless logins, please refer to the documentation at passwordless logins.
Local SSH Key Present
If the “on” option is selected in RsyncUI, it has detected a local SSH key.
The default values for RSA-based SSH keys are ~/.ssh/id_rsa and port number 22. These values are not mandatory if you choose to
use the default settings. If you do not specify your own SSH keypath and identityfile, RsyncUI will automatically use the default values.
If a local SSH key is present, you can either leave the settings as they are or manually set your own SSH keypath and identityfile.
In this case, RsyncUI will mark the selected settings as the 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.
Global SSH Keypath and Identityfile in Use:
12 - Profiles
Tasks can be organized in profiles. A profile is the name of the catalog located at the storage location where RsyncUI stores its files.
When you create a “newprofile,” RsyncUI creates a new catalog at $HOME/.rsyncosx/macserialnumber/newprofile. Tasks and logfiles are
stored within that catalog for that profile.
The list on the right side of the view displays all tasks that have not been updated since the number of days specified in the
settings under the “Mark days after” option.
13 - Quicktask
Use QuickTask for quickly synchronize files to either local or remote storage.
QuickTask will save the last executed quick task as default values. Default values can be cleared by the toolbar function.
There are two types of quick tasks:
synchronize: Synchronize local files to remote.
syncremote: Synchronize remote files to local.
If syncremote, the local catalog in the form is the remote data, and the remote catalog is the local data where the remote data will be stored when pulled.
After entering data, the default task is a --dry-run task. It is recommended to inspect the result before executing the actual run.
Catalog parameters
Local catalog: a required field
Remote catalog: a required field
a ~ is expanded as the home catalog with the full path by the remote operating system
the remote catalog may also be specified by full path, depending on where the backup catalog is located on the remote server
the backup catalog may also be a local catalog on a local attached disk
Remote parameters
Remote username: the username for logging into the remote server
Remote server: either the server name or IP address for the remote server
14 - Restore data
Data restoration from within RsyncUI is exclusively permitted for remote servers. Data restoration from attached volumes is only
feasible using macOS Finder. A restore operation must be executed to a temporary restore path to ensure the preservation of original data.
A typical restore session might proceed as follows:
Filters will only retrieve filenames that contain the specified filter string.
Select either a file or a catalog to restore. Switching the command toggle reveals the actual restore command. Selecting “restore”
displays a “–dry-run” of the restore operation. Switching the “–dry-run” toggle to “off” initiates the actual restore of files.
After a restore, a view displaying the output from rsync will be presented.
15 - Important
The User Interface of RsyncUI may pose challenges for users unfamiliar with the rsync command. The primary objective is to
simplify the usage of rsync, rather than providing a comprehensive introduction to macOS users. This scope is beyond the
intended purpose of the interface.
For those unfamiliar with the command-line tool rsync and its graphical user interface (GUI) RsyncUI, the following
information is provided: RsyncUI functions as a graphical layer atop the command-line tool rsync. It does not directly perform the underlying
operations; rsync is responsible for the actual execution.
Setting incorrect parameters for rsync can result in the deletion of data. Furthermore, RsyncUI does not prevent you from performing such actions.
Before executing a new task in RsyncUI, please perform an estimation run, a --dry-run, and inspect the result.
If you inadvertently set an empty catalog as the source, RsyncUI, via rsync, will delete all files in the destination.
For instructions on executing an estimation run, refer to the “Add tasks” section.
The –delete parameter and new tasks
The --delete parameter is a default parameter set by RsyncUI. It instructs rsync to maintain synchronization between the source and destination.
Additionally, it instructs rsync to delete all files in the destination that are not present in the source.
Default parameters set by RsyncUI to rsync can be disabled task by task. However, if you decide to disable a default parameter, be certain you understand the resulting outcome. A disabled default parameter can be reenabled.
Remote servers
RsyncUI compels data transfer via SSH if the destination is a remote server. The parameter -e ssh to rsync enables data transfer to be tunneled via SSH.
It appears that recent versions of rsync or SSH do not require this parameter, but for safety, RsyncUI appends it if the destination is a remote server.
Through the SSH tunnel, the transfer is encrypted when transmitted over a network connection.
Refer to the chapter on “Passwordless login” for further information on SSH and SSH-keys. This feature cannot be disabled.
Safety precautions
rsync is a powerful tool, but improper usage can cause damage and data loss. RsyncUI incorporates various verification and checks.
However, it is your responsibility to verify that a new task performs as intended before executing it.
The snapshot feature of rsync is a valuable addition. It is possible to modify the snapshot number.
If you inadvertently modify the snapshot number, please thoroughly comprehend the consequences and the rationale behind the change.
Should you make any modifications, there are certain necessary cleanups that must be performed prior to executing the subsequent snapshot synchronization task.
If you permit RsyncUI to handle the task, you can reasonably expect a safe outcome. RsyncUI is a complimentary and open-source application.
Kindly review the MIT license.
Aborting Tasks
Please be cognizant that this is an external task not under the control of RsyncUI. It executes the command-line tool rsync.
RsyncUI monitors the task for progress and termination.
The user has the authority to abort a task at any juncture. Please permit the abort to complete and execute any necessary cleanup operations before initiating a new task.
This process may take a few seconds. If not, RsyncUI may become unresponsive.
16 - Parameters to rsync
RsyncUI provides default parameters for data synchronization. However, the actual default parameters utilized in tasks are
determined by whether the rsync operation is performed over a network connection or to a local attached disk.
User Parameter Management
Users have the ability to modify default parameters as necessary. Parameters to rsync are stored in tasks, including a local ssh parameter.
The local ssh parameter overrides a global ssh parameter if set.
SSH Key Handling
If default ssh-key values are employed and no information regarding ssh-keys is provided in RsyncUI, the parameter -e ssh is
appended to the rsync command to ensure data is tunneled and encrypted using ssh. This applies exclusively to remote servers and data restoration.
Task-Specific SSH Parameters
Task-specific ssh parameters override global ssh parameters configured in the user settings.
ssh port: Specify if ssh utilizes a port other than the standard port 22.
ssh-keypath and identity file: Typically, these are .ssh/id_rsa. Set only if alternative keypath and identity file are to be utilized by ssh.
Adding Parameters to Rsync
To add a parameter to rsync, enter it in the corresponding field. RsyncUI supports seven user-defined parameters. Users can add parameters
using any of the fields. However, users are responsible for verifying the accuracy of the added parameters. If an incorrect parameter is
added, rsync will generate an error message.
--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 rsync documentation.
Backup Switch
The rsync command allows you to instruct it to save modified and deleted files in a separate backup catalog prior to the synchronization process.
This feature can be enabled by setting the following parameters:
--backup: Enables the saving of modified files.
--backup-dir: Specifies the directory where modified or deleted files should be saved before synchronization.
The RsyncUI provides a default value for this parameter, but you can customize it as per your requirements.
The default backup catalog for the <catalog to synchronize> relative to the synchronized catalog is ../backup_<catalog to synchronize>.
Verify Changes
The resulting command-line string is dynamically updated when modifying parameters. The Play icon on the toolbar allows you to test new parameters
before saving them. The Play executes a --dry-run task for verification of parameters.
The Play icon is context-sensitive. If the verify switch is selected, the Verify command is executed.
Similarly, the synchronize and restore switches execute the corresponding commands.
16.1 - Default parameters to rsync
Certain default parameters can be enabled or disabled on a task basis.
--compress: Compresses files before transmission, applicable only to networked tasks.
--delete: Deletes all files at the destination that are not present in the source.
Parameters Applicable to All Tasks:
--archive: Ensures that all files are transferred with all attributes preserved.
--verbose: Enables verbose output from rsync, necessary for counting files in RsyncUI.
Note:
RsyncUI does not officially support the rsync daemon: command. However, it is possible to configure a rsync daemon setup.
Please note that a rsync daemon setup does not encrypt the transfer between the client and server.
To encrypt the transfer, you need to tunnel the traffic using the SSH protocol. For more information on setting up
SSH passwordless logins, please refer to the documentation at passwordless logins.
Enabling the rsync Daemon:
Enabling the rsync daemon involves adding a double colon :: to the address parameter in the rsync command.
This forces rsync to use the rsync daemon remote.
Copyright (c) 2020 - 2024 - 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.
18 - Signing and notarization
RsyncUI is digitally signed with my Apple Developer Certificate and notarized (https://support.apple.com/en-us/HT202491) by Apple.
This verification process ensures that the application is free from malicious code and will seamlessly integrate
with Apple’s Gatekeeper technology. Upon opening either a new or updated application for the first time,
Apple will issue a notification.