Skip to content

Instantly share code, notes, and snippets.

@CNanninga
Last active July 18, 2019 14:22
Show Gist options
  • Save CNanninga/095f20e76adf592af181ea835623bd0a to your computer and use it in GitHub Desktop.
Save CNanninga/095f20e76adf592af181ea835623bd0a to your computer and use it in GitHub Desktop.
Magento 1 Clone Prod to Stage
#!/bin/bash
SOURCE_ROOT_DIR="/var/www"
SOURCE_DUMP_FILENAME=example_prod_$(date +%F).sql.gz
TARGET_DB_NAME="example_prod"
TARGET_DB_HOST="localhost"
TARGET_DB_USER="example"
TARGET_DB_PASS="example"
TARGET_ROOT_DIR="/var/www"
TARGET_BACKUP_DIR="/var/bak"
TARGET_SSH_USER="example"
TARGET_SSH_HOST="stage.example.com"
TARGET_DUMP_FILENAME=example_stage_$(date +%F).sql.gz
TARGET_DB_CONN="-h${TARGET_DB_HOST} -u${TARGET_DB_USER} -p${TARGET_DB_PASS} ${TARGET_DB_NAME}"
STRIP_FLAG="@log @trade @search"
echo "Dumping database"
mr --root-dir=${SOURCE_ROOT_DIR}/htdocs db:dump --stdout --strip="${STRIP_FLAG}" | pv | gzip > ${SOURCE_ROOT_DIR}/${SOURCE_DUMP_FILENAME}
echo "Transferring data to target"
scp ${SOURCE_ROOT_DIR}/${SOURCE_DUMP_FILENAME} ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/
rm -f ${SOURCE_ROOT_DIR}/${SOURCE_DUMP_FILENAME}
echo "Enabling maintenance on target"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs sys:maintenance
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs cache:flush
"
echo "Backing up database on target"
ssh -t ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs db:dump --stdout | pv | gzip > ${TARGET_BACKUP_DIR}/${TARGET_DUMP_FILENAME}
"
echo "Wiping database"
ssh -t ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
mysqldump --add-drop-table --no-data ${TARGET_DB_CONN} | grep 'DROP TABLE' > ${TARGET_ROOT_DIR}/drop_all_tables.sql
pv ${TARGET_ROOT_DIR}/drop_all_tables.sql | mysql ${TARGET_DB_CONN}
"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "rm -f ${TARGET_ROOT_DIR}/drop_all_tables.sql"
echo "Importing database"
ssh -t ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
pv ${TARGET_ROOT_DIR}/${SOURCE_DUMP_FILENAME} | gunzip | mysql ${TARGET_DB_CONN} --default-character-set=utf8
"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "rm -f ${TARGET_ROOT_DIR}/${SOURCE_DUMP_FILENAME}"
echo "Syncing media"
rsync -avz --no-owner --no-group --delete --exclude="cache" ${SOURCE_ROOT_DIR}/htdocs/media/catalog/category/ ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/htdocs/media/catalog/category/
rsync -avz --no-owner --no-group --delete --exclude=".thumbs" ${SOURCE_ROOT_DIR}/htdocs/media/wysiwyg/ ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/htdocs/media/wysiwyg/
rsync -avz --no-owner --no-group --delete ${SOURCE_ROOT_DIR}/htdocs/media/navigationmenupro/ ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/htdocs/media/navigationmenupro/
rsync -avz --no-owner --no-group --delete ${SOURCE_ROOT_DIR}/htdocs/media/sociable/ ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/htdocs/media/sociable/
# UPDATE CONFIG
echo "Clearing caches and reindexing"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs cache:flush
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs sys:setup:run
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs index:reindex:all
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs sys:maintenance
~/bin/mr --root-dir=${TARGET_ROOT_DIR}/htdocs cache:flush
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment