This project started out as a simple shell script wrapper for rsync. rsync is a great tool for performing backups since it will sync all files from a source location to a destination directory while keeping most of their privileges and extended attributes intact. The most convenient feature of rsync is that after the first backup, it will only sync the files that have changed, greatly reducing the amount of time required to perform a backup. This program was originally written to perform a backup of my laptop's internal hard drive to an external drive with the ability to "bless" the backup to make it bootable. The project has expanded from just a shell script to include a GUI wrapper for the shell script that can handle multiple backup configurations.
Both the backup script and GUI can modify the following variables
The backup utility can use growl, if installed, to notify the user when the backup has started and finished.
There are two files that you can download. The first is just the shell script wrapper for rsync. It does not include rsync but Mac OS X should have rsync already installed. However, this is usually an older version and you may want to download a newer version (this may require compiling it from source code).
The second download includes the GUI version of the backup utility. This includes the backup script and a precompiled version of rsync 3.0.6. The included rsync binary should work, but if it doesn't you
may want to try compiling it yourself from source or reverting back to the (most likely older) version already installed on your system (this can be done by changing the rsync location to
Download: version 3.2.4
Download: version 3.2.4 - Requires Mac OS X
To install the backup script, move the script to a directory in your
$PATH, such as
/usr/local/bin/. To make the script
executable, use the
sudo chmod +x backup
BackupUtility.zip, unzip the file and move the application to your Applications folder. On the first launch, the application
will install rsync if it is not already installed in
/usr/local/bin and will set up the configurations folder with a default configuration file.
backup without any flags will start a backup using the default configurations. Any variables from the configuration file can be overriden using the flags
when executing the script. The configuration file and folder can be specified using the
-f flags, respectively. All other variables are changed using
the following options:
OPTIONS -c [location] changes the name of the CONFIG file -d [location] changes the DESTINATION location for the backup -e [location] changes the location of the EXCLUDE file -f [location] changes the FOLDER that contains the config files -g [true|false] changes the usage of the GROWL notifications -h displays the HELP information -l [location] changes the location of the LOG file -o [options] adds OPTIONS to rsync. In Use: -aHEXAvx --delete --progress --stats --timeout=999 -r [location] changes the location of the RSYNC executable -s [location] changes the SOURCE location for the backup -u shows the USAGE of the command -v shows author and VERSION information
backup help for more information.
The most important variables are the first two, the source and destination locations. The program will sync the destination location so that it is exactly the same as the source location.
For example, if you want to backup your internal hard drive to external disk named "Backup", then your source location will be
/ and your destination location will be
If the Mac OS X Coreservices folder is found in the destination location, the program will attempt to "bless" the backup in order to make it bootable. So if you're backing up your entire hard drive to an external disk, this will allow you to boot into a clone of your computer from the external drive.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.