SugarCRM Community Edition: HowTo Auto-Backup

SugarCRM geht eigentlich ganz einfach zu sichern, es gibt zwei Dinge die ihr wegsichern müsst: Die Datenbank und die Dateien, da hier einige Konfigurationsdetails und Customizing-Einstellungen gesichert sind.

Ich gehe in diesem HowTo von der aktuellsten Version von SugarCRM Community Edition aus, die auf einem Linux-Server (hier Ubuntu 12.04 LTS) installiert ist. Für andere Linux-Distributionen kann die Automatisierung des Backups evtl. etwas anders aussehen, Kommentare sind erwünscht!

Datenbank

Meist wird SugarCRM mit mySQL eingesetzt, hierbei könnt ihr einfach die komplette Datenbank exportieren.

Entweder macht ihr das per phpmyadmin, indem ihr die SugarCRM-Datenbank exportiert und die Datei sicher speichert, oder ihr macht das automatisch per Shell-Skript.
Per Skript funktioniert das am Besten so (gleich alle Datenbanken):

mysqldump -u <DBUSER> -p<PASSWORD> –all-databases | gzip > /home/<USER>/mysql_backup_`date ‘+%Y-%m-%d’`.sql.gz

Dabei müsst ihr für folgende Variablen folgendes eintragen:
<DBUSER> in den meisten Fällen wohl “root” bzw. besser noch ein User, den ihr mit Leseberechtigung für alle Datenbanken ausstattet.
<PASSWORD> euer Passwort für den User – Achtung, der Parameter wird ohne Leerzeichen zwischen -p und dem Passwort geschrieben
<USER> Der User in eurem Home-Verzeichnis, in welches das Skript die Datei ablegen soll

Ein Beispielaufruf sieht dann folgendermaßen aus:

mysqldump -u root -pSTRENGGEHEIM –all-databases | gzip > /home/backup/mysql_backup_`date ‘+%Y-%m-%d’`.sql.gz

Um das ganze zu automatisieren, kann man sich das auch in ein Shell-Skript schreiben und dieses dann mit Cron automatisiert ablaufen lassen.
Das geht ganz einfach: Neue Datei, z.B. “sugar_db_backup.sh” erstellen. Der Inhalt sollte so aussehen:

#! /bin/sh
mysqldump -u root -pSTRENGGEHEIM –all-databases | gzip > /home/backup/mysql_backup_`date ‘+%Y-%m-%d’`.sql.gz

Die Datei kopiert ihr einfach nach /etc/cron.daily und restartet den cron-Service:

sudo service cron restart

Fertig ist das automatische Datenbank-Backup!

 

Die Dateien

Die Dateien zu sichern ist wohl das einfachste. Man kann natürlich den gesamten Ordner kopieren, aber das geht auch besser.
Wir wollen die Dateien in einer Zip-Datei aufbewahren und gleich an den Ort verschieben, an dem die Daten sicher sind.

zip -rv /home/backup/sugarcrm_dateien_$(date +”%y-%m-%d”).zip /var/www/sugarcrm >> /home/backup/sugarcrm_dateien_log_$(date +”%y-%m-%d”).txt

Der Parameter -r für den Zip-Aufruf bedeutet, dass das Verzeichnis rekursiv bearbeitet wird, also auch alle Unterverzeichnisse mit gezippt werden. -v steht für “verbose”, so dass ihr detaillierte Informationen darüber bekommt was alles gesichert wurde. Das Datum wird automatisch mit angehängt, so dass ihr Backup-Dateien bekommt die in etwa so aussehen: sugarcrm_dateien_130109.zip. Diese sind im Verzeichnis /home/backup/ zu finden, bei Bedarf bitte anpassen auf euren Usernamen im System. Der Funktionsaufruf bezieht sich auf den Pfad /var/www/sugarcrm, eventuell müsst ihr den anpassen – dahin, wo euer SugarCRM-Root-Verzeichnis ist.
Dieses Skript macht noch etwas: Der Output des Zippens wird als Log-Datei im Verzeichnis /home/backup/sugarcrm_dateien_log_<aktuelles Datum>.txt abgespeichert.

Das Skript lässt sich natürlich auch automatisieren, dafür einfach wieder eine Datei erstellen die z.B. “sugar_dateien_backup.sh” heißt:

#! /bin/sh
zip -rv /home/backup/sugarcrm_dateien_$(date +”%y-%m-%d”).zip /var/www/sugarcrm >> /home/backup/sugarcrm_dateien_log_$(date +”%y-%m-%d”).txt

Die Datei kopiert ihr wieder einfach nach /etc/cron.daily und restartet den cron-Service, damit das Backup automatisch läuft:

sudo service cron restart

Aber es ist ein wenig vorsicht geboten, damit ihr euch nicht völlig zumüllt: Die Dateien von SugarCRM sind ziemlich groß, man kommt locker auf 280 MB die als Zip-Datei erstellt werden.
Abhilfe schafft entweder ein Skript, was alte Backups löscht, oder ihr speichert euer Backup einfach über – nehmt die Zeichen $(date +”%y-%m-%d”) aus dem Befehl für die Zip-Datei raus, dann bleiben noch anständige Logdateien übrig:

#! /bin/sh
zip -rv /home/backup/sugarcrm_dateien_aktuell.zip /var/www/sugarcrm >> /home/backup/sugarcrm_dateien_log_$(date +”%y-%m-%d”).txt

Fertig!

 

Anmerkungen? Fragen? Verbesserungsvorschläge?

Related Posts

Leave a Reply