Skip to content

Instantly share code, notes, and snippets.

@kagg-design
Created March 5, 2020 20:44
Show Gist options
  • Save kagg-design/57733530a845e031ba6cb46337471a5b to your computer and use it in GitHub Desktop.
Save kagg-design/57733530a845e031ba6cb46337471a5b to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ "$OSTYPE" == "linux-gnu" ] && grep -q Microsoft /proc/version; then
WP_PATH=$(wp config path)
else
WP_PATH=$(wp config path 2>/dev/null)
fi
if [[ ! $WP_PATH ]]; then
echo "This is not a WordPress install"
exit 1
fi
WP_PATH="$(dirname "$WP_PATH")"
PARAMETERS_FILE="$WP_PATH/sync.params"
if [[ ! -f "$PARAMETERS_FILE" ]]; then
echo "Parameters file $PARAMETERS_FILE does not exist"
exit 1
fi
TYPE="$1"
if [[ -z $TYPE ]]; then
TYPE="db"
fi
if [[ "db" != "$TYPE" && "uploads" != "$TYPE" && "all" != "$TYPE" ]]; then
echo "Argument can be 'db', 'uploads' or 'all' only"
exit 1
fi
source $PARAMETERS_FILE
if [[ 0 != "$?" ]]; then
exit 1
fi
SECONDS=0
if [[ "db" == "$TYPE" || "all" == "$TYPE" ]]; then
echo -e "\nSyncing database..."
ssh -i "$KEY_FILE" "$REMOTE_DOMAIN" "cd $REMOTE_PATH > /dev/null&&/root/bin/wp --allow-root db export /tmp/wp.sql > /dev/null"
scp -i "$KEY_FILE" $REMOTE_DOMAIN:/tmp/wp.sql wp.sql
ssh -i "$KEY_FILE" $REMOTE_DOMAIN "rm /tmp/wp.sql"
echo -e "\nImporting database..."
wp --allow-root --quiet db import wp.sql
rm wp.sql
echo -e "\nReplacing domain in database..."
wp search-replace --url="$REMOTE_URL" "$REMOTE_URL" "$LOCAL_URL" --recurse-objects --report-changed-only --precise --skip-columns=guid --skip-tables=wp_users --skip-plugins --skip-themes --allow-root
wp cache flush
fi
if [[ "uploads" == "$TYPE" || "all" == "$TYPE" ]]; then
if [ "$OSTYPE" == "linux-gnu" ] && grep -q Microsoft /proc/version; then
# Fix paths if we are in Windows Subsystem Linux (WSL)
LOCAL_PATH=$(wslpath $LOCAL_PATH)
fi
echo -e "\nSyncing uploads..."
rsync -ase "ssh -i $KEY_FILE" --exclude "*backwpup*/*" $REMOTE_DOMAIN:"$REMOTE_PATH"wp-content/uploads/* "$LOCAL_PATH"/wp-content/uploads
fi
$AFTER_SYNC_COMMANDS
echo "Finished. Time elapsed: $SECONDS seconds."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment