Created
November 23, 2016 09:43
-
-
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.
This file contains hidden or 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/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