evobackup/lib/bkctld-rm

75 lines
2.2 KiB
Plaintext
Raw Normal View History

2019-01-04 13:51:05 +01:00
#!/bin/sh
#
# Remove old incremtal inc of all jails
# Usage: rm
#
2019-01-04 13:51:05 +01:00
2020-04-01 11:23:35 +02:00
# shellcheck source=./config
2019-01-04 13:51:05 +01:00
LIBDIR="$(dirname $0)" && . "${LIBDIR}/config"
relative_date() {
format=$(echo $1 | cut -d'.' -f1)
time_jump=$(echo $1 | cut -d'.' -f2)
reference_date=$(date "${format}")
past_date=$(date --date "${reference_date} ${time_jump}" +"%Y-%m-%d")
echo ${past_date}
}
remove_inc() {
jail=$1
inc=$2
start=$(date +"%H:%M:%S")
inc_inode=$(stat --format=%i "${INCDIR}/${jail}/${inc}")
if [ "${inc_inode}" -eq 256 ]; then
/bin/btrfs subvolume delete "${INCDIR}/${jail}/${inc}" | debug
end=$(date +"%H:%M:%S")
notice "${jail} : deleted ${inc} inc [${start}/${end}]"
else
lock="/run/lock/bkctld/rm-${jail}.lock"
if [ -f "${lock}" ]; then
warning "${jail} : trying to run already running rm"
else
(
empty="/tmp/bkctld-${$}-$(date +%N)"
mkdir -p /run/lock/bkctld && touch "${lock}" && mkdir -p "${empty}"
trap "rm -f ${lock} && rmdir ${empty}" 0
rsync -a --delete "${empty}/" "${INCDIR}/${jail}/${inc}/"
rmdir "${INCDIR}/${jail}/${inc}/"
end=$(date +"%H:%M:%S")
notice "${jail} : deleted ${inc} inc [${start}/${end}]"
)
fi
fi
}
for jail in $("${LIBDIR}/bkctld-list"); do
2019-01-04 13:51:05 +01:00
incs=$(ls "${INCDIR}/${jail}")
if [ -f "${CONFDIR}/${jail}.d/incs_policy" ]; then
incs_policy_file="${CONFDIR}/${jail}.d/incs_policy"
elif [ -f "${CONFDIR}/${jail}" ]; then
incs_policy_file="${CONFDIR}/${jail}"
else
incs_policy_file=""
fi
if [ -n "${incs_policy_file}" ]; then
incs_policy_keep_file="$(mktemp)"
# loop for each line in jail configuration
for incs_policy_line in $(cat ${incs_policy_file}); do
# inc date in ISO format
incs_policy_date=$(relative_date ${incs_policy_line})
echo ${incs_policy_date} >> "${incs_policy_keep_file}"
done
for inc in $(echo "${incs}" | grep -v -f "${incs_policy_keep_file}"); do
remove_inc "${jail}" "${inc}"
2019-01-04 13:51:05 +01:00
done
rm "${incs_policy_keep_file}"
2019-01-04 13:51:05 +01:00
fi
done