Skip to content

Instantly share code, notes, and snippets.

@ticean
Created February 11, 2011 00:53
Show Gist options
  • Save ticean/821726 to your computer and use it in GitHub Desktop.
Save ticean/821726 to your computer and use it in GitHub Desktop.
Creates snapshot of Magento db & media.
#/bin/sh
####################################################################################
# Magento Auto Snapshot
#
# This script has been integrated into Magento Shell Tools.
# Please see https://github.com/guidance/magento-shell-tools/blob/master/shell/snapshot.php
#
# Shell script that makes a backup of Magento's database and media directories.
# Intended for use on development environments. Bring new developers up to speed
# quickly.
# Makes some assumptions regarding Capistrano style deploy path.
#
# You are responsible for your own security!!!!!
#
# Author: Ticean Bennett
#
#####################################################################################
#Define params.
site_name_flag=
deploy_to_flag=
while getopts 's:d:m:-help' OPTION
do
case $OPTION in
s) site_name_flag=1
site_name="$OPTARG"
;;
d) deploy_to_flag=1
deploy_to="$OPTARG"
;;
m) mysql_dbname_flag=1
mysql_dbname="$OPTARG"
;;
?) printf "Usage: %s: [-s value] [-d value] args\n" $(basename $0) >&2
exit 2
;;
esac
done
shift $(($OPTIND -1))
#Require -s site_name.
if [ ${site_name_flag} ]
then
printf 'Option -s "%s" specified\n' "$site_name"
else
printf 'Option -s specifies the site name, and is required.\n' >&2
exit 2
fi
#Require -d deploy_to.
if [ ${deploy_to_flag} ]
then
printf 'Option -d "%s" specified\n' "$deploy_to"
else
deploy_to="/var/www/${site_name}"
printf 'Option -d not specified. Using "%s"\n' "$deploy_to"
fi
#Require -m mysql_dbname
if [ ${mysql_dbname_flag} ]
then
printf 'Option -m "%s" specified\n' "$mysql_dbname"
else
printf 'Option -m specifies the mysql database name, and is required.\n' >&2
exit 2
fi
#####################################################################################
#Do the work.
#####################################################################################
#Create snapshot directory.
#snapshot_dir="$deploy_to"/shared/snapshot
snapshot_dir="/home/tbenn"
if [ ! -d "$snapshot_dir" ]
then
mkdir "$snapshot_dir"
printf 'Creating snapshot directory: "%s"\n' "$snapshot_dir"
fi
#Media directory backup.
if [ -f "$snapshot_dir"/media.tgz ]
then
rm "$snapshot_dir"/media.tgz
printf 'Removed existing media snapshot.\n'
fi
#cd "$deploy_to"/shared
printf 'Creating media archive: "%s"\n' "$snapshot_dir"/media.tgz
tar -czvf "$snapshot_dir"/media.tgz "$deploy_to"/shared/media/ > /dev/null
#Database backup.
printf 'Creating database snapshot: "%s"\n' "$snapshot_dir"/$mysql_dbname.sql
mysqldump -uroot -pMy-SQL-DB "$mysql_dbname" | gzip > "$snapshot_dir"/$mysql_dbname.sql.gz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment