Mac OSX - Backupskript für Websites auf MAMP
Habe eine Bash-Backupfunktion programmiert mit welcher man die Dateien und Ordner sowie die Datenbank einer Website sichern kann. Es wird ein gewöhnlicher Datenbank-Dump erstellt und der Ordner, welcher die MySQL-Datenbank enthält, wird ebenso als Gzip-Archiv gespeichert. Denn manchmal kann es (wie z.B. beim Lucene-Suchindex) vorkommen, dass sich ein Dump nicht mehr fehlerfrei importieren lässt. Datei- und Ordnerrechte werden ebenso gespeichert. Zudem werden Dateien aus dem Backup-Verzeichnis gelöscht, die älter als 14 Tage sind. Damit alte Sicherungen Euren Speicherplatz nicht unnötig belegen. Wem 14 Tage zu wenig sind, kann ja die 14 im Code ersetzen.
Vielleicht kann es nicht nur mir nützlich sein. Es ist für eine Website unter MAMP ausgerichtet. Außer dem Standard htdocs-Ordner von MAMP braucht man im HOME-Verzeichnis nur einen Ordner namens Backups. Die benötigten Veränderungen für ein Linux-System sind minimal. Falls ihr nicht sicher ausschließen könnt, dass bei der Durchführung des Backups Daten in die Datenbank geschrieben werden, solltet ihr zuvor den MySQL-Datenbankserver stoppen. Da sonst der gesicherte Datenbank-Ordner (im Gegensatz zum Dump) unvollständig sein kann. Das stopMysql.sh-Skript von MAMP hängt sich auf, wenn ich es per Skript anspreche. Deswegen habe ich den Vorgang nicht in die Funktion gebracht.
Kopiert den folgenden Code in die versteckte .bashrc Datei in Eurem Home-Verzeichnis und führt im Terminal
source ~/.bashrc
aus um Eure .bashrc zu aktualisieren. Anschließend startet ihr die Funktion mit dem Befehl websiteBackup, wodurch der Name der Datenbank sowie der Name des Ordners, in dem Eure Website liegt, abgefragt werden.
function websiteBackup() {
echo "Database name?"
read db
cd /Applications/MAMP/db/mysql &&
tar zfcp ${db}_db_$(date +%Y.%m.%d_%H-%M-%S).tar.gz ${db}/ &&
echo "Website-folder?"
read folder
if [ -e $HOME/Backups/${folder} ];
then
mv ${db}_* ${HOME}/Backups/${folder}
else
mkdir /${HOME}/Backups/${folder}
mv ${db}_* ${HOME}/Backups/${folder}
fi
/Applications/MAMP/Library/bin/mysqldump --user=root --password=root ${db} | gzip > ${HOME}/Backups/${folder}/${db}__dump_db-$(date +%Y.%m.%d_%H-%M-%S).sql.gz &&
cd /Applications/MAMP/htdocs &&
tar zfcp ${folder}_files_$(date +%Y.%m.%d_%H-%M-%S).tar.gz ${folder}/ &&
mv ${folder}_files* ${HOME}/Backups/${folder} &&
echo "Deleting files which are older than 14 days."
find ${HOME}/Backups/${folder} -mtime +14 -exec rm {} \;
echo "Finish."
cd $HOME
}
Über Feedback würde ich mich freuen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Tagen 14 Stunden
vor 2 Tagen 16 Stunden
vor 2 Tagen 17 Stunden
vor 2 Tagen 17 Stunden
vor 3 Tagen 14 Stunden
vor 3 Tagen 16 Stunden
vor 4 Tagen 13 Stunden
vor 5 Tagen 6 Stunden
vor 5 Tagen 7 Stunden
vor 5 Tagen 10 Stunden