Cloud Backup
is a complete and fully automated incremental cloud backup solution using free open-source tools for MacOS
. It combines the power of dar, par2, and rclone to perform incremental backups, ensure data integrity, and interact with the cloud, respectively. These tools are readily installed via Homebrew. launchd
services take care of scheduling incremental backups, detecting when moving onto the preferred WiFi network, and take note of disk (un)mounts. A workspace is created in memory for speed and avoiding disk wear-and-tear and some of the work is parallelized for efficiency. Optionally, install Growl and growlnotify to receive notifications.
Move the folder containing Cloud Backup
to Library/Application Support
in your home directory. Configure your preferred WiFi NETWORK
in etc/config
, which contains many other parameters that can be tuned to your needs.
Each file in etc/config.d
configures a backup target. Its parameters and their meaning are listed in the table below.
parameter | meaning |
---|---|
BACKUP_NAME |
base name for the backup |
SOURCE |
folder to back up |
TARGET |
rclone remote path |
DESTINATION |
directory to restore files to |
From the bin
directory run:
./cloud_level-0.bash
This could take a while.
Copy net.christiaanboersma.cloud_backup.plist
from the share
folder to Library/LaunchAgents
in your home directory. Log out and back in.
Restoring entire backups is done with cloud_restore.bash
from the bin
directory:
./cloud_restore.bash documents
The first argument matches a file in etc/config.d
. Use cloud_restore_file.bash
to restore a single file:
./cloud_restore_file.bash documents Documents/myfile.txt
The first argument again matches a file in etc/config.d
and the second argument is the file to restore.
Trimming backups is done with cloud_trim.bash
from the bin
directory:
./cloud_trim.bash documents 10
The first argument matches a file in etc/config.d
and the second the level to trim up to.
Take care to follow up with a level-x backup:
./cloud_level-x.bash documents
Note that this may take significantly longer than usual, as the increment will be against and earlier backup.
- Cloud storage is required and rclone needs to be configured to access it.
- Despite incremental backups, cloud space requirements will only grow. Use
cloud_trim.bash
to trim backups followed by acloud_level-x.bash
backup. - Logging is done to
Library/Logs/cloud_backup.log
in your home directory. dar
,par2
, andrclone
paths are hardcoded to be in/usr/local/bin
.unbuffer
is used to disable output buffering and can be readily installed with Homebrew.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.