Funktions Update
Neue Optionen --restore, --list, --bash
This commit is contained in:
@@ -34,3 +34,7 @@ MYSQL_PASS='secret'
|
|||||||
# Wo auf dem Remote Server soll SQL_Dump abgelegt werden.
|
# Wo auf dem Remote Server soll SQL_Dump abgelegt werden.
|
||||||
# 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
|
||||||
|
RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems"
|
||||||
+3
-1
@@ -6,4 +6,6 @@ DELETE_OLD_FILES='8W'
|
|||||||
MYSQL_DB=()
|
MYSQL_DB=()
|
||||||
MYSQL_USER='root'
|
MYSQL_USER='root'
|
||||||
MYSQL_PASS='secret'
|
MYSQL_PASS='secret'
|
||||||
MYSQL_DUMP_DIR='/var/backups/sqldump'
|
MYSQL_DUMP_DIR="/var/backups/sqldump"
|
||||||
|
|
||||||
|
RDIFF_BACKUP_OPTS="--exclude-sockets --exclude-device-files --exclude-fifos --exclude-other-filesystems"
|
||||||
@@ -7,6 +7,17 @@ BACKUP_DIR=/backups
|
|||||||
CONFIG_DIR=/config
|
CONFIG_DIR=/config
|
||||||
SSH_CF_DIR=/root/.ssh
|
SSH_CF_DIR=/root/.ssh
|
||||||
|
|
||||||
|
read_config(){
|
||||||
|
#Konfiguration resetten
|
||||||
|
source "/reset-conf.sh"
|
||||||
|
|
||||||
|
if [ ! -f "$CONFIG_DIR/$1" ]; then
|
||||||
|
echo config nicht vorhanden!z
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
gen_config(){
|
gen_config(){
|
||||||
[ ! -f "$SSH_CF_DIR/id_rsa" ] && ssh-keygen -t rsa -b 4096 -f "$SSH_CF_DIR/id_rsa" -q -C "rdiff-backup-dockerized @ ${SSH_KEY_MARKER}" && chmod go-rwx $SSH_CF_DIR/id_rsa
|
[ ! -f "$SSH_CF_DIR/id_rsa" ] && ssh-keygen -t rsa -b 4096 -f "$SSH_CF_DIR/id_rsa" -q -C "rdiff-backup-dockerized @ ${SSH_KEY_MARKER}" && chmod go-rwx $SSH_CF_DIR/id_rsa
|
||||||
|
|
||||||
@@ -22,8 +33,7 @@ gen_config(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
backup(){
|
backup(){
|
||||||
#Konfiguration resetten
|
read_config "$1"
|
||||||
source "/reset-conf.sh"
|
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
echo Start backup $1
|
echo Start backup $1
|
||||||
@@ -42,7 +52,8 @@ backup(){
|
|||||||
|
|
||||||
for db in "${MYSQL_DB[@]}"
|
for db in "${MYSQL_DB[@]}"
|
||||||
do
|
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\""
|
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\""
|
||||||
done
|
done
|
||||||
|
|
||||||
# Ordner mit SQL-Dateien in die Sicherung aufnehmen
|
# Ordner mit SQL-Dateien in die Sicherung aufnehmen
|
||||||
@@ -61,10 +72,18 @@ backup(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# die eigentliche Sicherung ...
|
# die eigentliche Sicherung ...
|
||||||
rdiff-backup --exclude-special-files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
echo backup file[s]: "$dir"
|
||||||
|
rdiff-backup $RDIFF_BACKUP_OPTS "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||||
|
|
||||||
# alle Sicherungen die älter als $DELETE_OLD_FILES löschen
|
# alle Sicherungen die älter als $DELETE_OLD_FILES löschen
|
||||||
rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||||
|
|
||||||
|
# Liste der Sicherungen anzeigen
|
||||||
|
if [ "$2" == "--list" ]; then
|
||||||
|
rdiff-backup -l "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
done
|
done
|
||||||
|
|
||||||
# SCHRITT 3:
|
# SCHRITT 3:
|
||||||
@@ -77,20 +96,96 @@ backup(){
|
|||||||
echo " "
|
echo " "
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# ACHTUNG NOCH NICHT FERTIG !!
|
|
||||||
restore(){
|
restore(){
|
||||||
|
read_config "$1"
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo Start restore $1
|
||||||
|
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")
|
||||||
|
fi
|
||||||
|
|
||||||
for dir in "${FOLDERS[@]}"
|
for dir in "${FOLDERS[@]}"
|
||||||
do
|
do
|
||||||
rdiff-backup -r now "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}"
|
# 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
|
||||||
done
|
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 " "
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
list(){
|
||||||
|
read_config "$1"
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo Show backups of $1
|
||||||
|
echo ==================================================
|
||||||
|
|
||||||
|
# neue Konfiguration lesen
|
||||||
|
source "$CONFIG_DIR/$1"
|
||||||
|
|
||||||
|
if [ ${#MYSQL_DB[@]} -gt 0 ]
|
||||||
|
then
|
||||||
|
FOLDERS+=("$MYSQL_DUMP_DIR")
|
||||||
|
fi
|
||||||
|
|
||||||
|
for dir in "${FOLDERS[@]}"
|
||||||
|
do
|
||||||
|
echo show backups for file[s]: "$dir"
|
||||||
|
|
||||||
|
rdiff-backup -l "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo Done show $1
|
||||||
|
echo " "
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$1" == "--gen-config" ]; then
|
if [ "$1" == "--gen-config" ]; then
|
||||||
gen_config
|
gen_config
|
||||||
|
|
||||||
elif [ "$1" == "--backup" ]; then
|
elif [ "$1" == "--backup" ]; then
|
||||||
backup "$2"
|
shift
|
||||||
|
backup "$@"
|
||||||
|
|
||||||
|
elif [ "$1" == "--restore" ]; then
|
||||||
|
shift
|
||||||
|
restore "$@"
|
||||||
|
|
||||||
|
elif [ "$1" == "--list" ]; then
|
||||||
|
shift
|
||||||
|
list "$@"
|
||||||
|
|
||||||
|
elif [ "$1" == "--bash" ]; then
|
||||||
|
shift
|
||||||
|
/bin/bash "$@"
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "nichts zu tun?"
|
echo "usage ?"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user