#!/bin/bash
# Filename: evo-backup.sh
# Version: 020112
# Author: robz
# This script creates an encrypted archive of all the relevant Evolution Mail
# directories and preferences to act as a backup to said program. Now I know
# Evo already provides a backup feature but AFAIK it isn't automateable and
# doesn't encrypt. You will need to modify your Evolution launcher/s path/s to
# point at this script instead of just "evolution"
# If you have sym/hard links to your Evolution directories "tar" will follow
# them, "find" however is not setup this way, you'll need the -L option if the
# path to your backup directory uses links. see "man find"
# You're required to have a personal gpg key setup, see "man gpg" or goto menu:
# System > Preferences > Encryption and Keyrings and create one for yourself.
# I would strongly suggest you do a manual Evolution generated backup before
# running this script, as insurance, what works for me bla bla bla :)
/usr/bin/evolution > /dev/null & # Start Evolution Mail.
EVO_PID=$! # Get Evolution process ID.
until [ ! -e /proc/$EVO_PID ]; do sleep 2; done # Loop till quit Evolution.
BUP_LOC="/media/Ext4Backup/Evo-backup" # Where to save backup.
BUPNAME="evo-backup $(date +%H:%M" "%d%m%y).tar.gz" # Dated backup file name.
CRYPTTO="robz-public-key" # Your gpg public key name.
if [ ! -e "$BUP_LOC" ]; then # Do any backups exist?
mkdir -p "$BUP_LOC" # Create save to directory.
# Create a README file with restore instructions, put it with the backups.
cat > "$BUP_LOC/README" << EOF
# The stuff between the angle brackets will need changing to your specifics.
# To restore this Evolution Mail backup, in a terminal do:
cd <The location of your encrypted backup file>
# The next line when executed will require your gpg NOT your login password.
gpg --decrypt --output "evo-backup" "evo-backup <relevent date>.gpg"
# Unzip the achive.
tar xzf evo-backup
# You will need to use Ctrl+H to make the files visible after unzipping.
evolution --force-shutdown
gconftool-2 --shutdown
# The next commands will overwrite existing configurations and files, be sure!
gconftool-2 --unload .evolution.xml
gconftool-2 --load .evolution.xml
cp -r .evolution .camel_certs "$HOME"
# Done.
# How are we now? -- Ready!
EOF
fi
# Delete backups more than 5 days old.
find "$BUP_LOC" -name "evo-backup*" -mtime +5 -delete
# Trims to one backup a day, the newest.
find "$BUP_LOC" -name "evo-backup*" -daystart -mtime -1 -delete
evolution --force-shutdown > /dev/null # Kill Evo processes.
gconftool-2 --shutdown # Kill gconftool-2
gconftool-2 --dump /apps/evolution > .evolution.xml # Create preferences file.
# Create compressed encrypted archive.
tar -chz .evolution .camel_certs .evolution.xml -f "$BUP_LOC/$BUPNAME"
gpg --no-permission-warning --encrypt --recipient \
"$CRYPTTO" "$BUP_LOC/$BUPNAME" && \
shred -zu "$BUP_LOC/$BUPNAME" .evolution.xml # Clean up temp files.
/usr/lib/evolution/*/evolution-alarm-notify & # Restart Evolution alarms.
exit
No comments:
Post a Comment