Da ich es gerade selber brauchte und es sicherlich noch andere Leute gibt, die immer mal eine komplette Contao-Installation duplizieren müssen, poste ich hier mal eine kurze Anleitung für UNIX-Systeme. Gedacht ist es (zumindest in meinem Fall) zum schnellen Erstellen eines Testsystems aus einem Livesystem. Das ganze wird über ein kleines Shellscript realisiert - es ist also Shellzugriff notwendig.
Wir erstellen also als erstes eine Datei, nennen sie bspw. copy_contao.sh und packen an den Anfang die verwendete Shell:
In dem Script definieren wir dann unsere Pfade zu den Contao-Installationen:
Code:
CONTAO_LIVE_PATH=/home/www/contao_live
CONTAO_TEST_PATH=/home/www/contao_test
Damit wir die Installation ohne Rückmeldungen kopieren können, löschen wir ein bestehendes Testsystem vorher:
Code:
echo "1/5 Lösche ${CONTAO_TEST_PATH}"
rm -rf ${CONTAO_TEST_PATH}
Im nächsten Schritt kopieren wir das ganze Contao-Verzeichnis des Livesystems:
Code:
echo "2/5 Kopiere ${CONTAO_LIVE_PATH} > ${CONTAO_TEST_PATH}"
cp -a ${CONTAO_LIVE_PATH} ${CONTAO_TEST_PATH}
Als nächstes kopieren wir die Datenbank. Die Zieldatenbank für das Testsystem muss schon bestehen, muss jedoch nicht leer sein, da wir DROP TABLES beim Export mit erstellen:
Code:
echo "3/5 Dupliziere db_live > db_test"
mysqldump -uuser_live -ppassword --add-drop-table db_live | mysql -uuser_test -ppassword --default-character-set=utf8 db_test
Bei wem die Datenbank nicht über localhost angesprochen wird, der muss ggf. noch zwei mal -hdb_host mit angeben. mysqldump erstellt hier einen Dump mit DROP TABLE Anweisungen und der Dump wird sofort mysql zum Einspielen übergeben. Wichtig ist dabei, dass das Charset mit angegeben wird.
Im nächsten Schritt passen wir Domaineinträge in der Seitenstruktur an. Ein dem Beispiel liegt das Live-System auf example.com und das Testsystem auf example.net:
Code:
echo "4/5 Passe Domains an"
mysql -uuser_live -ppassword db_test -e "UPDATE tl_page SET dns=REPLACE(dns, 'example.com', 'example.net') WHERE dns LIKE '%example.com'"
Über den gleichen Weg können natürlich auch noch weitere Anpassungen an anderen Tabellen erfolgen.
Im letzten Schritt passen wir noch die Datenbank in der localconfig.php an:
Code:
echo "5/5 Passe localconfig.php an"
sed -e 's/db_live/db_test/g' -i ${CONTAO_TEST_PATH}/system/config/localconfig.php
Auch hier lassen sich noch weitere Felder (bspw. Passwort) anpassen. Weitere Infos zu sed gibt es bspw. hier.
Damit ist unser Script auch schon fast fertig. Über chmod machen wir es jetzt noch ausführbar:
Code:
> chmod +x copy_contao.sh
Danach rufen wir es auf uns freuen uns, wenn alles funktioniert ;-)
Noch ein paar Hinweise:
- Vorsicht! rm -rf löschen das angegeben Verzeichnis ohne Rückfrage! Also schön aufpassen, dass da alle Pfade stimmen und nicht auf einmal das Livesystem gelöscht wurde.
- Mit syncCto gibt es eine Erweiterung, die etwas ähnliches bietet, für meine Fälle aber mit Kanonen auf Spatzen geschossen wäre.
- Hier gibt es weitere Infos zu mysqldump und zu Shellprogrammierung unter Linux.
So, dann viel Spaß beim Kopieren! Verbesserungsvorschläge, Hinweise oder Fragen sind natürlich willkommen.
Gruß