Skip to content

Instantly share code, notes, and snippets.

@jtwiest
Last active July 23, 2019 16:35
Show Gist options
  • Save jtwiest/072fdef1808d36293335e1be46872061 to your computer and use it in GitHub Desktop.
Save jtwiest/072fdef1808d36293335e1be46872061 to your computer and use it in GitHub Desktop.
Backup and delete emergence site from server
#!/bin/bash
# Backup and delete given emergence site
# sudo ./delete-site y handle1 handle2
# Configure backup flag
backup="y"
if [ "$1" == "n" ] || [ "$1" == "y" ]; then
backup="$1"
else
echo "Missing backup param y/n"
exit 1;
fi
echo "Site backup set to: $backup";
# Process each provided handle
for handle in "${@:2}"
do
echo "Found Handle: $handle"
site_directory="emergence/sites/$handle"
# Verify site handle provided
if [ "$site_directory" == 'emergence/sites/' ]; then
echo "Missing site directory $handle"
exit 1
fi
# Verify site directory exists
if [ ! -d "/$site_directory" ]; then
echo "Invalid site directory $site_directory"
exit 1
fi
echo "Found Site Directory: $site_directory"
# Connect to mysql
# @todo make dynamic
UNDERSCORE="/usr/local/lib/node_modules/emergence/node_modules/.bin/underscore"
MYSQL_SOCKET=/emergence/services/run/mysqld/mysqld.sock
MYSQL_USERNAME=root
MYSQL_PASSWORD=$(sudo cat /emergence/config.json | $UNDERSCORE extract --outfmt text services.plugins.sql.managerPassword)
if [ "$backup" == "y" ]; then
# Zip site directory for backup
echo Zipping directory: /$site_directory
tar -C / -zcf "$handle.tgz" $site_directory
# Dump database
mysqldump -u "${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" -S "${MYSQL_SOCKET}" "$handle" > "$handle.sql"
# Gzip mysqldump
gzip "$handle.sql"
# Delete uncompressed mysql file
rm "$handle.sql"
fi
# Delete mysql database
BACKTICK='`'
DATABASENAME="$BACKTICK$handle$BACKTICK"
mysql -u "${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" -S "${MYSQL_SOCKET}" -e "DROP DATABASE IF EXISTS $DATABASENAME;"
# Delete mysql user
mysql -u "${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" -S "${MYSQL_SOCKET}" -e "DROP USER IF EXISTS $DATABASENAME@localhost"
# Delete site directory
echo Deleting /$site_directory
rm -rf "/$site_directory"
echo "Finished deleting $handle"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment