Backups mit Git
Aus Contao Community Documentation
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
Inhaltsverzeichnis
Grundlagen
Backup einer Webpraesenz mittels GIT. Hierbei ist das Repository ausserhalb des Webpfades. Der Zugriff auf die MySQL Datenbank erfolgt hierbei Passwortlos, d.h. es muss bei der Eingabe der Befehle mysqldump und mysql kein Passwort angegeben werden. Dies wurde durch entsprechende Konfiguration der $HOME/.my.cnf bewerkstelligt.
- Backupverzeichnis : $HOME/backup/contao_1
- Contao Verzeichnis : /var/www/contao_1/html
- Datenbank Name : DB_NAME
Erstellen des Backupverzeichnisses
cd $HOME/backup/contao_1 git init --bare git config core.worktree /var/www/contao_1/html git config core.bare false
in das Verzeicnis $HOME/backup/contao_1 wechseln und eine Datei "makeBackup.sh" erstellen.
#!/bin/bash TAGNAME=$(date "+%Y%m%d_%H%M") echo "DATABASE Dump" mysqldump DB_NAME > /var/www/contao_1/html/database.sql git add . git commit -m $TAGNAME rm /var/www/contao_1/html/database.sql
diese Datei ausfuehrbar machen :
chmod +x makeBackup.sh
Erstellen eines Backups
in das Backupverzeichnis wechseln und die makeBackup.sh aufrufen.
cd $HOME/backup/contao_1 ./makeBackup.sh
Danach wird die DB erstellt, alles in GIT versioniert, und final die database.sql wieder geloescht. Dies kann auch mittels cron automatisiert werden.
Restore eines Backups
Anzeigen der vorhandenen Sicherungen :
$> git log --oneline 1628ed4 20130524_1645 3405409 20130524_1630 ad83395 20130524_1615
bzw.
git log --oneline | grep 1615 ad83395 20130524_1615
D.h. der Commit ist ad83395 und kann mit
git checkout -f ad83395
wiederhergestellt werden. Danach nur noch die database.sql manuell wiederherstellen. Oder via Hook. Hierzu im Verzeichnis hooks die Datei post-checkout erstellen mit diesem Inhalt :
#!/bin/bash echo "restore database" mysql DB_NAME < /var/www/contao_1/html/database.sql rm /var/www/contao_1/html/database.sql