#!/bin/bash # set -e source job.conf backup(){ # SCHRITT 1: # sichern der MySQL-Datenbanken auf dem remote host # es muss auf dem remote host genug Platz auf der Festplatte geben damit Dump erfolgen kann! if [ ${#MYSQL_DB[@]} -gt 0 ] then [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "[ ! -d \"$MYSQL_DUMP_DIR\" ] && mkdir -p \"$MYSQL_DUMP_DIR\"" for db in "${MYSQL_DB[@]}" do ssh ${REMOTE_USER}@${REMOTE_HOST} "mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --add-drop-database --routines --single-transaction \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" done # Ordner mit SQL-Dateien in die Sicherung aufnehmen FOLDERS[${#MYSQL_DB[@]}]="$MYSQL_DUMP_DIR" fi # SCHRITT 2: # die Sicherung der Ordner (inklusive der SQL-Dump) for dir in "${FOLDERS[@]}" do # prüfen ob das backup-ordner existiert ... if [ ! -d "/var/backups/${REMOTE_HOST}${dir}" ]; then # ... und gegebenfals anlegen mkdir -p "/var/backups/${REMOTE_HOST}${dir}" fi # die eigentliche Sicherung ... rdiff-backup --exclude-special-files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "/var/backups/${REMOTE_HOST}${dir}" # alle Sicherungen die älter als $DELETE_OLD_FILES löschen rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "/var/backups/${REMOTE_HOST}${dir}" done # SCHRITT 3: # die SQL-Dateien vom remote host wieder löschen if [ ${#MYSQL_DB[@]} -gt 0 ] then [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/\"*.sql" fi } # ACHTUNG NOCH NICHT FERTIG !! restore(){ for dir in "${FOLDERS[@]}" do rdiff-backup -r now "/var/backups/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" done } # Tue das da backup