Skip to content

Instantly share code, notes, and snippets.

@jrenggli
Created August 11, 2016 18:15
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/89cb1ce9515c8ce6d8246843fbf7bf72 to your computer and use it in GitHub Desktop.
Save jrenggli/89cb1ce9515c8ce6d8246843fbf7bf72 to your computer and use it in GitHub Desktop.
Content Deployment for TYPO3 CMS from production/live to latest 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_HOST=latest.example.org
TARGET_PORT=22
TARGET_USER=www-data
TARGET_PATH=/home/www-data/typo3-latest/releases/current/
TARGET_DBNAME=t3_latest
TARGET_DBUSER=t3_latest
TARGET_DBHOST=127.0.0.1
TARGET_DBPASSWORD=mySuperSecretPassword
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
ssh ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} -o ForwardAgent=yes "rsync -avz -e \"ssh -p${SOURCE_PORT}\" --delete-after ${SOURCE_USER}@${SOURCE_HOST}:${SOURCE_PATH}web/fileadmin/ ${TARGET_PATH}web/fileadmin" || exit 101
ssh ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} -o ForwardAgent=yes "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
ssh ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} "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 ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} -o ForwardAgent=yes "ssh ${SOURCE_USER}@${SOURCE_HOST} -p${SOURCE_PORT} \"mysqldump --host=\\\"${SOURCE_DBHOST}\\\" --user=\\\"${SOURCE_DBUSER}\\\" --password=\\\"${SOURCE_DBPASSWORD}\\\" ${SOURCE_DBNAME}\" > ${SOURCE_DBNAME}.sql" || exit 301
ssh ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} "cat ${SOURCE_DBNAME}.sql | mysql --host=\"${TARGET_DBHOST}\" --user=\"${TARGET_DBUSER}\" --password=\"${TARGET_DBPASSWORD}\" ${TARGET_DBNAME}" || exit 302
ssh ${TARGET_USER}@${TARGET_HOST} -p${TARGET_PORT} "rm ${SOURCE_DBNAME}.sql" || exit 303
ssh ${TARGET_USER}@${TARGET_HOST} "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