From 3a58956844dcbf00335e9f7fbacc9b20180fabd0 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 11 Nov 2018 15:50:51 +0100 Subject: [PATCH 01/18] =?UTF-8?q?Erstes=20commit=20f=C3=BCr=20das=20MySQL-?= =?UTF-8?q?Backup=20in=20einem=20container?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example_conf.sh | 4 ++++ reset-conf.sh | 1 + start.sh | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/example_conf.sh b/example_conf.sh index 8c77501..61584c2 100644 --- a/example_conf.sh +++ b/example_conf.sh @@ -25,6 +25,10 @@ DELETE_OLD_FILES='8W' # Leere Array () => es werden keine MySQL-Datenbanken gesichert MYSQL_DB=() +# in welchem Docker-Container läuft MySQL-Dienst? +# leer lassen wenn es direkt auf dem $REMOTE_HOST läuft +MYSQL_CONTAINER='' + # MySQL User MYSQL_USER='root' diff --git a/reset-conf.sh b/reset-conf.sh index 057154b..7ccecce 100644 --- a/reset-conf.sh +++ b/reset-conf.sh @@ -4,6 +4,7 @@ FOLDERS=() DELETE_OLD_FILES='8W' MYSQL_DB=() +MYSQL_CONTAINER='' MYSQL_USER='root' MYSQL_PASS='secret' MYSQL_DUMP_DIR="/var/backups/sqldump" diff --git a/start.sh b/start.sh index 6a12b43..122630b 100755 --- a/start.sh +++ b/start.sh @@ -52,7 +52,13 @@ backup(){ for db in "${MYSQL_DB[@]}" do echo dumb database: "$db" - ssh ${REMOTE_USER}@${REMOTE_HOST} "mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" + if [ "$MYSQL_CONTAINER" != '' ]; + then + echo from container: "$MYSQL_CONTAINER" + ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" + else + ssh ${REMOTE_USER}@${REMOTE_HOST} "mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" + fi done # Ordner mit SQL-Dateien in die Sicherung aufnehmen -- 2.52.0 From 6dae560e8b171ea157be4e24f7d1e4a2e12512c5 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 11 Nov 2018 17:29:09 +0100 Subject: [PATCH 02/18] umstrukturierung des Beckup-Ordner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bischerige sicherungen werden ins ROOT verschoben * Ordner VOL und CONT werden zusätzlich angelegt --- start.sh | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/start.sh b/start.sh index 122630b..413e94d 100755 --- a/start.sh +++ b/start.sh @@ -16,6 +16,7 @@ read_config(){ exit 1 fi + source "$CONFIG_DIR/$1" } gen_config(){ @@ -32,6 +33,22 @@ gen_config(){ [ ! -f "$CONFIG_DIR/example_conf.sh" ] && cp /example_conf.sh "$CONFIG_DIR/example_conf.sh" } +move_to_ROOT(){ + read_config $1 + # prüfen ob Ordner ROOT, VOL, CONT existieren + # wenn nicht ROOT anlegen und alle bisher vorhandene Ordner dorthin verschieben + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/ROOT" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/ROOT" + + + ### find /home/vitali/find_tests/ -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name ROOT -prune -or -name "*" -exec mv -t /home/vitali/find_tests/ROOT/ {} + + + find "$BACKUP_DIR/${REMOTE_HOST}" -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name "ROOT" -prune -or -name "*" -exec mv -t "$BACKUP_DIR/${REMOTE_HOST}/ROOT/" {} + + + # anschliessend VOL und CONT anlegen + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/VOL" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/VOL" + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/CONT" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/CONT" +} + backup(){ read_config "$1" @@ -39,7 +56,7 @@ backup(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" # SCHRITT 1: # sichern der MySQL-Datenbanken auf dem remote host @@ -52,7 +69,7 @@ backup(){ for db in "${MYSQL_DB[@]}" do echo dumb database: "$db" - if [ "$MYSQL_CONTAINER" != '' ]; + if [ "$MYSQL_CONTAINER" != '' ] then echo from container: "$MYSQL_CONTAINER" ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" @@ -62,7 +79,12 @@ backup(){ done # Ordner mit SQL-Dateien in die Sicherung aufnehmen - FOLDERS+=("$MYSQL_DUMP_DIR") + if [ "$MYSQL_CONTAINER" != '' ] + then + FOLDERS=("$MYSQL_DUMP_DIR") + else + FOLDERS+=("$MYSQL_DUMP_DIR") + fi fi # SCHRITT 2: @@ -70,7 +92,7 @@ backup(){ for dir in "${FOLDERS[@]}" do # prüfen ob das backup-ordner existiert ... - if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ]; + if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ] then # ... und gegebenfals anlegen mkdir -p "$BACKUP_DIR/${REMOTE_HOST}${dir}" @@ -108,7 +130,7 @@ restore(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" # SCHRITT 1: # Alle Dateien und Ordner aus dem letzten Backup wiederherstellen @@ -143,6 +165,11 @@ restore(){ echo } +test_function(){ + read_config "$1" + echo $REMOTE_HOST +} + list(){ read_config "$1" @@ -151,7 +178,7 @@ list(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" if [ ${#MYSQL_DB[@]} -gt 0 ] then @@ -189,6 +216,10 @@ elif [ "$1" == "--bash" ]; then shift /bin/bash "$@" +elif [ "$1" == "--testit" ]; then + shift + test_function "$@" + else echo "usage ?" fi -- 2.52.0 From 0a98cdca6106f947387950824fe26b6d1b6935cc Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 11 Nov 2018 17:29:09 +0100 Subject: [PATCH 03/18] =?UTF-8?q?Funktion=20move=5Fto=5FROOT()=20ge=C3=A4n?= =?UTF-8?q?dert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * die Backup-Ordner soll nun nicht mehr je einen Ordner pro zu sichernde ${REMOTE_HOST} enthalten sondern hat nur Dateien und Ordner die zum aktuellen Vorgang gehören. --- start.sh | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/start.sh b/start.sh index 122630b..413e94d 100755 --- a/start.sh +++ b/start.sh @@ -16,6 +16,7 @@ read_config(){ exit 1 fi + source "$CONFIG_DIR/$1" } gen_config(){ @@ -32,6 +33,22 @@ gen_config(){ [ ! -f "$CONFIG_DIR/example_conf.sh" ] && cp /example_conf.sh "$CONFIG_DIR/example_conf.sh" } +move_to_ROOT(){ + read_config $1 + # prüfen ob Ordner ROOT, VOL, CONT existieren + # wenn nicht ROOT anlegen und alle bisher vorhandene Ordner dorthin verschieben + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/ROOT" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/ROOT" + + + ### find /home/vitali/find_tests/ -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name ROOT -prune -or -name "*" -exec mv -t /home/vitali/find_tests/ROOT/ {} + + + find "$BACKUP_DIR/${REMOTE_HOST}" -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name "ROOT" -prune -or -name "*" -exec mv -t "$BACKUP_DIR/${REMOTE_HOST}/ROOT/" {} + + + # anschliessend VOL und CONT anlegen + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/VOL" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/VOL" + [ ! -d "$BACKUP_DIR/${REMOTE_HOST}/CONT" ] && mkdir -p "$BACKUP_DIR/${REMOTE_HOST}/CONT" +} + backup(){ read_config "$1" @@ -39,7 +56,7 @@ backup(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" # SCHRITT 1: # sichern der MySQL-Datenbanken auf dem remote host @@ -52,7 +69,7 @@ backup(){ for db in "${MYSQL_DB[@]}" do echo dumb database: "$db" - if [ "$MYSQL_CONTAINER" != '' ]; + if [ "$MYSQL_CONTAINER" != '' ] then echo from container: "$MYSQL_CONTAINER" ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" @@ -62,7 +79,12 @@ backup(){ done # Ordner mit SQL-Dateien in die Sicherung aufnehmen - FOLDERS+=("$MYSQL_DUMP_DIR") + if [ "$MYSQL_CONTAINER" != '' ] + then + FOLDERS=("$MYSQL_DUMP_DIR") + else + FOLDERS+=("$MYSQL_DUMP_DIR") + fi fi # SCHRITT 2: @@ -70,7 +92,7 @@ backup(){ for dir in "${FOLDERS[@]}" do # prüfen ob das backup-ordner existiert ... - if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ]; + if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ] then # ... und gegebenfals anlegen mkdir -p "$BACKUP_DIR/${REMOTE_HOST}${dir}" @@ -108,7 +130,7 @@ restore(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" # SCHRITT 1: # Alle Dateien und Ordner aus dem letzten Backup wiederherstellen @@ -143,6 +165,11 @@ restore(){ echo } +test_function(){ + read_config "$1" + echo $REMOTE_HOST +} + list(){ read_config "$1" @@ -151,7 +178,7 @@ list(){ echo ================================================== # neue Konfiguration lesen - source "$CONFIG_DIR/$1" + #source "$CONFIG_DIR/$1" if [ ${#MYSQL_DB[@]} -gt 0 ] then @@ -189,6 +216,10 @@ elif [ "$1" == "--bash" ]; then shift /bin/bash "$@" +elif [ "$1" == "--testit" ]; then + shift + test_function "$@" + else echo "usage ?" fi -- 2.52.0 From 5a0b07a202958ede4f401fcd449b222aa6339f62 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 11:13:51 +0100 Subject: [PATCH 04/18] Erkenntnis: Bash-Funktionen durfen nicht leer sein. --- start.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/start.sh b/start.sh index 9879e78..c5e4e52 100755 --- a/start.sh +++ b/start.sh @@ -63,14 +63,17 @@ b_files(){ b_mysql(){ ## Export einer MySQL-DB als SQL-Script in ein später (!) zu sicherndes Ordner + sleep 1 } b_vol(){ ## Docker volume mit rdiff-backup sichern + sleep 1 } b_mysql_cont(){ ## Export einer MySQL-DB als SQL-Script aus einem docker container in ein später (!) zu sicherndes Ordner + sleep 1 } backup(){ @@ -147,18 +150,22 @@ backup(){ r_files(){ ## einzelne Dateien und Ordner mit rdiff-backup wiedercherstellen + sleep 1 } b_mysql(){ ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiedercherstellen Ordner + sleep 1 } b_vol(){ ## Docker volume mit rdiff-backup wiedercherstellen + sleep 1 } b_mysql_cont(){ ## Export einer MySQL-DB als SQL-Script aus einem docker container in ein später (!) zu sicherndes Ordner + sleep 1 } restore(){ -- 2.52.0 From 6db1f743f70abdf6cfb2bbc89a419e777fcf103e Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 12:06:10 +0100 Subject: [PATCH 05/18] r_files gemacht --- start.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/start.sh b/start.sh index c5e4e52..8c39c1d 100755 --- a/start.sh +++ b/start.sh @@ -150,7 +150,13 @@ backup(){ r_files(){ ## einzelne Dateien und Ordner mit rdiff-backup wiedercherstellen - sleep 1 + echo restore file[s]: "$1" "$3" + + if [ "$3" != "" ]; then + rdiff-backup --force -r "$3" "$1" "$2" + else + rdiff-backup --force -r now "$1" "$2" + fi } b_mysql(){ @@ -187,13 +193,7 @@ restore(){ for dir in "${FOLDERS[@]}" do # die eigentliche Wiederherstellung ... - echo restore file[s]: "$dir" "$2" - - if [ "$2" != "" ]; then - rdiff-backup --force -r "$2" "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" - else - rdiff-backup --force -r now "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" - fi + r_files "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" done # SCHRITT 2: # Datenbanken wiederherstellen -- 2.52.0 From 1589ffcdab9015a3d890949a531987cd029271e5 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 12:06:10 +0100 Subject: [PATCH 06/18] b_mysql gemacht... --- start.sh | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/start.sh b/start.sh index c5e4e52..6d6eb19 100755 --- a/start.sh +++ b/start.sh @@ -63,7 +63,14 @@ b_files(){ b_mysql(){ ## Export einer MySQL-DB als SQL-Script in ein später (!) zu sicherndes Ordner - sleep 1 + echo dumb database: "$1" + if [ "$MYSQL_CONTAINER" != '' ] + then + echo from container: "$MYSQL_CONTAINER" + ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$1\" > \"$MYSQL_DUMP_DIR/$1.sql\"" + else + ssh ${REMOTE_USER}@${REMOTE_HOST} "mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$1\" > \"$MYSQL_DUMP_DIR/$1.sql\"" + fi } b_vol(){ @@ -71,11 +78,6 @@ b_vol(){ sleep 1 } -b_mysql_cont(){ - ## Export einer MySQL-DB als SQL-Script aus einem docker container in ein später (!) zu sicherndes Ordner - sleep 1 -} - backup(){ read_config "$1" @@ -95,14 +97,7 @@ backup(){ for db in "${MYSQL_DB[@]}" do - echo dumb database: "$db" - if [ "$MYSQL_CONTAINER" != '' ] - then - echo from container: "$MYSQL_CONTAINER" - ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" - else - ssh ${REMOTE_USER}@${REMOTE_HOST} "mysqldump -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" --events --routines --triggers --single-transaction --add-drop-database -B \"$db\" > \"$MYSQL_DUMP_DIR/$db.sql\"" - fi + b_mysql "$db" done # Ordner mit SQL-Dateien in die Sicherung aufnehmen @@ -150,7 +145,13 @@ backup(){ r_files(){ ## einzelne Dateien und Ordner mit rdiff-backup wiedercherstellen - sleep 1 + echo restore file[s]: "$1" "$3" + + if [ "$3" != "" ]; then + rdiff-backup --force -r "$3" "$1" "$2" + else + rdiff-backup --force -r now "$1" "$2" + fi } b_mysql(){ @@ -171,7 +172,7 @@ b_mysql_cont(){ restore(){ read_config "$1" - echo Start restore $1 + echo Start restore $1 -> $2 echo ================================================== # neue Konfiguration lesen @@ -187,13 +188,7 @@ restore(){ for dir in "${FOLDERS[@]}" do # die eigentliche Wiederherstellung ... - echo restore file[s]: "$dir" "$2" - - if [ "$2" != "" ]; then - rdiff-backup --force -r "$2" "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" - else - rdiff-backup --force -r now "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" - fi + r_files "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" done # SCHRITT 2: # Datenbanken wiederherstellen -- 2.52.0 From cb57586e350feececbe14825ae01209fdad5ab53 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 15:33:39 +0100 Subject: [PATCH 07/18] =?UTF-8?q?Variablen=20f=C3=BCr=20die=20Ordner=20ROO?= =?UTF-8?q?T,=20VOL=20und=20CONT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- start.sh | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/start.sh b/start.sh index e81c49f..8d43350 100755 --- a/start.sh +++ b/start.sh @@ -4,6 +4,15 @@ # source job.conf BACKUP_DIR=/backups + +FILES=ROOT +VOLS=VOL +CONTAINERS=CON + +BACKUP_DIR_FILES=$BACKUP_DIR/$FILES +BACKUP_DIR_VOLS=$BACKUP_DIR/$VOLS +BACKUP_DIR_CONTAINERS=$BACKUP_DIR/$CONTAINERS + CONFIG_DIR=/config SSH_CF_DIR=/root/.ssh @@ -37,16 +46,16 @@ move_to_ROOT(){ read_config $1 # prüfen ob Ordner ROOT, VOL, CONT existieren # wenn nicht ROOT anlegen und alle bisher vorhandene Ordner dorthin verschieben - [ ! -d "$BACKUP_DIR/ROOT" ] && mkdir -p "$BACKUP_DIR/ROOT" || return + [ ! -d "$BACKUP_DIR_FILES" ] && mkdir -p "$BACKUP_DIR_FILES" || return ### find /home/vitali/find_tests/ -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name ROOT -prune -or -name "*" -exec mv -t /home/vitali/find_tests/ROOT/ {} + - find "$BACKUP_DIR" -maxdepth 1 -mindepth 1 -type d -name "CONT" -prune -or -name "VOL" -prune -or -name "ROOT" -prune -or -name "*" -exec mv -t "$BACKUP_DIR/ROOT/" {} + + find "$BACKUP_DIR" -maxdepth 1 -mindepth 1 -type d -name "$CONTAINERS" -prune -or -name "$VOLS" -prune -or -name "$FILES" -prune -or -name "*" -exec mv -t "$BACKUP_DIR_FILES/" {} + # anschliessend VOL und CONT anlegen - [ ! -d "$BACKUP_DIR/VOL" ] && mkdir -p "$BACKUP_DIR/VOL" - [ ! -d "$BACKUP_DIR/CONT" ] && mkdir -p "$BACKUP_DIR/CONT" + [ ! -d "$BACKUP_DIR_VOLS" ] && mkdir -p "$BACKUP_DIR_VOLS" + [ ! -d "$BACKUP_DIR_CONTAINERS" ] && mkdir -p "$BACKUP_DIR_CONTAINERS" } ## Einzelne Backup-Jobs @@ -97,16 +106,20 @@ backup(){ for db in "${MYSQL_DB[@]}" do + # lokaler Export der DB als SQL b_mysql "$db" done - # Ordner mit SQL-Dateien in die Sicherung aufnehmen + # Ordner mit SQL-Dateien sofort (!) sichern if [ "$MYSQL_CONTAINER" != '' ] then - FOLDERS=("$MYSQL_DUMP_DIR") + b_files "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}" "$BACKUP_DIR_CONTAINERS/${MYSQL_CONTAINER}" else - FOLDERS+=("$MYSQL_DUMP_DIR") + b_files "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}" "$BACKUP_DIR/${REMOTE_HOST}${MYSQL_DUMP_DIR}" fi + + # die SQL-Dateien vom remote host wieder löschen + [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/\"*.sql" fi # SCHRITT 2: @@ -131,12 +144,6 @@ backup(){ echo 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 echo Done backup $1 echo } -- 2.52.0 From 3d729584d5671cd9f9025501e267c5d69a6cd843 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 16:20:26 +0100 Subject: [PATCH 08/18] Backup-Ordner wird nun in der b_files() angelegt --- start.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/start.sh b/start.sh index 8d43350..8d3d4a1 100755 --- a/start.sh +++ b/start.sh @@ -61,6 +61,12 @@ move_to_ROOT(){ ## Einzelne Backup-Jobs b_files(){ ## einzelne Dateien und Ordner mit rdiff-backup sichern + # prüfen ob das backup-ordner existiert ... + if [ ! -d "$2" ] + then + # ... und gegebenfals anlegen + mkdir -p "$2" + fi # die eigentliche Sicherung ... echo backup file[s]: "$1" @@ -126,13 +132,6 @@ backup(){ # die Sicherung der Ordner (inklusive der SQL-Dump) for dir in "${FOLDERS[@]}" do - # prüfen ob das backup-ordner existiert ... - if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ] - then - # ... und gegebenfals anlegen - mkdir -p "$BACKUP_DIR/${REMOTE_HOST}${dir}" - fi - # die eigentliche Sicherung ... b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$BACKUP_DIR/${REMOTE_HOST}${dir}" -- 2.52.0 From bbcef7a45356aa0419d9cf671ecb5e5a0567f316 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 25 Nov 2018 16:59:05 +0100 Subject: [PATCH 09/18] b_mysql in export_sql umbenannt --- start.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/start.sh b/start.sh index 8d3d4a1..c977e84 100755 --- a/start.sh +++ b/start.sh @@ -76,9 +76,10 @@ b_files(){ rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "$2" } -b_mysql(){ +export_sql(){ ## Export einer MySQL-DB als SQL-Script in ein später (!) zu sicherndes Ordner echo dumb database: "$1" + if [ "$MYSQL_CONTAINER" != '' ] then echo from container: "$MYSQL_CONTAINER" @@ -113,7 +114,7 @@ backup(){ for db in "${MYSQL_DB[@]}" do # lokaler Export der DB als SQL - b_mysql "$db" + export_sql "$db" done # Ordner mit SQL-Dateien sofort (!) sichern @@ -150,7 +151,7 @@ backup(){ ## Einzelne Restore-Jobs r_files(){ - ## einzelne Dateien und Ordner mit rdiff-backup wiedercherstellen + ## einzelne Dateien und Ordner mit rdiff-backup wiederherstellen echo restore file[s]: "$1" "$3" if [ "$3" != "" ]; then @@ -161,17 +162,17 @@ r_files(){ } r_mysql(){ - ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiedercherstellen Ordner + ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiederherstellen Ordner sleep 1 } r_vol(){ - ## Docker volume mit rdiff-backup wiedercherstellen + ## Docker volume mit rdiff-backup wiederherstellen sleep 1 } r_mysql_cont(){ - ## Export einer MySQL-DB als SQL-Script aus einem docker container in ein später (!) zu sicherndes Ordner + ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiederherstellen Ordner in ein Container sleep 1 } -- 2.52.0 From f3cf2e11f292408f41b1c6e359147e2f3a19ed22 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 26 Nov 2018 14:24:48 +0100 Subject: [PATCH 10/18] Neue Verzeichnisstuktur "aktiviert" --- start.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/start.sh b/start.sh index c977e84..b3f3be9 100755 --- a/start.sh +++ b/start.sh @@ -100,6 +100,9 @@ backup(){ echo Start backup $1 echo ================================================== + # Backupverzeichnisse einrichten + move_to_ROOT + # neue Konfiguration lesen #source "$CONFIG_DIR/$1" @@ -122,7 +125,7 @@ backup(){ then b_files "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}" "$BACKUP_DIR_CONTAINERS/${MYSQL_CONTAINER}" else - b_files "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}" "$BACKUP_DIR/${REMOTE_HOST}${MYSQL_DUMP_DIR}" + b_files "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}" "${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}" fi # die SQL-Dateien vom remote host wieder löschen @@ -134,11 +137,11 @@ backup(){ for dir in "${FOLDERS[@]}" do # die eigentliche Sicherung ... - b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$BACKUP_DIR/${REMOTE_HOST}${dir}" + b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "${BACKUP_DIR_FILES}/${dir}" # Liste der Sicherungen anzeigen if [ "$2" == "--list" ]; then - rdiff-backup -l "$BACKUP_DIR/${REMOTE_HOST}${dir}" + rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" fi echo @@ -195,7 +198,7 @@ restore(){ for dir in "${FOLDERS[@]}" do # die eigentliche Wiederherstellung ... - r_files "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" + r_files "${BACKUP_DIR_FILES}/${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" done # SCHRITT 2: # Datenbanken wiederherstellen @@ -236,7 +239,7 @@ list(){ do echo show backups for file[s]: "$dir" - rdiff-backup -l "$BACKUP_DIR/${REMOTE_HOST}${dir}" + rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" echo done -- 2.52.0 From d2b4bcf48a146885673f1c0e4b78a97e479cf0d2 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 26 Nov 2018 14:41:29 +0100 Subject: [PATCH 11/18] move_to_ROOT konnte die configs nicht lesen --- start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start.sh b/start.sh index b3f3be9..c92e7ea 100755 --- a/start.sh +++ b/start.sh @@ -101,7 +101,7 @@ backup(){ echo ================================================== # Backupverzeichnisse einrichten - move_to_ROOT + move_to_ROOT $1 # neue Konfiguration lesen #source "$CONFIG_DIR/$1" -- 2.52.0 From 6ce1a0ae8692fa5aa481d4770a8d2b6733ed5c44 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 26 Nov 2018 14:41:29 +0100 Subject: [PATCH 12/18] move_to_ROOT ohne config... --- start.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/start.sh b/start.sh index b3f3be9..ecb291e 100755 --- a/start.sh +++ b/start.sh @@ -43,7 +43,6 @@ gen_config(){ } move_to_ROOT(){ - read_config $1 # prüfen ob Ordner ROOT, VOL, CONT existieren # wenn nicht ROOT anlegen und alle bisher vorhandene Ordner dorthin verschieben [ ! -d "$BACKUP_DIR_FILES" ] && mkdir -p "$BACKUP_DIR_FILES" || return -- 2.52.0 From 1181ace61c8d476a71ada39c2dd090a34a67da38 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 26 Nov 2018 15:01:00 +0100 Subject: [PATCH 13/18] auf ein Neues --- start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start.sh b/start.sh index 6034a54..ecb291e 100755 --- a/start.sh +++ b/start.sh @@ -100,7 +100,7 @@ backup(){ echo ================================================== # Backupverzeichnisse einrichten - move_to_ROOT $1 + move_to_ROOT # neue Konfiguration lesen #source "$CONFIG_DIR/$1" -- 2.52.0 From 0e298937c8aa2aa30931a674bc8d5fad06bc091b Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 26 Nov 2018 17:22:36 +0100 Subject: [PATCH 14/18] import_sql gemacht... --- start.sh | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/start.sh b/start.sh index ecb291e..f3929c7 100755 --- a/start.sh +++ b/start.sh @@ -102,9 +102,6 @@ backup(){ # Backupverzeichnisse einrichten move_to_ROOT - # neue Konfiguration lesen - #source "$CONFIG_DIR/$1" - # 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! @@ -163,9 +160,26 @@ r_files(){ fi } -r_mysql(){ +import_sql(){ ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiederherstellen Ordner - sleep 1 + + if [ "$MYSQL_CONTAINER" != '' ] + then + FROM_FILE=${BACKUP_DIR_CONTAINERS}/${MYSQL_CONTAINER}/${1}.sql + else + FROM_FILE=${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}/${1}.sql + fi + + r_files "$FROM_FILE" "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}/${1}.sql" "$2" + + if [ "$MYSQL_CONTAINER" != '' ] + then + ssh ${REMOTE_USER}@${REMOTE_HOST} "docker exec -i \"$MYSQL_CONTAINER\" mysql -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" < \"$MYSQL_DUMP_DIR/${1}.sql\"" + else + ssh ${REMOTE_USER}@${REMOTE_HOST} "mysql -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" < \"$MYSQL_DUMP_DIR/${1}.sql\"" + fi + + [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/${1}.sql\"" } r_vol(){ @@ -181,17 +195,23 @@ r_mysql_cont(){ restore(){ read_config "$1" - echo Start restore $1 -> $2 + echo Start restore $1 to $2 echo ================================================== - # neue Konfiguration lesen - #source "$CONFIG_DIR/$1" # SCHRITT 1: # Alle Dateien und Ordner aus dem letzten Backup wiederherstellen if [ ${#MYSQL_DB[@]} -gt 0 ] then - FOLDERS+=("$MYSQL_DUMP_DIR") + #FOLDERS+=("$MYSQL_DUMP_DIR") + + ## jede SQL-Datei einzeln hochladen + + for db in "${MYSQL_DB[@]}" + do + echo restore database: "$db" + import_sql "$db" "$2" + done fi for dir in "${FOLDERS[@]}" @@ -199,16 +219,6 @@ restore(){ # die eigentliche Wiederherstellung ... r_files "${BACKUP_DIR_FILES}/${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" done - # SCHRITT 2: - # Datenbanken wiederherstellen - - for db in "${MYSQL_DB[@]}" - do - echo restore database: "$db" - ssh ${REMOTE_USER}@${REMOTE_HOST} "mysql -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" < \"$MYSQL_DUMP_DIR/$db.sql\"" - [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/$db.sql\"" - done - echo Done restore $1 echo -- 2.52.0 From 68db36b8ec1ed4ceba2a8dd77859724257701c4f Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 2 Dec 2018 14:26:53 +0100 Subject: [PATCH 15/18] nur optischce Anpassungen --- start.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/start.sh b/start.sh index f3929c7..1c688ba 100755 --- a/start.sh +++ b/start.sh @@ -151,8 +151,6 @@ backup(){ r_files(){ ## einzelne Dateien und Ordner mit rdiff-backup wiederherstellen - echo restore file[s]: "$1" "$3" - if [ "$3" != "" ]; then rdiff-backup --force -r "$3" "$1" "$2" else @@ -209,7 +207,7 @@ restore(){ for db in "${MYSQL_DB[@]}" do - echo restore database: "$db" + echo restore database: "$db" "$2" import_sql "$db" "$2" done fi @@ -217,6 +215,8 @@ restore(){ for dir in "${FOLDERS[@]}" do # die eigentliche Wiederherstellung ... + echo restore file[s]: "${dir}" "$2" + r_files "${BACKUP_DIR_FILES}/${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" done -- 2.52.0 From f2b4b2ad7b34e905d20ae84aaf73e7565a35d708 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 9 Dec 2018 13:14:07 +0100 Subject: [PATCH 16/18] ... eingeklammert ... --- start.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start.sh b/start.sh index 1c688ba..88b3c7e 100755 --- a/start.sh +++ b/start.sh @@ -163,9 +163,9 @@ import_sql(){ if [ "$MYSQL_CONTAINER" != '' ] then - FROM_FILE=${BACKUP_DIR_CONTAINERS}/${MYSQL_CONTAINER}/${1}.sql + FROM_FILE="${BACKUP_DIR_CONTAINERS}/${MYSQL_CONTAINER}/${1}.sql" else - FROM_FILE=${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}/${1}.sql + FROM_FILE="${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}/${1}.sql" fi r_files "$FROM_FILE" "${REMOTE_USER}@${REMOTE_HOST}::${MYSQL_DUMP_DIR}/${1}.sql" "$2" -- 2.52.0 From 117af2e50820f29a8a3bb4f6bcc7cbfb75684042 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 9 Dec 2018 16:24:20 +0100 Subject: [PATCH 17/18] Sicherung der Volumes implementiert. --- example_conf.sh | 6 ++-- reset-conf.sh | 1 + start.sh | 89 ++++++++++++++++++++++++++++++++++--------------- 3 files changed, 68 insertions(+), 28 deletions(-) diff --git a/example_conf.sh b/example_conf.sh index 61584c2..93e9167 100644 --- a/example_conf.sh +++ b/example_conf.sh @@ -7,6 +7,9 @@ REMOTE_USER='root' # Wechle Ordner sollen gesichert werden als BASH-Array z.B. ("/home" "/var/www") FOLDERS=() +# Wechle Docker volumes sollen gesichert werden als BASH-Array z.B. ("vol-1" "redis-vol-1") +DOCKER_VOLUME=() + # Wie lange sollen Backups gesichert bleiben z.B. 8W # ================================================== # Remove the incremental backup information in the destination @@ -39,6 +42,5 @@ MYSQL_PASS='secret' # Dieser Ordner wird zusammen mit $FOLDERS gesichert MYSQL_DUMP_DIR='/var/backups/sqldump' - # Die Optionen die beim Backup eingesetzt werden -RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems" \ No newline at end of file +RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems" diff --git a/reset-conf.sh b/reset-conf.sh index 7ccecce..60fd795 100644 --- a/reset-conf.sh +++ b/reset-conf.sh @@ -1,6 +1,7 @@ REMOTE_HOST='' REMOTE_USER='root' FOLDERS=() +DOCKER_VOLUME=() DELETE_OLD_FILES='8W' MYSQL_DB=() diff --git a/start.sh b/start.sh index 88b3c7e..c825a36 100755 --- a/start.sh +++ b/start.sh @@ -68,7 +68,6 @@ b_files(){ fi # die eigentliche Sicherung ... - echo backup file[s]: "$1" rdiff-backup $RDIFF_BACKUP_OPTS "$1" "$2" # alle Sicherungen die älter als $DELETE_OLD_FILES löschen @@ -88,11 +87,6 @@ export_sql(){ fi } -b_vol(){ - ## Docker volume mit rdiff-backup sichern - sleep 1 -} - backup(){ read_config "$1" @@ -133,12 +127,31 @@ backup(){ for dir in "${FOLDERS[@]}" do # die eigentliche Sicherung ... - b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "${BACKUP_DIR_FILES}/${dir}" + echo backup file[s]: "$dir" + [ "$dir" != "" ] && b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "${BACKUP_DIR_FILES}/${dir}" # Liste der Sicherungen anzeigen if [ "$2" == "--list" ]; then rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" fi + echo + done + + # SCHRIT 3: + # die Sicherung der Docker volumes + for vol in "${DOCKER_VOLUME[@]}" + do + echo backup Docker volume: "$vol" + # herausfinden wo die volume gespeicher ist + dir=$(ssh ${REMOTE_USER}@${REMOTE_HOST} docker volume inspect -f "{{.Mountpoint}}" "$vol") + + # und die eigentliche Sicherung ... + [ "$dir" != "" ] && b_files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "${BACKUP_DIR_VOLS}/${vol}" + + # Liste der Sicherungen anzeigen + if [ "$2" == "--list" ]; then + rdiff-backup -l "${BACKUP_DIR_VOLS}/${vol}" + fi echo done @@ -180,20 +193,10 @@ import_sql(){ [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/${1}.sql\"" } -r_vol(){ - ## Docker volume mit rdiff-backup wiederherstellen - sleep 1 -} - -r_mysql_cont(){ - ## Import einer MySQL-DB von einem SQL-Script aus einem vorher (!) wiederherstellen Ordner in ein Container - sleep 1 -} - restore(){ read_config "$1" - echo Start restore $1 to $2 + echo Start restore $1 from $2 echo ================================================== # SCHRITT 1: @@ -207,7 +210,7 @@ restore(){ for db in "${MYSQL_DB[@]}" do - echo restore database: "$db" "$2" + echo restore database: "$db" from "$2" import_sql "$db" "$2" done fi @@ -215,9 +218,29 @@ restore(){ for dir in "${FOLDERS[@]}" do # die eigentliche Wiederherstellung ... - echo restore file[s]: "${dir}" "$2" + echo restore file[s]: "${dir}" from "$2" r_files "${BACKUP_DIR_FILES}/${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" + echo + done + + for vol in "${DOCKER_VOLUME[@]}" + do + # die eigentliche Wiederherstellung ... + echo restore Docker volume: "${vol}" from "$2" + + # herausfinden wo das volume gespeicher ist + if [ dir=$(ssh ${REMOTE_USER}@${REMOTE_HOST} docker volume inspect -f "{{.Mountpoint}}" "$vol") ] + then + echo Volume don\'t exist. + echo Create one: docker volume create "${vol}" + + ssh ${REMOTE_USER}@${REMOTE_HOST} docker volume create "${vol}" + dir=$(ssh ${REMOTE_USER}@${REMOTE_HOST} docker volume inspect -f "{{.Mountpoint}}" "$vol") + fi + + [ "$dir" != "" ] && r_files "${BACKUP_DIR_VOLS}/${vol}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$2" + echo done echo Done restore $1 @@ -236,22 +259,36 @@ list(){ echo Show backups of $1 echo ================================================== - # neue Konfiguration lesen - #source "$CONFIG_DIR/$1" - - if [ ${#MYSQL_DB[@]} -gt 0 ] + if [ ${#MYSQL_DB[@]} -gt 0 ] then - FOLDERS+=("$MYSQL_DUMP_DIR") + echo show backups 'for' MySQL databases: + + if [ "$MYSQL_CONTAINER" != '' ] + then + rdiff-backup -l "$BACKUP_DIR_CONTAINERS/${MYSQL_CONTAINER}" + else + rdiff-backup -l "${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}" + fi + + echo fi for dir in "${FOLDERS[@]}" do - echo show backups for file[s]: "$dir" + echo show backups 'for' file[s]: "$dir" rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" echo done + for vol in "${DOCKER_VOLUME[@]}" + do + echo show backups 'for' volume: "${vol}" + + rdiff-backup -l "${BACKUP_DIR_VOLS}/${vol}" + echo + done + echo Done show $1 echo } -- 2.52.0 From 51a3371d991f38be530df0ca6a693c646047b490 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sun, 16 Dec 2018 11:52:27 +0100 Subject: [PATCH 18/18] 2 neue Funktionen * show_config * check_destination_dir weitere kleine optische Anpassungen --- start.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/start.sh b/start.sh index c825a36..d84c1ff 100755 --- a/start.sh +++ b/start.sh @@ -71,6 +71,7 @@ b_files(){ rdiff-backup $RDIFF_BACKUP_OPTS "$1" "$2" # alle Sicherungen die älter als $DELETE_OLD_FILES löschen + echo remove backup increments older than: $DELETE_OLD_FILES rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "$2" } @@ -190,6 +191,7 @@ import_sql(){ ssh ${REMOTE_USER}@${REMOTE_HOST} "mysql -u \"$MYSQL_USER\" \"-p$MYSQL_PASS\" < \"$MYSQL_DUMP_DIR/${1}.sql\"" fi + # TODO: was davon muss noch sein? [ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/${1}.sql\"" } @@ -247,9 +249,18 @@ restore(){ echo } -test_function(){ +show_config(){ read_config "$1" - echo $REMOTE_HOST + echo REMOTE_HOST="$REMOTE_HOST" + echo REMOTE_USER="$REMOTE_USER" + echo FOLDERS="${FOLDERS[@]}" + echo DOCKER_VOLUME="${DOCKER_VOLUME[@]}" + echo DELETE_OLD_FILES="$DELETE_OLD_FILES" + echo MYSQL_DB="${MYSQL_DB[@]}" + echo MYSQL_USER="$MYSQL_USER" + echo MYSQL_PASS='################' + echo MYSQL_DUMP_DIR="$MYSQL_DUMP_DIR" + echo RDIFF_BACKUP_OPTS="$RDIFF_BACKUP_OPTS" } @@ -293,6 +304,46 @@ list(){ echo } +check_destination_dir(){ + read_config "$1" + + echo Check backups of $1 + echo ================================================== + + if [ ${#MYSQL_DB[@]} -gt 0 ] + then + echo check backups 'for' MySQL databases: + + if [ "$MYSQL_CONTAINER" != '' ] + then + rdiff-backup --check-destination-dir "$BACKUP_DIR_CONTAINERS/${MYSQL_CONTAINER}" + else + rdiff-backup --check-destination-dir "${BACKUP_DIR_FILES}/${MYSQL_DUMP_DIR}" + fi + + echo + fi + + for dir in "${FOLDERS[@]}" + do + echo check backups 'for' file[s]: "$dir" + + rdiff-backup --check-destination-dir "${BACKUP_DIR_FILES}/${dir}" + echo + done + + for vol in "${DOCKER_VOLUME[@]}" + do + echo check backups 'for' volume: "${vol}" + + rdiff-backup --check-destination-dir "${BACKUP_DIR_VOLS}/${vol}" + echo + done + + echo Done check $1 + echo +} + if [ "$1" == "--gen-config" ]; then gen_config @@ -312,11 +363,14 @@ elif [ "$1" == "--bash" ]; then shift /bin/bash "$@" -elif [ "$1" == "--testit" ]; then +elif [ "$1" == "--check-destination-dir" ]; then shift - test_function "$@" + check_destination_dir "$@" + +elif [ "$1" == "--show-config" ]; then + shift + show_config "$@" else echo "usage ?" -fi - +fi \ No newline at end of file -- 2.52.0