Hallo,
hatte bei mir die Aufgabe, dass ich eine Kopie meiner produktiven 4.9.35 Contao Installation benötigt habe, um ein paar Template Änderungen auszuprobieren.
Da dachte ich mir,... das hat sicher schon jemand gebraucht. Gefunden habe ich dann https://community.contao.org/de/show...on-duplizieren
Gut beschrieben aber auch schon fast 11 Jahre alt...
Da mir die allwissende Müllhalde nichts anderes brauchbares ausgespuckt hat, habe ich mich an die Anpassung des Skriptes gemacht.
Es erzeugt eine lokale Kopie einer Contao-Installation in einem neuen Verzeichnis und in eine (bestehende) Datenbank.
Es funktioniert für 4.9.35. Für andere Versionen sind sicherlich Anpassungen notwendig. Die Experten dürften diese hoffentlich finden...
- Wichtig ist, dass die Variablen am Anfang gesetzt werden. Das Passwort habe ich aufgrund Sonderzeichen in Anführungszeichen gesetzt.
- Auch muss die Datenbank schon angelegt sein. Viele machen das ja über den Hoster, deshalb nicht hier im Skript.
- Manche haben wohl statt einer parameters.yml eine .env Datei. Da muss dann entsprechend Schritt 4 angepasst werden.
Code:
#!/bin/sh
PATH_SRC=
PATH_DST=
DB_HOST_SRC=
DB_PORT_SRC=
DB_NAME_SRC=
DB_USER_SRC=
DB_PASS_SRC=""
DB_HOST_DST=
DB_PORT_DST=
DB_NAME_DST=
DB_USER_DST=
DB_PASS_DST=""
echo "Copy contao installation"
echo "Src folder: ${PATH_SRC}"
echo " database: ${DB_NAME_SRC}"
echo "Dst folder: ${PATH_DST}"
echo " database: ${DB_NAME_DST}"
echo ""
echo "Destination folder and database will be cleared!"
while true
do
read -r -p "Are you sure? [y/n] " input
case $input in
[yY][eE][sS]|[yY])
break;
;;
[nN][oO]|[nN])
echo "exiting..."
exit 1
;;
*)
;;
esac
done
echo "1/5 Clear destination folder"
rm -rf ${PATH_DST}
echo "2/5 Copy files"
cp -a ${PATH_SRC} ${PATH_DST}
echo "3/5 Duplicate database"
mysqldump -h${DB_HOST_SRC} -P${DB_PORT_SRC} -u${DB_USER_SRC} -p"${DB_PASS_SRC}" --hex-blob --add-drop-table ${DB_NAME_SRC} | mysql -h${DB_HOST_DST} -P${DB_PORT_DST} -u${DB_USER_DST} -p"${DB_PASS_DST}" --default-character-set=utf8 ${DB_NAME_DST}
echo "4/5 Adjust parameters.yml"
CONFIGFILE=${PATH_DST}/app/config/parameters.yml
sed -e "s/database_host: ${DB_HOST_SRC}/database_host: ${DB_HOST_DST}/g" -i ${CONFIGFILE}
sed -e "s/database_port: ${DB_PORT_SRC}/database_port: ${DB_PORT_DST}/g" -i ${CONFIGFILE}
sed -e "s/database_name: ${DB_NAME_SRC}/database_name: ${DB_NAME_DST}/g" -i ${CONFIGFILE}
sed -e "s/database_user: ${DB_USER_SRC}/database_user: ${DB_USER_DST}/g" -i ${CONFIGFILE}
sed -e "s/database_password: ${DB_PASS_SRC}/database_password: ${DB_PASS_DST}/g" -i ${CONFIGFILE}
echo "5/5 Clear application cache"
rm -rf ${PATH_DST}/var/cache/prod
rm -rf ${PATH_DST}/var/cache/dev
${PATH_DST}/vendor/bin/contao-console cache:clear --no-warmup
${PATH_DST}/vendor/bin/contao-console cache:warmup
echo "Finished."
Möge es für jemanden hilfreich sein.
Viele Grüße,
Ruppel
Lesezeichen