commit 628e6ba83dcffe02da0d6d16f2e2ad6ed37df6af Author: Vitali Graf Date: Tue Dec 26 12:46:05 2017 +0100 initialer commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4f53685 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.directory +*/.directory +*/*/.directory +.project +vitaligraf.de.sh \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d8c9647 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.directory +**/.directory +.project +vitaligraf.de.sh \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8861fbb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM python:2 + +WORKDIR /root + +RUN apt-get update && apt-get install rdiff-backup --no-install-recommends -y && apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY ./backup.sh /root/backup.sh diff --git a/backup.sh b/backup.sh new file mode 100755 index 0000000..9a99ea1 --- /dev/null +++ b/backup.sh @@ -0,0 +1,61 @@ +#!/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