diff --git a/lib/bkctld-inc b/lib/bkctld-inc index 3ee7fb8..2f359ee 100755 --- a/lib/bkctld-inc +++ b/lib/bkctld-inc @@ -15,11 +15,22 @@ for jail in $("${LIBDIR}/bkctld-list"); do jail_inode=$(stat --format=%i "${JAILDIR}/${jail}") if [ "$jail_inode" -eq 256 ]; then /bin/btrfs subvolume snapshot -r "${JAILDIR}/${jail}" "${inc}" | debug + end=$(date +"%H:%M:%S") + notice "${jail} : made ${date} inc [${start}/${end}]" else - cp -alx "${JAILDIR}/${jail}/" "${inc}" | debug + 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 - end=$(date +"%H:%M:%S") - notice "${jail} : made ${date} inc [${start}/${end}]" else warning "${jail} : trying to made already existant inc" fi diff --git a/lib/bkctld-rm b/lib/bkctld-rm index 1e79a36..1139b65 100755 --- a/lib/bkctld-rm +++ b/lib/bkctld-rm @@ -6,19 +6,6 @@ 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 incs=$(ls "${INCDIR}/${jail}") if [ -f "${CONFDIR}/${jail}" ]; then @@ -33,16 +20,25 @@ for jail in $("${LIBDIR}/bkctld-list"); do inc_inode=$(stat --format=%i "${INCDIR}/${jail}/${j}") if [ "${inc_inode}" -eq 256 ]; then /bin/btrfs subvolume delete "${INCDIR}/${jail}/${j}" | debug + end=$(date +"%H:%M:%S") + notice "${jail} : deleted ${j} inc [${start}/${end}]" else - cd "${INCDIR}/${jail}" - rsync -a --delete "${empty}/" "${j}/" - rmdir "${j}" + 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 - end=$(date +"%H:%M:%S") - notice "${jail} : deleted ${j} inc [${start}/${end}]" done rm "${keepfile}" fi done -rmdir "${empty}" -rm "${pidfile}"