„backup_ext.sh“ hinzufügen
This commit is contained in:
parent
11dc78fba2
commit
32985affc0
91
backup_ext.sh
Normal file
91
backup_ext.sh
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#Backupskript - Backup with rsync and ssh
|
||||||
|
#Version: 0.1. (2019-12-17)
|
||||||
|
#
|
||||||
|
### Konfigurationen
|
||||||
|
## Ordner müssen mit / enden.
|
||||||
|
#Verzeichnis des Skriptes finden
|
||||||
|
PFAD=$(dirname "$(readlink -e "$0")");
|
||||||
|
HOST=`hostname`;
|
||||||
|
|
||||||
|
#SSH (key file based login required)
|
||||||
|
SSH_TARGET="domain.local";
|
||||||
|
SSH_USER="sshuser";
|
||||||
|
SSH_DIR="/directory/";
|
||||||
|
|
||||||
|
#Ursprungsverzeichnis des Backup
|
||||||
|
SOURCE=(` cat "${PFAD}/backup_dirs.conf" `);
|
||||||
|
|
||||||
|
#Pfad zu Datei mit auszuschließenden Dateien/Ordnern
|
||||||
|
EXCLUDE=${PFAD}"/backup_excl.conf";
|
||||||
|
|
||||||
|
#Pfad zu Logdatei
|
||||||
|
LOG_FILE=${PFAD}"/backup_ext_"${HOST}".log";
|
||||||
|
|
||||||
|
#Pfad zu Lock-Datei
|
||||||
|
LOCK_FILE=${PFAD}"/backup_ext_"${HOST}".lock";
|
||||||
|
|
||||||
|
###Skript beginnt, unterhalb dieser Zeile nichts ändern
|
||||||
|
NOW_START=$(/bin/date +%Y%m%d-%H%M%S);
|
||||||
|
|
||||||
|
##Test Log/Lock-Datei
|
||||||
|
if [ -e ${LOCK_FILE} ]; then
|
||||||
|
NOW_MSG=$(/bin/date +%Y%m%d-%H%M%S);
|
||||||
|
`echo ${NOW_MSG}": Backup läuft bereits. Breche ab." >> ${LOG_FILE}`;
|
||||||
|
unset NOW_MSG;
|
||||||
|
exit;
|
||||||
|
else
|
||||||
|
touch ${LOCK_FILE};
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${LOG_FILE} ];then
|
||||||
|
touch ${LOG_FILE};
|
||||||
|
fi
|
||||||
|
|
||||||
|
##Funktionen
|
||||||
|
#Log und Notify-Nachricht
|
||||||
|
notify_log() {
|
||||||
|
NOW_MSG=$(/bin/date +%Y%m%d-%H%M%S);
|
||||||
|
if [ "${LOG_FINISH}" ]; then
|
||||||
|
`echo ${NOW_MSG}": "${NOTIFY_LOG_MSG} | mail -s "[VOLMAR]: Backup nach nc.hw12.org erfolgreich" tba@timaba.de`;
|
||||||
|
unset LOG_FINISH;
|
||||||
|
fi
|
||||||
|
`echo ${NOW_MSG}": "${NOTIFY_LOG_MSG} >> ${LOG_FILE}`;
|
||||||
|
unset NOTIFY_LOG_MESSAGE;
|
||||||
|
unset NOW_MSG;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Lock-Datei löschen und Skript beenden
|
||||||
|
lock_delete_end() {
|
||||||
|
rm ${LOCK_FILE};
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Prüfen ob bereits Backups existieren
|
||||||
|
SSH_LOGIN="${SSH_USER}@${SSH_TARGET}";
|
||||||
|
if [ "${SSH_DIR}" ]; then
|
||||||
|
LASTBACKUP=`ssh ${SSH_LOGIN} ls -d ${SSH_DIR}[[:digit:]]* | /usr/bin/sort -r | /usr/bin/head -1 `;
|
||||||
|
NOTIFY_LOG_MSG="Letztes Backup [${SSH_TARGET}]: "${LASTBACKUP};
|
||||||
|
notify_log;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Hardlinks definieren, wenn vorheriges Backup gefunden.
|
||||||
|
if [ "${LASTBACKUP}" ]; then
|
||||||
|
INC="--link-dest="${LASTBACKUP};
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Neuen Ordner anlegen
|
||||||
|
`ssh ${SSH_LOGIN} mkdir -p ${SSH_DIR}${NOW_START}`;
|
||||||
|
|
||||||
|
##rsync
|
||||||
|
EXCLUDIRS="--exclude-from="${EXCLUDE};
|
||||||
|
for SOURCE in "${SOURCE[@]}"
|
||||||
|
do
|
||||||
|
START_BACKUP="rsync ${EXCLUDIRS} ${INC} -avze ssh ${SOURCE[@]} ${SSH_LOGIN}:${SSH_DIR}${NOW_START} ";
|
||||||
|
`echo ${START_BACKUP}`;
|
||||||
|
done
|
||||||
|
|
||||||
|
NOTIFY_LOG_MSG="Backup beendet.";
|
||||||
|
LOG_FINISH="1";
|
||||||
|
notify_log;
|
||||||
|
lock_delete_end;
|
||||||
Loading…
Reference in New Issue
Block a user