Repository URL to install this package:
|
Version:
2.2.8 ▾
|
meltmedia/meltconsole
/
melt-pull-db.sh
|
|---|
#!/bin/bash
# Parse arguments with `=`
# https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash
for i in "$@"
do
case $i in
--env=*)
ENVIRONMENT="${i#*=}"
shift # past argument=value
;;
*)
# unknown option
;;
esac
done
# Exit if no environment was detected
if [ -z "${ENVIRONMENT}" ]; then
echo "Value for --env missing."
exit 1
fi
# Final prompt to ensure user is chose the right environment and branch
PROMPT="Are you sure you want create a backup on ${ENVIRONMENT}? (n/Y)"
while true; do
read -p "$PROMPT" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit;;
* ) break;; # defaults to yes
esac
done
# Create timestamp for our backup file
DATE=$(date +"%Y%m%d%H%M")
BACKUP_NAME="${ENVIRONMENT}-backup-${DATE}.sql"
# Create a backup of the database inside of a `backups/` directory
echo "Backing up database on ${ENVIRONMENT}..."
drush @melt.${ENVIRONMENT} ssh "mkdir -p backups && lando db-export backups/${ENVIRONMENT}-backup-${DATE}.sql"
echo "Pulling database to local.."
drush rsync @melt.${ENVIRONMENT}:backups/${BACKUP_NAME}.gz @self:../${BACKUP_NAME}.gz -y
# Prompt user if they would
PROMPT="Would you like to automatically import the backup? (N/y)"
while true; do
read -p "$PROMPT" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit;;
* ) exit;; # defaults to yes
esac
done
echo "Importing database..."
gzip -d ${BACKUP_NAME}.gz
drush sql-drop -y && drush sql-cli < ${BACKUP_NAME} && rm ${BACKUP_NAME}
echo "Import Complete!"