Skip to content

Instantly share code, notes, and snippets.

@jrenggli
Created November 23, 2016 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrenggli/153a68e6eac4a1a6d06f9a25007bce77 to your computer and use it in GitHub Desktop.
Save jrenggli/153a68e6eac4a1a6d06f9a25007bce77 to your computer and use it in GitHub Desktop.
Content Deployment for TYPO3 CMS from production/live to local development system. Could be adjusted to several systems.
#!/bin/bash
PWD=`pwd`
SOURCEPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )"
WORKSPACEPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd ../.. && pwd )"
TARGET_PATH=${SOURCEPATH}/
TARGET_DBNAME=t3_dev
TARGET_DBUSER=t3_dev
TARGET_DBHOST=127.0.0.1
TARGET_DBPASSWORD=
TARGET_CONTEXT=Development/Local
SOURCE_HOST=live.example.org
SOURCE_PORT=22
SOURCE_USER=www-data
SOURCE_PATH=/home/www-data/typo3-live/releases/current/
SOURCE_DBNAME=t3_live
SOURCE_DBUSER=t3_live
SOURCE_DBHOST=127.0.0.1
SOURCE_DBPASSWORD=anotherSuperSecretPassword
# Copy fileadmin/uploads from source to target
rsync -avz -e "ssh -p${SOURCE_PORT}" --delete-after ${SOURCE_USER}@${SOURCE_HOST}:${SOURCE_PATH}web/fileadmin/ ${TARGET_PATH}web/fileadmin || exit 101
rsync -avz -e "ssh -p${SOURCE_PORT}" --delete-after ${SOURCE_USER}@${SOURCE_HOST}:${SOURCE_PATH}web/uploads/ ${TARGET_PATH}web/uploads || exit 102
# Delete all existing tables in target
mysql --host="${TARGET_DBHOST}" --user="${TARGET_DBUSER}" --password="${TARGET_DBPASSWORD}" --silent --skip-column-names -e "SHOW TABLES;" ${TARGET_DBNAME} | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE `%`;' | mysql --host="${TARGET_DBHOST}" --user="${TARGET_DBUSER}" --password="${TARGET_DBPASSWORD}" ${TARGET_DBNAME} || exit 201
# Copy database from source to target
ssh ${SOURCE_USER}@${SOURCE_HOST} -p${SOURCE_PORT} "mysqldump --host=\"${SOURCE_DBHOST}\" --user=\"${SOURCE_DBUSER}\" --password=\"${SOURCE_DBPASSWORD}\" ${SOURCE_DBNAME} | gzip" | gunzip > ${SOURCE_DBNAME}.sql || exit 301
cat ${SOURCE_DBNAME}.sql | mysql --host="${TARGET_DBHOST}" --user="${TARGET_DBUSER}" --password="${TARGET_DBPASSWORD}" ${TARGET_DBNAME} || exit 302
echo "UPDATE sys_domain SET domainName = REPLACE(domainName, '.ch', '.dev');" | mysql --host="${TARGET_DBHOST}" --user="${TARGET_DBUSER}" --password="${TARGET_DBPASSWORD}" ${TARGET_DBNAME} || exit 302
rm ${SOURCE_DBNAME}.sql || exit 303
cd ${TARGET_PATH}Configuration; unlink current; ln -sf ${TARGET_CONTEXT} current || exit 400
cd ${TARGET_PATH} && Build/init.sh || exit 401
echo done.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment