Skip to content

Instantly share code, notes, and snippets.

@CNanninga
Last active August 27, 2019 07:00
Show Gist options
  • Save CNanninga/2f65fa5f7425b68f293774665d8cfbca to your computer and use it in GitHub Desktop.
Save CNanninga/2f65fa5f7425b68f293774665d8cfbca to your computer and use it in GitHub Desktop.
Magento 2 Production to Stage Clone
#!/bin/bash
SOURCE_DB_NAME="example_prod"
SOURCE_ROOT_DIR="/var/www/prod"
SOURCE_DUMP_FILENAME=example_prod_$(date +%F).sql.gz
TARGET_DB_NAME="example_stage"
TARGET_ROOT_DIR="/var/www/stage"
TARGET_SSH_USER="www-stage"
TARGET_SSH_HOST="stage.example.com"
TARGET_DUMP_FILENAME=example_stage_$(date +%F).sql.gz
STRIP_FLAG="@log @trade @search"
echo "Dumping database"
mr --root-dir=${SOURCE_ROOT_DIR}/current db:dump --stdout --strip="${STRIP_FLAG}" | pv | gzip > ${SOURCE_ROOT_DIR}/${SOURCE_DUMP_FILENAME}
echo "Transferring data to stage"
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 stage"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
cd ${TARGET_ROOT_DIR}/current \
bin/magento maintenance:enable \
bin/magento cache:flush \
"
echo "Backing up database on stage"
ssh -t ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
mr --root-dir=${TARGET_ROOT_DIR}/current db:dump --stdout | pv | gzip > ${TARGET_ROOT_DIR}/bak/${TARGET_DUMP_FILENAME}
"
echo "Importing database"
ssh -t ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
pv ${TARGET_ROOT_DIR}/${SOURCE_DUMP_FILENAME} | gunzip | mysql -D ${TARGET_DB_NAME} --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="catalog/product/cache" --exclude="cache/*" --exclude="/tmp/*" ${SOURCE_ROOT_DIR}/current/pub/media/ ${TARGET_SSH_USER}@${TARGET_SSH_HOST}:${TARGET_ROOT_DIR}/current/pub/media/
echo "Setting config values"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
cd ${TARGET_ROOT_DIR}/current
mr config:store:set --encrypt payment/authnetcim/login EXAMPLETESTLOGIN
mr config:store:set payment/authnetcim/test 1
mr config:store:set signifyd/general/key ''
mr config:store:set fraud_protection/signifyd/active 0
"
echo "Clearing caches and reindexing"
ssh ${TARGET_SSH_USER}@${TARGET_SSH_HOST} "\
cd ${TARGET_ROOT_DIR}/current
bin/magento app:config:import
bin/magento cache:flush
bin/magento cache:clean
bin/magento setup:db-schema:upgrade
bin/magento setup:db-data:upgrade
bin/magento indexer:reindex
bin/magento maintenance:disable
bin/magento cache:flush
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment