Skip to content

Instantly share code, notes, and snippets.

@50l3r
Last active December 16, 2021 18:30
Show Gist options
  • Save 50l3r/b5a80bc1bba689edd2e69bf3d8fb818c to your computer and use it in GitHub Desktop.
Save 50l3r/b5a80bc1bba689edd2e69bf3d8fb818c to your computer and use it in GitHub Desktop.
Clone Wordpress on a PLESK instance
#!/bin/bash
# VARS
ORIG_DOMAIN="example.com"
ORIG_FOLDER="/var/www/vhosts/example.com/httpdocs"
ORIG_DB_USER=""
ORIG_DB_PASS=''
ORIG_DB_NAME=""
DEST_DOMAIN="beta.example.com"
DEST_FOLDER="/var/www/vhosts/beta.example.com/httpdocs"
DEST_DB_USER=""
DEST_DB_PASS=''
DEST_DB_NAME=""
DEST_PERMS=""
# CLI COMMANDS
ORIG_MYSQL="/usr/bin/mysql --skip-column-names -u ${ORIG_DB_USER} --password=${ORIG_DB_PASS} -D ${ORIG_DB_NAME}"
DEST_MYSQL="/usr/bin/mysql --skip-column-names -u ${DEST_DB_USER} --password=${DEST_DB_PASS} -D ${DEST_DB_NAME}"
# REMOVE CURRENT CLONE DATABASE AND CREATE AGAIN
echo "Limpiando base de datos destino..."
$DEST_MYSQL -e "DROP DATABASE IF EXISTS ${DEST_DB_NAME}; CREATE DATABASE ${DEST_DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" -s
# CLONE CURRENT DATABASE
echo "Clonando base de datos..."
mirrorResult="$( ( mysqldump -u $ORIG_DB_USER --password=$ORIG_DB_PASS $ORIG_DB_NAME | $DEST_MYSQL) 2>&1 )"
if [ "$mirrorResult" == "" ] ; then
echo "Eliminando ficheros residuales antiguos..."
rm -rf $DEST_FOLDER/*
echo "Copiando nueva estructura de ficheros..."
yes | cp -rf $ORIG_FOLDER/* $DEST_FOLDER
yes | cp -rf $ORIG_FOLDER/.htaccess $DEST_FOLDER/.htaccess
echo "Reemplazando strings en ficheros..."
find $DEST_FOLDER/ -type f -exec sed -i "s/${ORIG_DOMAIN}/${DEST_DOMAIN}/g" {} \;
echo "Modificando wp-config.php..."
sed -i "s/^.*DB_NAME.*$/define('DB_NAME', '${DEST_DB_NAME}');/" $DEST_FOLDER/wp-config.php
sed -i "s/^.*DB_USER.*$/define('DB_USER', '${DEST_DB_USER}');/" $DEST_FOLDER/wp-config.php
sed -i "s/^.*DB_PASSWORD.*$/define('DB_PASSWORD', '${DEST_DB_PASS}');/" $DEST_FOLDER/wp-config.php
sed -i "s/^.*WP_CACHE.*$/define('WP_CACHE', false);/" $DEST_FOLDER/wp-config.php
echo "Reemplazando strings en base de datos..."
wp search-replace $ORIG_DOMAIN $DEST_DOMAIN --path="$DEST_FOLDER"
echo "Calibrando permisos de ficheros..."
chown -R $DEST_PERMS:psacln $DEST_FOLDER
chmod 755 $DEST_FOLDER/httpdocs
echo "Eliminando plugins innecesarios"
rm -rf $DEST_FOLDER/wp-content/plugins/wp-rocket
rm -rf $DEST_FOLDER/wp-content/plugins/wp-rocket-config
rm -rf $DEST_FOLDER/wp-content/plugins/redis-cache
rm -rf $DEST_FOLDER/wp-content/object-cache.php
echo "Añadiendo archivo de desindexado"
echo -e "User-agent: *\nDisallow: /" > $DEST_FOLDER/robots.txt
wp option get blog_public
echo "Clonación completada con éxito"
else
echo "[ERROR] No se pudo clonar la base de datos"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment