Mirror Mirror Macro -- A Backup Utility for World Backup Day

Mirror Mirror Macro

To celebrate World Backup Day (today), this macro uses the built-in backup utility rsync to mirror any directory or single file in a Target location. Changes made to the Source will be reflected in the Target location, effectively making an archive of the Source.


After the initial backup, which takes as long as any copy, only the changes are executed, which is much faster than a fresh copy. New files are copied, deleted files are deleted.

A log shows what was done and how long it took.

You can save and delete commands. You can also restore a Target to its Source from any saved command.

By handling the directory and file selection quoting and the rsync command itself, Mirror Mirror protects you from dangerous and frustrating syntax errors. I've used the rsync commands it uses in other macros for years but wanted a more flexible macro (and this one is replacing all those other ones pretty quickly, too).

For the wary (and it won't hurt to be wary, especially about Restore operations), the documentation includes a step-by-step Test Drive to demonstrate on dummy files what happens with each command.

Update (2 April 2021): Just a minor update to recognize the Return key for OK in all windows and Control-Option-H for Help and Control-Option-C for Cancel in the main window.

Update (6 April 2021): No longer recognizes Control-Option-H for Help and Control-Option-C for Cancel in the main window because the key chords may conflict with other macros. Instead, the main window now has a keyboard shortcut for each button (indicated by an orange underline). Also cleaned up the code that recognizes the Return key for OK.

Update (3 May 2021): Backups that travel over the network are, of course, noticeably slower than those that don't. So in v1.3a I've added an indeterminate progress bar to the three folder copying operations that might take longer. Inspired by Dan Thomas's Progress Bar v1.1, it's a simple Custom HTML Prompt running asynchronously with a Window ID that can subsequently be closed by another action after the rsync has completed. Rsync itself doesn't know where it is in its process, so an indeterminate progress bar at least lets you know it's running. (No change was made to the documentation.)