Bring in database copy script by Keegan & Chris for Portside
Naively changing names for agaric live and test on Elizabeth, but not yet using variables that could be grabbed from .env file
This commit is contained in:
parent
c03173697d
commit
f465929ca6
1 changed files with 108 additions and 0 deletions
108
scripts/copy_live_db.sh
Executable file
108
scripts/copy_live_db.sh
Executable file
|
@ -0,0 +1,108 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
# Confirmed with echo `pwd` that as long as we use via composer it's always in
|
||||
# /var/www/html (aka the project root).
|
||||
proj_dir="$(cd $(dirname ${0})/../ && pwd)" # Parent of this script folder.
|
||||
[ "$proj_dir" != "/var/www/html" ] && { echo "Script running from unexpected path - are you running within ddev, as you should?"; exit 1; }
|
||||
local_backup="$(date +%Y%m%dT%H%M%S)_pre_pull.sql"
|
||||
[ ! -d /var/www/html/backups ] && mkdir /var/www/html/backups || true
|
||||
|
||||
verbose=""
|
||||
backup="false"
|
||||
sync="false"
|
||||
target="local"
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1
|
||||
in
|
||||
-t|--target)
|
||||
target=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
-b|--backup)
|
||||
backup="true"
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-v|--verbose)
|
||||
verbose="-v"
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-s|--sync)
|
||||
sync="true"
|
||||
shift 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "The arguments to use are"
|
||||
echo "-t|--target {local|test}: The target to load the database to"
|
||||
echo "-b|--backup: Indicate that a new backup should be made of the live database"
|
||||
echo "-v|--verbose: Wordier output"
|
||||
echo "-s|--sync: syncs files from live site"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$backup" = "true" ]; then
|
||||
echo "Backing up live database..."
|
||||
live_backup="prod_$(date +%Y%m%dT%H%M%S).sql"
|
||||
remote_drush="/home/agaric_live/site/vendor/drush/drush/drush -r /home/agaric_Live/site/web $verbose"
|
||||
ssh_cmd="$remote_drush sql-dump --gzip --structure-tables-key=common --result-file=~/backups/$live_backup"
|
||||
ssh agaric_live@elizabeth.mayfirst.org $ssh_cmd
|
||||
live_backup="${live_backup}.gz"
|
||||
else
|
||||
echo "Identifying the most recent live database backup..."
|
||||
live_backup=`ssh agaric_live@elizabeth.org "ls -1t ~/backups/prod*.sql.gz | head -n1 | xargs -n1 basename"`
|
||||
fi
|
||||
|
||||
if [ "$target" = "local" ]; then
|
||||
echo "Copying the database file from live to local..."
|
||||
scp agaric_live@elizabeth.mayfirst.org:~/backups/${live_backup} /var/www/html/backups
|
||||
|
||||
echo "Backing up local database to backups/${local_backup}..."
|
||||
drush sql-dump > /var/www/html/backups/${local_backup}
|
||||
|
||||
echo "Dropping local database..."
|
||||
drush -y sql-drop
|
||||
|
||||
echo "Unzipping live database..."
|
||||
gzip -d -f /var/www/html/backups/${live_backup}
|
||||
|
||||
echo "Importing the database copied from live..."
|
||||
drush sqlc < /var/www/html/backups/${live_backup%.*}
|
||||
|
||||
if [ "$sync" = "true" ]; then
|
||||
echo "Pulling files from live into local..."
|
||||
drush -y rsync @live:%files @self:%files
|
||||
fi
|
||||
|
||||
elif [ "$target" = "test" ]; then
|
||||
remote_drush="/home/agaric_test/vendor/drush/drush/drush -r /home/agaric_test/site/web $verbose"
|
||||
ssh agaric_test@elizabeth.mayfirst.org "${remote_drush} status > /dev/null" || (echo "SSH connection to ${target} or drush status failed - have you set up the key, and does site exist?"; exit 1)
|
||||
ssh_cmd="scp ~/backups/${live_backup} agaric_test@localhost:~/backups"
|
||||
ssh agaric_live@elizabeth.mayfirst.org ${ssh_cmd}
|
||||
|
||||
echo "Backing up test database..."
|
||||
ssh agaric_test@elizabeth.mayfirst.org "${remote_drush} sql-dump > ~/backups/${local_backup}"
|
||||
|
||||
echo "Dropping test database..."
|
||||
drush @test -y sql-drop
|
||||
|
||||
echo "Unzipping live database..."
|
||||
ssh_cmd="gzip -d -f ~/backups/${live_backup}"
|
||||
ssh agaric_test@elizabeth.mayfirst.org "${ssh_cmd}"
|
||||
|
||||
echo "Loading live database into test..."
|
||||
ssh agaric_test@elizabeth.mayfirst.org "${remote_drush} sqlc < ~/backups/${live_backup%.*}"
|
||||
|
||||
if [ "$sync" = "true" ]; then
|
||||
echo "Pulling files from live into test..."
|
||||
drush -y rsync @live:%files @test:%files
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Done"
|
Loading…
Reference in a new issue