Sicherung der Volumes implementiert.
This commit is contained in:
+4
-2
@@ -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"
|
||||
RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
REMOTE_HOST=''
|
||||
REMOTE_USER='root'
|
||||
FOLDERS=()
|
||||
DOCKER_VOLUME=()
|
||||
DELETE_OLD_FILES='8W'
|
||||
|
||||
MYSQL_DB=()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user