57 lines
2.4 KiB
Bash
Executable file
57 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
source_site_root="/home/experienceolympic_live/site/web"
|
|
source_drush="/home/experienceolympic_live/site/vendor/bin/drush -r ${source_site_root}"
|
|
source_files="${source_site_root}/sites/default/files/"
|
|
|
|
# Requires an .ssh/config entry for test-site. May be to localhost, and must not require a password for private key.
|
|
target_site=test-site
|
|
target_site_root="/home/experienceolympic_test/site/web"
|
|
target_drush="/home/experienceolympic_test/site/vendor/bin/drush -r ${target_site_root}"
|
|
target_files="${target_site_root}/sites/default/files/"
|
|
# Use ssh to target when target_site is set, otherwise use eval to just run in the local context
|
|
target_cmd="${target_site:+ssh ${target_site}}"
|
|
target_cmd="${target_cmd:-eval}"
|
|
|
|
sync_date=$(date +%Y%m%d_%H%M%S%Z)
|
|
|
|
# Test local drush/file paths/ssh connection/remote drush
|
|
[ -d ${source_files} ] || (echo "source_files folder does not exist"; exit 1)
|
|
${source_drush} status > /dev/null || (echo "Cannot execute local drush"; exit 1)
|
|
target_cmd "[ -d ${target_files} ]" || (echo "${target_cmd} failed, or ${target_files} folder does not exist at target. If using ssh, have you set up the key?"; exit 1)
|
|
target_cmd "${target_drush} status > /dev/null" || (echo "${target_cmd} ${target_drush} failed - does the site exist"; exit 1)
|
|
|
|
echo ">> All checks succeeded!"
|
|
echo ">> Syncing this site to ${target_site:-${target_site_root}} (using file date: ${sync_date})..."
|
|
|
|
# Dump destination DB (extra backup)
|
|
echo ">> Dumping destination database..."
|
|
target_cmd "${target_drush} sql-dump | gzip > ~/backups/${sync_date}-paranoia.sql.gz"
|
|
echo ">> Dumping source database..."
|
|
${source_drush} sql-dump | gzip > ~/backups/${sync_date}-sync.sql.gz
|
|
|
|
|
|
# Send copy
|
|
echo ">> Copying source db to target..."
|
|
'scp' ~/backups/${sync_date}-sync.sql.gz ${target_site}:backups/
|
|
|
|
|
|
# Drop DB and reload from source
|
|
echo ">> Reloading target database..."
|
|
target_cmd "${target_drush} sql-drop -y"
|
|
|
|
target_cmd "gunzip ~/backups/${sync_date}-sync.sql.gz"
|
|
target_cmd "${target_drush} sqlc < ~/backups/${sync_date}-sync.sql"
|
|
|
|
|
|
# Copy files
|
|
echo ">> Sending new files..."
|
|
rsync -rlptvz --exclude=php --exclude=js --exclude=css --exclude=styles --exclude=twig ${source_files} ${target_site:+${target_site}:}${target_files}
|
|
|
|
echo ">> Sync to ${target_site:-${target_site_root}} complete - running cache rebuild..."
|
|
|
|
# CR forever!
|
|
target_cmd "${target_drush} cr"
|
|
|
|
echo ">> Target ${target_site:-${target_site_root}} is ready!"
|