Sicherung der Volumes implementiert.

This commit is contained in:
2018-12-09 16:24:20 +01:00
parent f2b4b2ad7b
commit 117af2e508
3 changed files with 68 additions and 28 deletions
+3 -1
View File
@@ -7,6 +7,9 @@ REMOTE_USER='root'
# Wechle Ordner sollen gesichert werden als BASH-Array z.B. ("/home" "/var/www") # Wechle Ordner sollen gesichert werden als BASH-Array z.B. ("/home" "/var/www")
FOLDERS=() 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 # Wie lange sollen Backups gesichert bleiben z.B. 8W
# ================================================== # ==================================================
# Remove the incremental backup information in the destination # Remove the incremental backup information in the destination
@@ -39,6 +42,5 @@ MYSQL_PASS='secret'
# Dieser Ordner wird zusammen mit $FOLDERS gesichert # Dieser Ordner wird zusammen mit $FOLDERS gesichert
MYSQL_DUMP_DIR='/var/backups/sqldump' MYSQL_DUMP_DIR='/var/backups/sqldump'
# Die Optionen die beim Backup eingesetzt werden # Die Optionen die beim Backup eingesetzt werden
RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems" RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems"
+1
View File
@@ -1,6 +1,7 @@
REMOTE_HOST='' REMOTE_HOST=''
REMOTE_USER='root' REMOTE_USER='root'
FOLDERS=() FOLDERS=()
DOCKER_VOLUME=()
DELETE_OLD_FILES='8W' DELETE_OLD_FILES='8W'
MYSQL_DB=() MYSQL_DB=()
+63 -26
View File
@@ -68,7 +68,6 @@ b_files(){
fi fi
# die eigentliche Sicherung ... # die eigentliche Sicherung ...
echo backup file[s]: "$1"
rdiff-backup $RDIFF_BACKUP_OPTS "$1" "$2" rdiff-backup $RDIFF_BACKUP_OPTS "$1" "$2"
# alle Sicherungen die älter als $DELETE_OLD_FILES löschen # alle Sicherungen die älter als $DELETE_OLD_FILES löschen
@@ -88,11 +87,6 @@ export_sql(){
fi fi
} }
b_vol(){
## Docker volume mit rdiff-backup sichern
sleep 1
}
backup(){ backup(){
read_config "$1" read_config "$1"
@@ -133,12 +127,31 @@ backup(){
for dir in "${FOLDERS[@]}" for dir in "${FOLDERS[@]}"
do do
# die eigentliche Sicherung ... # 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 # Liste der Sicherungen anzeigen
if [ "$2" == "--list" ]; then if [ "$2" == "--list" ]; then
rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}"
fi 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 echo
done 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\"" [ "$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(){ restore(){
read_config "$1" read_config "$1"
echo Start restore $1 to $2 echo Start restore $1 from $2
echo ================================================== echo ==================================================
# SCHRITT 1: # SCHRITT 1:
@@ -207,7 +210,7 @@ restore(){
for db in "${MYSQL_DB[@]}" for db in "${MYSQL_DB[@]}"
do do
echo restore database: "$db" "$2" echo restore database: "$db" from "$2"
import_sql "$db" "$2" import_sql "$db" "$2"
done done
fi fi
@@ -215,9 +218,29 @@ restore(){
for dir in "${FOLDERS[@]}" for dir in "${FOLDERS[@]}"
do do
# die eigentliche Wiederherstellung ... # 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" 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 done
echo Done restore $1 echo Done restore $1
@@ -236,22 +259,36 @@ list(){
echo Show backups of $1 echo Show backups of $1
echo ================================================== echo ==================================================
# neue Konfiguration lesen if [ ${#MYSQL_DB[@]} -gt 0 ]
#source "$CONFIG_DIR/$1"
if [ ${#MYSQL_DB[@]} -gt 0 ]
then 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 fi
for dir in "${FOLDERS[@]}" for dir in "${FOLDERS[@]}"
do do
echo show backups for file[s]: "$dir" echo show backups 'for' file[s]: "$dir"
rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}" rdiff-backup -l "${BACKUP_DIR_FILES}/${dir}"
echo echo
done 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 Done show $1
echo echo
} }