fix: backup management

This commit is contained in:
Yannik Schmidt
2023-01-14 06:04:32 +01:00
parent aadc9efb86
commit fc0ac7da03
2 changed files with 33 additions and 7 deletions

View File

@@ -38,6 +38,10 @@ def createBackupScriptStructure(backupList, baseDomain=""):
pathsToOptions = dict()
basePaths = []
fullPaths = []
# commands for all size changed paths #
sizeChangeNotifyCommands = []
for p in paths:
cur = p
@@ -69,6 +73,12 @@ def createBackupScriptStructure(backupList, baseDomain=""):
fullPaths.append(cur)
pathsToOptions.update({ "{}\t{}".format(hostname, cur) : options })
# build commands to save new size after backup #
if options and "onlyifsizechanged" in options:
cmd = "ssh {} -t /opt/check_dir_size_for_backup.py --save-new-size {}"
cmd = cmd.format(hostname, cur)
sizeChangeNotifyCommands.append(cmd)
# keep order (important!)
pathsAll = list(set(basePaths)) + [ p.rstrip("/") + "/***" for p in fullPaths ]
@@ -82,11 +92,19 @@ def createBackupScriptStructure(backupList, baseDomain=""):
pathsMinimal = list(filter(filterSizeChanged, pathsNoHighData))
rsyncScript = rsyncScriptTemplate.render(hostname=hostname, token=icingaToken,
hostname_base=hostnameBase)
hostname_base=hostnameBase,
size_change_commands=sizeChangeNotifyCommands)
# build all filter #
rsyncFilterAll = rsyncFilterTemplate.render(paths=pathsAll)
# build filter excluding high data #
rsyncFilterNoHighData = rsyncFilterTemplate.render(paths=pathsNoHighData)
# build filter excluding size changed no #
rsyncFilterOnlyIfSizeChanged = rsyncFilterTemplate.render(paths=pathsOnlyIfSizeChanged)
# build filter without high data and without non-size-changed dirs #
rsyncFilterMinimal = rsyncFilterTemplate.render(paths=pathsMinimal)
# async icinga config #
@@ -123,7 +141,7 @@ def createBackupScriptStructure(backupList, baseDomain=""):
wrapperName = "wrapper.sh"
with open(os.path.join(backupPath, wrapperName), "w") as f:
for n in scriptNames:
f.write("./{}".format(n))
f.write("./{} $1".format(n))
f.write("\n")
os.chmod(os.path.join(backupPath, wrapperName), 0o700)

View File

@@ -4,14 +4,14 @@ set -eu
mkdir -p {{ hostname_base }}
cd {{ hostname_base }}
TYPE=""
if [ -z "$1" ]; then
if [ $# -ne 0 ]; then
TYPE=$1
fi
TEST=$(python -c "int('$TYPE' in ['size_changed', 'no_high_data', 'minimal'])^1")
TEST=$(python3 -c "print(int('$TYPE' in ['size_changed', 'no_high_data', 'minimal', ''])^1)")
if [ $TEST -ne 0 ]; then
echo Bad Filter Option $1
echo Bad Filter Option [$TYPE]
exit 1
fi
dest=./
@@ -46,6 +46,14 @@ TOKEN="{{ token }}"
if [ $RSYNC_SUCCESS -eq 0 ]; then
curl -H "${CONTENT_TYPE}" -X POST "${ASYNC_ICINGA_ADDRESS}" -d \
"{\"service\": \"${SERVICE}\", \"token\": \"${TOKEN}\", \"status\": \"OK\", \"info\": \"\"}"
# if size changed was copied save new size #
{% if not size_change_commands %}
echo No Sizes to notifiy
{% endif %}
{% for cmd in size_change_commands %}
{{ cmd }}
{% endfor %}
else
curl -H "${CONTENT_TYPE}" -X POST "${ASYNC_ICINGA_ADDRESS}" -d \
"{\"service\": \"${SERVICE}\", \"token\": \"${TOKEN}\", \"status\": \"CRITICAL\", \"info\": \"\"}"