Die Struktur geändert um künftig mehrere Server in einem Ruth zu sichern
Change-Id: If82413b0b88b04028459ef329cd3151d38ed7966
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
||||
.directory
|
||||
.git
|
||||
*/.directory
|
||||
*/*/.directory
|
||||
.project
|
||||
vitaligraf.de.sh
|
||||
+12
-4
@@ -1,9 +1,17 @@
|
||||
FROM python:2
|
||||
|
||||
WORKDIR /root
|
||||
MAINTAINER Vitali Graf <info@vitaligraf.de>
|
||||
|
||||
RUN apt-get update && apt-get install rdiff-backup --no-install-recommends -y && apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
RUN apt-get update && apt-get install rdiff-backup python-pyxattr python-pylibacl --no-install-recommends -y && apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY ./backup.sh /root/backup.sh
|
||||
COPY *.sh /
|
||||
|
||||
VOLUME ["/root/job.conf", "/root/.ssh", "/var/backups"]
|
||||
VOLUME /backups /config /root/.ssh
|
||||
|
||||
WORKDIR /
|
||||
|
||||
ENV SSH_KEY_MARKER "hier X belibigen wert setzen"
|
||||
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
CMD ["--gen-config"]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Von welchem Server soll ein Backup gemacht werden, Domain oder IP-Adresse
|
||||
REMOTE_HOST='example.com'
|
||||
|
||||
# Mit welchem User soll backup gemacht werden. root ist empfohlen
|
||||
REMOTE_USER='root'
|
||||
|
||||
# Wechle Ordner sollen gesichert werden als BASH-Array z.B. ("/home" "/var/www")
|
||||
FOLDERS=()
|
||||
|
||||
# Wie lange sollen Backups gesichert bleiben z.B. 8W
|
||||
# ==================================================
|
||||
# Remove the incremental backup information in the destination
|
||||
# directory that has been around longer than the given time.
|
||||
# time_spec can be either an absolute time, like "2002-01-04", or
|
||||
# a time interval. The time interval is an integer followed by
|
||||
# the character s, m, h, D, W, M, or Y, indicating seconds, minutes,
|
||||
# hours, days, weeks, months, or years respectively, or a
|
||||
# number of these concatenated. For example, 32m means 32 minutes,
|
||||
# and 3W2D10h7s means 3 weeks, 2 days, 10 hours, and 7 seconds.
|
||||
# In this context, a month means 30 days, a year is 365
|
||||
# days, and a day is always 86400 seconds.
|
||||
DELETE_OLD_FILES='8W'
|
||||
|
||||
# Zu sichernde MySQL-Datenbanken als BASH-Array z.B. ("mail" "piwik" "mybb")
|
||||
# Leere Array () => es werden keine MySQL-Datenbanken gesichert
|
||||
MYSQL_DB=()
|
||||
|
||||
# MySQL User
|
||||
MYSQL_USER='root'
|
||||
|
||||
# MySQL Passwort
|
||||
MYSQL_PASS='secret'
|
||||
|
||||
# Wo auf dem Remote Server soll SQL_Dump abgelegt werden.
|
||||
# Dieser Ordner wird zusammen mit $FOLDERS gesichert
|
||||
MYSQL_DUMP_DIR='/var/backups/sqldump'
|
||||
@@ -0,0 +1,9 @@
|
||||
REMOTE_HOST=''
|
||||
REMOTE_USER='root'
|
||||
FOLDERS=()
|
||||
DELETE_OLD_FILES='8W'
|
||||
|
||||
MYSQL_DB=()
|
||||
MYSQL_USER='root'
|
||||
MYSQL_PASS='secret'
|
||||
MYSQL_DUMP_DIR='/var/backups/sqldump'
|
||||
+42
-8
@@ -2,12 +2,39 @@
|
||||
|
||||
# set -e
|
||||
|
||||
source job.conf
|
||||
# source job.conf
|
||||
BACKUP_DIR=/backups
|
||||
CONFIG_DIR=/config
|
||||
SSH_CF_DIR=/root/.ssh
|
||||
|
||||
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}"
|
||||
|
||||
if [ ! -f "$SSH_CF_DIR/config" ]; then
|
||||
echo 'Host *' > "$SSH_CF_DIR/config"
|
||||
echo ' StrictHostKeyChecking no' >> "$SSH_CF_DIR/config"
|
||||
# echo ' UserKnownHostsFile=/dev/null' >> "$SSH_CF_DIR/config"
|
||||
|
||||
chmod go-rwx $SSH_CF_DIR/config
|
||||
fi
|
||||
|
||||
[ ! -f "$CONFIG_DIR/example_conf.sh" ] && cp /example_conf.sh "$CONFIG_DIR/example_conf.sh"
|
||||
}
|
||||
|
||||
backup(){
|
||||
#Konfiguration resetten
|
||||
source "/reset-conf.sh"
|
||||
|
||||
echo Start backup $1
|
||||
echo ==================================================
|
||||
|
||||
# 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!
|
||||
|
||||
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\""
|
||||
@@ -26,17 +53,17 @@ backup(){
|
||||
for dir in "${FOLDERS[@]}"
|
||||
do
|
||||
# prüfen ob das backup-ordner existiert ...
|
||||
if [ ! -d "/var/backups/${REMOTE_HOST}${dir}" ];
|
||||
if [ ! -d "$BACKUP_DIR/${REMOTE_HOST}${dir}" ];
|
||||
then
|
||||
# ... und gegebenfals anlegen
|
||||
mkdir -p "/var/backups/${REMOTE_HOST}${dir}"
|
||||
mkdir -p "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||
fi
|
||||
|
||||
# die eigentliche Sicherung ...
|
||||
rdiff-backup --exclude-special-files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "/var/backups/${REMOTE_HOST}${dir}"
|
||||
rdiff-backup --exclude-special-files "${REMOTE_USER}@${REMOTE_HOST}::${dir}" "$BACKUP_DIR/${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}"
|
||||
rdiff-backup --remove-older-than $DELETE_OLD_FILES --force "$BACKUP_DIR/${REMOTE_HOST}${dir}"
|
||||
done
|
||||
|
||||
# SCHRITT 3:
|
||||
@@ -45,6 +72,8 @@ backup(){
|
||||
then
|
||||
[ "$MYSQL_DUMP_DIR" != "" ] && [ "$MYSQL_DUMP_DIR" != "/" ] && ssh ${REMOTE_USER}@${REMOTE_HOST} "rm -rf \"$MYSQL_DUMP_DIR/\"*.sql"
|
||||
fi
|
||||
echo " "
|
||||
echo " "
|
||||
}
|
||||
|
||||
|
||||
@@ -52,10 +81,15 @@ backup(){
|
||||
restore(){
|
||||
for dir in "${FOLDERS[@]}"
|
||||
do
|
||||
rdiff-backup -r now "/var/backups/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}"
|
||||
rdiff-backup -r now "$BACKUP_DIR/${REMOTE_HOST}${dir}" "${REMOTE_USER}@${REMOTE_HOST}::${dir}"
|
||||
done
|
||||
}
|
||||
|
||||
if [ "$1" == "--gen-config" ]; then
|
||||
gen_config
|
||||
elif [ "$1" == "--backup" ]; then
|
||||
backup "$2"
|
||||
else
|
||||
echo "nichts zu tun?"
|
||||
fi
|
||||
|
||||
# Tue das da
|
||||
backup
|
||||
Reference in New Issue
Block a user