Seite 1 von 1

Script zum Kopieren eines Contenido-Systems auf ein anderes

Verfasst: Mi 7. Jul 2004, 16:49
von timo
Das ganze ist ein Shell-Script und berücksichtigt nicht den Abgleich der Daten, sondern kopiert einfach alles von System A nach System B.

Hinweis: Wer sich nicht mit Bash-Scripten auskennt bzw nicht die Fähigkeit besitzt, obiges Script zu debuggen und notfalls auf seine Bedürftnisse anzupassen, der möge dieses Script bitte nicht benutzen.

Ich hafte nicht für eventuelle Datenverluste oder sonstige Schäden am System.

Code: Alles auswählen

#!/bin/bash

password="yourdatabasepassword"
targetsystem="test"
sourcename="LIVE"
targetname="STAGING"
params="-h localhost -u root --password=$password"
rootpath="/home/cms/"
sqlfile="$rootpath/$targetsystem-$date-mysql.sql"
backup="$rootpath/$targetsystem-$date.tar.gz"
sourcedatabase="contenido"
destdatabase="contenido_staging"
staging="staging"
www="www"

echo "WARNING! This will sync $sourcename to $targetname."
echo "This will drop all changes to $targetname system, but"
echo "will create a backup of the $targetname first."
echo
echo -n "Are you sure (n)? "
read sure

if [ "$sure" != "y" ]; then
  echo "Aborted."
  exit
fi

echo
date=`date +%Y%m%d`


echo "Dumping MySQL-Database to $sqlfile"
mysqldump $destdatabase $params > $sqlfile

echo "Creating filesystem archive to $backup"
cd $rootpath
tar cfj $backup $staging

echo "Store old client configuration"
mysqldump $destdatabase $params con_clients > /tmp/clients.sql
echo "Copy database from $sourcename to $targetname"
mysqldump $sourcedatabase $params > /tmp/sync.sql
mysql $params -e "DROP DATABASE $sourcedatabase"
mysql $params -e "CREATE DATABASE $sourcedatabase"

mysql $params $destdatabase < /tmp/sync.sql
echo "Re-Installing saved client configuration"
mysql $params destdatabase -e "DROP TABLE con_clients"
mysql $params destdatabase < /tmp/clients.sql
echo "Cleaning con_code"
mysql $params destdatabase -e "DELETE FROM con_code"
echo "Copy frontend directory to $rootpath$staging/cms"
rm -rf $rootpath$staging/cms
cp -R $rootpath$www/cms/ $rootpath$staging

Verfasst: Do 8. Jul 2004, 07:26
von emergence
elegante lösung wenn man bash verwenden kann...

src löschen?????

Verfasst: Fr 16. Sep 2005, 13:13
von EineFragehaettichdanoch
Hi,

warum

Code: Alles auswählen

mysql $params -e "DROP DATABASE $sourcedatabase"
mysql $params -e "CREATE DATABASE $sourcedatabase"
??
Müsste das nicht die $destdatabase sein???
:?

nochwas..

Verfasst: Fr 16. Sep 2005, 14:02
von EineFragehaettichdanoch
Ist ein Aufruf von updateseqruntime.php hier nicht nötig??? :?

Verfasst: Fr 16. Sep 2005, 14:13
von timo
es kann sein daß das Script fehlerhaft ist - probiere es aus, nachdem du Backups gemacht hast

ein Aufruf von updateseqruntime ist hier nicht nötig, schadet aber nie. Da die Tabelle con_sequence auch kopiert wird uns sich die Anzahl der PrimaryKeys nicht geändert hat, sollte es hier keine Probleme geben.

Verfasst: Fr 16. Sep 2005, 15:47
von EineFragehaettichdanoch
hi,
danke für die schnelle Antwort.
Ja bin das Script ja eh am modifizieren.. habs nur nicht verstanden, warum die gelöscht werden soll..

..funzt

Verfasst: Fr 16. Sep 2005, 17:24
von EineFragehaettichdanoch
OK funktioniert jetzt. :D
:arrow: Ich möchte allerdings nochmals wie timo darauf hinweisen, dass jeder, der sich nicht mit shell-scripts und mysql auskennt und in der Lage ist, sich sowas quasi auch selbst zu schreiben, die Finger davon lassen sollte!
Das gepostete Script ist nunmal nur ein sehr abstraktes Beispiel, das ggf. noch den ein oder anderen Fehler hat. - Also anschauen, merken und selbst nochmal neu schreiben! - Das geht natürlich nicht gegen Dich, timo - will nur verhindern, dass sich irgendjemand leichtsinnigerweise irgendwas löscht..
:wink:
Nochmal danke, dass du es gepostet hast!

Verfasst: Fr 16. Sep 2005, 19:36
von timo
Ja es war auch eher als Beispiel gedacht ;)