forked from evolix/evobackup
Add lock for bkctld inc / rm when not using btrfs (Fix #32)
This commit is contained in:
parent
6d7072234d
commit
ed83404806
|
@ -15,11 +15,22 @@ for jail in $("${LIBDIR}/bkctld-list"); do
|
||||||
jail_inode=$(stat --format=%i "${JAILDIR}/${jail}")
|
jail_inode=$(stat --format=%i "${JAILDIR}/${jail}")
|
||||||
if [ "$jail_inode" -eq 256 ]; then
|
if [ "$jail_inode" -eq 256 ]; then
|
||||||
/bin/btrfs subvolume snapshot -r "${JAILDIR}/${jail}" "${inc}" | debug
|
/bin/btrfs subvolume snapshot -r "${JAILDIR}/${jail}" "${inc}" | debug
|
||||||
else
|
|
||||||
cp -alx "${JAILDIR}/${jail}/" "${inc}" | debug
|
|
||||||
fi
|
|
||||||
end=$(date +"%H:%M:%S")
|
end=$(date +"%H:%M:%S")
|
||||||
notice "${jail} : made ${date} inc [${start}/${end}]"
|
notice "${jail} : made ${date} inc [${start}/${end}]"
|
||||||
|
else
|
||||||
|
lock="/run/lock/bkctld/inc-${jail}.lock"
|
||||||
|
if [ -f "${lock}" ]; then
|
||||||
|
warning "${jail} : trying to run already running inc"
|
||||||
|
else
|
||||||
|
(
|
||||||
|
mkdir -p /run/lock/bkctld && touch "${lock}"
|
||||||
|
trap "rm -f ${lock}" 0
|
||||||
|
cp -alx "${JAILDIR}/${jail}/" "${inc}"
|
||||||
|
end=$(date +"%H:%M:%S")
|
||||||
|
notice "${jail} : made ${date} inc [${start}/${end}]"
|
||||||
|
) &
|
||||||
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
warning "${jail} : trying to made already existant inc"
|
warning "${jail} : trying to made already existant inc"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -6,19 +6,6 @@
|
||||||
|
|
||||||
LIBDIR="$(dirname $0)" && . "${LIBDIR}/config"
|
LIBDIR="$(dirname $0)" && . "${LIBDIR}/config"
|
||||||
|
|
||||||
empty="/tmp/bkctld-${$}-$(date +%N))"
|
|
||||||
mkdir "${empty}"
|
|
||||||
pidfile="/var/run/bkctld-rm.pid"
|
|
||||||
if [ -f "${pidfile}" ]; then
|
|
||||||
pid=$(cat "${pidfile}")
|
|
||||||
ps -u "${pid}" >/dev/null
|
|
||||||
if [ "${?}" -eq 0 ]; then
|
|
||||||
kill -9 "${pid}"
|
|
||||||
warning "${0} rm always run (PID ${pid}), killed by ${$} !"
|
|
||||||
fi
|
|
||||||
rm "${pidfile}"
|
|
||||||
fi
|
|
||||||
echo "${$}" > "${pidfile}"
|
|
||||||
for jail in $("${LIBDIR}/bkctld-list"); do
|
for jail in $("${LIBDIR}/bkctld-list"); do
|
||||||
incs=$(ls "${INCDIR}/${jail}")
|
incs=$(ls "${INCDIR}/${jail}")
|
||||||
if [ -f "${CONFDIR}/${jail}" ]; then
|
if [ -f "${CONFDIR}/${jail}" ]; then
|
||||||
|
@ -33,16 +20,25 @@ for jail in $("${LIBDIR}/bkctld-list"); do
|
||||||
inc_inode=$(stat --format=%i "${INCDIR}/${jail}/${j}")
|
inc_inode=$(stat --format=%i "${INCDIR}/${jail}/${j}")
|
||||||
if [ "${inc_inode}" -eq 256 ]; then
|
if [ "${inc_inode}" -eq 256 ]; then
|
||||||
/bin/btrfs subvolume delete "${INCDIR}/${jail}/${j}" | debug
|
/bin/btrfs subvolume delete "${INCDIR}/${jail}/${j}" | debug
|
||||||
else
|
|
||||||
cd "${INCDIR}/${jail}"
|
|
||||||
rsync -a --delete "${empty}/" "${j}/"
|
|
||||||
rmdir "${j}"
|
|
||||||
fi
|
|
||||||
end=$(date +"%H:%M:%S")
|
end=$(date +"%H:%M:%S")
|
||||||
notice "${jail} : deleted ${j} inc [${start}/${end}]"
|
notice "${jail} : deleted ${j} 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}/${j}/"
|
||||||
|
rmdir "${j}"
|
||||||
|
end=$(date +"%H:%M:%S")
|
||||||
|
notice "${jail} : deleted ${j} inc [${start}/${end}]"
|
||||||
|
) &
|
||||||
|
fi
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
rm "${keepfile}"
|
rm "${keepfile}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
rmdir "${empty}"
|
|
||||||
rm "${pidfile}"
|
|
||||||
|
|
Loading…
Reference in a new issue