Skip to content

Instantly share code, notes, and snippets.

@philippbosch
Created January 5, 2011 14:29
Show Gist options
  • Save philippbosch/766388 to your computer and use it in GitHub Desktop.
Save philippbosch/766388 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Usage: ./backup.sh [project [project] ...]
#
# You need to create a config file ~/.pbbackup which needs to look like this:
# AWS_ACCESS_KEY_ID=your_amazon_webservice_access_key
# AWS_SECRET_ACCESS_KEY=your_amazon_webservice_secret_access_key
# PASSPHRASE=the_passphrase_that_should_be_used_for_gpg_encryption
# BUCKET_NAME=the_name_of_the_s3_bucket_to_be_used
CONFIG_FILE=~/.pbbackup
PROJECTS_DIR=./projects
PROJECTS=`find ${PROJECTS_DIR} -mindepth 1 -maxdepth 1 -type d -printf "%f "`
SYSTEM_USER=`whoami`
HOST_NAME=`hostname`
if [[ ! -r ${CONFIG_FILE} ]]
then
echo Config file ${CONFIG_FILE} does not exist or is not readable.
exit 99
fi
. ${CONFIG_FILE}
if [[ -z "$AWS_ACCESS_KEY_ID" ]] ; then echo AWS_ACCESS_KEY_ID is not set in config file. ; exit 99 ; fi
if [[ -z "$AWS_SECRET_ACCESS_KEY" ]] ; then echo AWS_SECRET_ACCESS_KEY is not set in config file. ; exit 99 ; fi
if [[ -z "$PASSPHRASE" ]] ; then echo PASSPHRASE is not set in config file. ; exit 99 ; fi
if [[ -z "$BUCKET_NAME" ]] ; then echo BUCKET_NAME is not set in config file. ; exit 99 ; fi
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY
export PASSPHRASE
export BUCKET_NAME
if [[ -n $@ ]]
then
PROJECTS=$@
fi
for PROJECT in ${PROJECTS}
do
if [[ -e ${PROJECTS_DIR}/${PROJECT}/.nobackup ]]
then
continue
fi
SQL_FILENAME="${PROJECTS_DIR}/${PROJECT}/db-${PROJECT}.sql"
mysqldump -u${SYSTEM_USER} ${SYSTEM_USER}\_${PROJECT} > ${SQL_FILENAME}
duplicity --no-print-statistics --full-if-older-than 1M ${PROJECTS_DIR}/${PROJECT} s3+http://${BUCKET_NAME}/${HOST_NAME}/${SYSTEM_USER}/${PROJECT}/ > /dev/null
rm -f ${SQL_FILENAME}
done
export -n AWS_ACCESS_KEY_ID
export -n AWS_SECRET_ACCESS_KEY
export -n PASSPHRASE
export -n BUCKET_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment