Skip to content

Instantly share code, notes, and snippets.

@axelei
Last active May 6, 2025 14:43
Show Gist options
  • Select an option

  • Save axelei/dafd305213ed1b2655545f06edfbc905 to your computer and use it in GitHub Desktop.

Select an option

Save axelei/dafd305213ed1b2655545f06edfbc905 to your computer and use it in GitHub Desktop.
Pequeño script para traspasar una instancia de Prestashop a otra
# Programa para clonar prestashop
# Copyright Krusher 2015 - Licenciado bajo GPL3
paramfile="httpdocs/app/config/parameters.php"
extractDatabaseName="s/.*'database_name' => '\(.*\)'.*/\1/p"
extractDatabaseUser="s/.*'database_user' => '\(.*\)'.*/\1/p"
extractDatabasePassword="s/.*'database_password' => '\(.*\)'.*/\1/p"
if [ "$#" -lt 4 ]; then
echo "Error: Se requieren 3 argumentos."
echo "Uso: $0 dir_web_original dir_web_destino url_original url_destino"
exit 1
fi
echo Traspasando de $1 a $2 \(urls: $3 -- $4 \)
databaseName=$(sed -n "$extractDatabaseName" $1/app/config/parameters.php)
databaseUser=$(sed -n "$extractDatabaseUser" $1/app/config/parameters.php)
databasePassword=$(sed -n "$extractDatabasePassword" $1/app/config/parameters.php)
echo Datos de la base de datos de origen: $databaseName / $databaseUser / $databasePassword
targetName=$(sed -n "$extractDatabaseName" $2/app/config/parameters.php)
targetUser=$(sed -n "$extractDatabaseUser" $2/app/config/parameters.php)
targetPassword=$(sed -n "$extractDatabasePassword" $2/app/config/parameters.php)
echo Datos de la base de datos de destino: $targetName / $targetUser / $targetPassword
if [[ -z "$databaseName" ]] || [[ -z "$databaseUser" ]] || [[ -z "$databasePassword" ]] || [[ -z "$targetName" ]] || [[ -z "$targetUser" ]] || [[ -z "$targetPassword" ]]; then
echo "Error: Algunas de las variables no han sido extraídas, comprueba los errores y los directorios."
exit 1
fi
echo URL de la instancia origen: $3
echo URL de la instancia destino: $4
read -p "Pulsa enter para continuar o CTRL+C para cancelar"
echo "Procediendo con el traspaso."
echo Extrayendo base de datos
rm -f temp.sql
mysqldump -u $databaseUser $databaseName -p$databasePassword > temp.sql
echo Borrando base de datos objetivo
mysql -u $targetUser $targetName -p$targetPassword -e "drop database $targetName; create database $targetName"
echo Insertando la base de datos origen en la objetivo
mysql -u $targetUser -D $targetName -p$targetPassword < temp.sql
rm -f temp.sql
echo borra ficheros contenido antiguo
rm -Rf $2/*
echo copia ficheros
cp -r $1/* $2/
echo Configurando base de datos objetivo con los datos originales
sed -i "s/'database_name' => '\(.*\)'/'database_name' => '$targetName'/g" $2/app/config/parameters.php
sed -i "s/'database_user' => '\(.*\)'/'database_user' => '$targetUser'/g" $2/app/config/parameters.php
sed -i "s/'database_password' => '\(.*\)'/'database_password' => '$targetPassword'/g" $2/app/config/parameters.php
echo Configurando la nueva URL en la instancia destino
mysql -u $targetUser $targetName -p$targetPassword -e "update prstshp_configuration set value = '$4' where NAME IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL')"
mysql -u $targetUser $targetName -p$targetPassword -e "UPDATE prstshp_shop_url SET domain = '$4', domain_ssl = '$4' WHERE id_shop_url = 1;"
sed -i s/\\^$3\\$/^$4$/g $2/.htaccess
echo Terminado.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment