123 lines
4.1 KiB
Text
123 lines
4.1 KiB
Text
ABOUT THIS SCRIPT
|
|
=================
|
|
|
|
This bash script was designed to automate and simplify the remote backup process
|
|
of duplicity on Amazon S3 primarily. Other backup destinations are possible.
|
|
After your script is configured, you can easily backup, restore, verify and
|
|
clean (either via cron or manually) your data without having to remember lots of
|
|
different command options and passphrases.
|
|
|
|
Most importantly, you can easily backup the script and your gpg key in a
|
|
convenient passphrase-encrypted file. This comes in in handy if/when your
|
|
machine ever does go belly up.
|
|
|
|
Optionally, you can set up an email address where the log file will be sent,
|
|
which is useful when the script is used via cron.
|
|
|
|
This version is a rewriting of the code originally written by Damon Timm,
|
|
including many patches that have been brought to the original scripts by various
|
|
forks on Github.
|
|
|
|
Latest version of the code available at:
|
|
http://github.com/zertrin/duplicity-backup
|
|
|
|
Merge requests are welcome :)
|
|
|
|
More information about this script available at:
|
|
http://zertrin.org/projects/duplicity-backup/
|
|
|
|
The original version of the code is availabe at:
|
|
http://github.com/theterran/dt-s3-backup
|
|
|
|
BEFORE YOU START
|
|
================
|
|
|
|
This script requires user configuration. Instructions are in the config file
|
|
itself and should be self-explanatory. Please DO NOT edit the example config
|
|
file, but make a copy of it and edit this one. Be sure to replace all the
|
|
*foobar* values with your real ones. Almost every value needs to be configured
|
|
in someway.
|
|
|
|
You can use multiple copies of the script with different settings for different
|
|
backup scenarios. It is designed to run as a cron job and will log information
|
|
to a text file (including remote file sizes, if you have s3cmd installed). Be
|
|
sure to make the script executable (chmod +x) before you hit the gas.
|
|
|
|
REQUIREMENTS
|
|
============
|
|
|
|
* duplicity
|
|
* gpg
|
|
* Amazon S3 (optional)
|
|
* s3cmd (optional)
|
|
* mailx (optional)
|
|
|
|
CONFIGURATION
|
|
=============
|
|
|
|
The configuration takes place in a separate config file and is documented there.
|
|
|
|
The script looks for its configuration by reading the config file specified in
|
|
the CONFIG parameter at the beggining of the script. Be sure to edit it to match
|
|
the actual location of your config file.
|
|
|
|
COMMON USAGE EXAMPLES
|
|
=====================
|
|
|
|
* View help:
|
|
$ duplicity-backup.sh
|
|
|
|
* Run an incremental backup:
|
|
$ duplicity-backup.sh --backup
|
|
|
|
* Force a one-off full backup:
|
|
$ duplicity-backup.sh --full
|
|
|
|
* Restore your entire backup:
|
|
$ duplicity-backup.sh --restore
|
|
You will be prompted for a restore directory
|
|
|
|
$ duplicity-backup.sh --restore /home/user/restore-folder
|
|
You can also provide a restore folder on the command line.
|
|
|
|
* Restore a specific file in the backup:
|
|
$ duplicity-backup.sh --restore-file
|
|
You will be prompted for a file to restore to the current directory
|
|
|
|
$ duplicity-backup.sh --restore-file img/mom.jpg
|
|
Restores the file img/mom.jpg to the current directory
|
|
|
|
$ duplicity-backup.sh --restore-file img/mom.jpg /home/user/i-love-mom.jpg
|
|
Restores the file img/mom.jpg to /home/user/i-love-mom.jpg
|
|
|
|
* List files in the remote archive
|
|
$ duplicity-backup.sh --list-current-files
|
|
|
|
* Verify the backup
|
|
$ duplicity-backup.sh --verify
|
|
|
|
* Backup the script and gpg key (for safekeeping)
|
|
$ duplicity-backup.sh --backup-script
|
|
|
|
TROUBLESHOOTING
|
|
===============
|
|
|
|
This script attempts to simplify the task of running a duplicity command; if you
|
|
are having any problems with the script the first step is to determine if the
|
|
script is generating an incorrect command or if duplicity itself is causing your
|
|
error.
|
|
|
|
To see exactly what is happening when you run duplicity-backup, head to the bottom
|
|
of the configuration file and uncomment the `ECHO=$(which echo)` variable. This
|
|
will stop the script from running and will, instead, output the generated
|
|
command into your log file. You can then check to see if what is being generated
|
|
is causing an error or if it is duplicity causing you woe.
|
|
|
|
NEXT VERSION WISH LIST
|
|
======================
|
|
|
|
* --restore-dir option
|
|
* restore files from a specific time period
|
|
* support multiple MTAs for the email alert feature
|
|
|
|
Thanks to Mario Santagiuliana and Razvan for their help.
|