Last active
December 25, 2015 17:39
-
-
Save joeyyax/7014558 to your computer and use it in GitHub Desktop.
Sync Production assets and db to local MAMP environment. Other site files are to be held in GIT repo and pull in separately.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh/ | |
# Setup for MAMP | |
echo | |
if [ -d /Applications/MAMP/Library/bin/ ]; then | |
echo "You're using MAMP. Cool. Gonna run some tests... "; | |
# Check if mysqldump is in /usr/local/bin/. If not, link 'em. | |
if [ ! -f /usr/local/bin/mysqldump ]; then | |
echo "mysqldump link doesn't exist. Creating link to MAMP."; | |
sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/local/bin/mysql; | |
fi | |
# Check if mysql is in /usr/local/bin/. If not, link 'em. | |
if [ ! -f /usr/local/bin/mysql ]; then | |
echo "mysql link doesn't exist. Creating link to MAMP."; | |
sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/local/bin/mysql; | |
fi | |
fi | |
echo "-> All good! Moving on..."; | |
echo | |
# Temporary directories (no trailing slashes) | |
LOCAL_TEMP_DIR= | |
REMOTE_TEMP_DIR=/var/www/... | |
DATE=$(date +"%F.%T"); | |
# Files Directories (no trailing slashes) | |
LOCAL_DIR=~/Sites/... | |
REMOTE_DIR=/var/www/... | |
# Database Info | |
LOCAL_DB_NAME=''; | |
LOCAL_DB_USER='root'; | |
LOCAL_DB_PASS='root'; | |
REMOTE_SSH_ADDR=''; | |
REMOTE_SSH_USER=''; | |
REMOTE_SSH_PASS=''; #leave blank if you're using ssh key to sign into server | |
REMOTE_DB_NAME=''; | |
REMOTE_DB_USER=''; | |
REMOTE_DB_PASS=''; | |
# make temporary directory | |
echo "Preparing backup and sync..."; | |
mkdir $LOCAL_TEMP_DIR; | |
cd $LOCAL_TEMP_DIR; | |
# sync files to staging/backup server | |
echo "Syncing assets from production server"; | |
rsync -avzhr -e ssh $REMOTE_SSH_USER@$REMOTE_SSH_ADDR:$REMOTE_DIR/ $LOCAL_DIR/; | |
echo "-> Got 'em!"; | |
echo | |
# Connect to remote server, drop tables in db, import latest db | |
echo "Exporting production database..."; | |
ssh $REMOTE_SSH_USER@$REMOTE_SSH_ADDR "mkdir -p $REMOTE_TEMP_DIR/; cd $REMOTE_TEMP_DIR; mysqldump --quick -u $REMOTE_DB_USER -p$REMOTE_DB_PASS --add-drop-table --no-data $REMOTE_DB_NAME > $REMOTE_TEMP_DIR/db.$DATE.sql; exit;" | |
echo "Downloading production database..."; | |
scp $REMOTE_SSH_USER@$REMOTE_SSH_ADDR:$REMOTE_TEMP_DIR/db.$DATE.sql $LOCAL_TEMP_DIR/db.$DATE.sql; | |
echo "Cleaning up production temp directory..."; | |
ssh $REMOTE_SSH_USER@$REMOTE_SSH_ADDR "rm -rf $REMOTE_TEMP_DIR/; exit;"; | |
echo "Importing production database into dev environment..."; | |
mysql -u $LOCAL_DB_USER -p$LOCAL_DB_PASS $LOCAL_DB_NAME < $LOCAL_TEMP_DIR/db.$DATE.sql; | |
echo "-> Imported!" | |
echo | |
# log sync | |
echo "Sync from production completed: $(date +"%F %T");" >> $LOCAL_TEMP_DIR/../sync.log; | |
echo | |
# delete temp directory | |
echo "Cleaning up..."; | |
cd $LOCAL_TEMP_DIR; | |
rm -rf $LOCAL_TEMP_DIR; | |
echo "-> Done!"; | |
echo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment