Skip to content

Instantly share code, notes, and snippets.

@peaceman
Created March 5, 2021 14:54
Show Gist options
  • Save peaceman/bb4d6ce5d9f8e32d7b837c0ec4ef1ccb to your computer and use it in GitHub Desktop.
Save peaceman/bb4d6ce5d9f8e32d7b837c0ec4ef1ccb to your computer and use it in GitHub Desktop.
shared-hosting app transfer
#!/usr/bin/env bash
TODAY="$(date +%Y%m%d)"
TRANSFER_FOLDER="transfer-${TODAY}"
APP_FOLDER="${HOME}/app"
DB_NAME="${DB_NAME:-$USER}"
mkdir "${TRANSFER_FOLDER}"
{
cd "${TRANSFER_FOLDER}"
echo "dump the database"
mysqldump "${DB_NAME}" \
--set-gtid-purged=OFF \
--routines \
--skip-lock-tables \
--single-transaction \
--no-tablespaces \
| sed 's/DEFINER=`[^`]*`@`[^`]*`//' \
> "db.sql"
mkdir app
echo "copy the application files"
tar -C "${APP_FOLDER}" --exclude='files/documents' -cf - . | tar -C app -xf -
}
#!/usr/bin/env bash
TRANSFER_FOLDER="${1?missing transfer folder as first argument}"
APP_FOLDER="${HOME}/app"
DB_NAME="${DB_NAME:-$USER}"
{
cd "${TRANSFER_FOLDER}"
echo "drop database and create database ${DB_NAME}"
mysql -e 'drop database if exists`'"${DB_NAME}"'`; create database `'"${DB_NAME}"'`'
echo "import database"
mysql "${DB_NAME}" < "db.sql"
echo "delete current app folder"
rm -rf "${APP_FOLDER}"
echo "copy the application files"
cp -rf app "${APP_FOLDER}"
}
#!/usr/bin/env bash
TRANSFER_FOLDER="${1?missing transfer folder as first argument}"
TARGET_USER="${2?missing target user as second argument}"
TRANSFER_FOLDER_NAME=$(basename "${TRANSFER_FOLDER}")
rsync \
--archive \
--update \
--recursive \
--times \
--chown="${TARGET_USER}:${TARGET_USER}" \
"${TRANSFER_FOLDER}" \
"/home/${TARGET_USER}/${TRANSFER_FOLDER_NAME}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment