mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-11-08 11:52:32 +01:00
Introduction of a new helper-handler pair named nap
The .nap file can be created to freeze the processing of the configurations for a (static) random interval. It is possible to specify the interval in seconds with a min and a max value and if it should be static. Change-Id: I9523fd3645b1007fe7e24b6bd4ec18a104a07e05
This commit is contained in:
parent
ab8d5a3a39
commit
0d8afeb807
@ -1,10 +1,10 @@
|
||||
|
||||
HANDLERS = borg borg.helper dup dup.helper maildir makecd \
|
||||
makecd.helper mysql mysql.helper pgsql pgsql.helper rdiff \
|
||||
makecd.helper mysql mysql.helper nap nap.helper pgsql pgsql.helper rdiff \
|
||||
rdiff.helper rsync sh svn sys sys.helper trac tar tar.helper
|
||||
|
||||
DIST_HANDLERS = borg.in borg.helper.in dup.in dup.helper.in maildir.in makecd.in \
|
||||
makecd.helper.in mysql.in mysql.helper.in pgsql.in pgsql.helper.in rdiff.in \
|
||||
makecd.helper.in mysql.in mysql.helper.in nap.in nap.helper.in pgsql.in pgsql.helper.in rdiff.in \
|
||||
rdiff.helper.in rsync.in sh.in svn.in sys.in sys.helper.in trac.in tar.in tar.helper.in wget
|
||||
|
||||
CLEANFILES = $(HANDLERS)
|
||||
@ -62,6 +62,14 @@ mysql.helper: $(srcdir)/mysql.helper.in
|
||||
rm -f mysql.helper
|
||||
$(edit) $(srcdir)/mysql.helper.in > mysql.helper
|
||||
|
||||
nap: $(srcdir)/nap.in
|
||||
rm -f nap
|
||||
$(edit) $(srcdir)/nap.in > nap
|
||||
|
||||
nap.helper: $(srcdir)/nap.helper.in
|
||||
rm -f nap.helper
|
||||
$(edit) $(srcdir)/nap.helper.in > nap.helper
|
||||
|
||||
pgsql: $(srcdir)/pgsql.in
|
||||
rm -f pgsql
|
||||
$(edit) $(srcdir)/pgsql.in > pgsql
|
||||
|
101
handlers/nap.helper.in
Normal file
101
handlers/nap.helper.in
Normal file
@ -0,0 +1,101 @@
|
||||
# nap.helper creates a configuration file to offer the possibility
|
||||
# to add a delay in form of a sleep before the start of the backup
|
||||
# process itself
|
||||
|
||||
HELPERS="$HELPERS nap:randomized_delay_of_backups"
|
||||
|
||||
do_nap_static_random_delay() {
|
||||
|
||||
# set a boolean value to enable a static random delay seeded with the machine-id in /etc/machine-id.
|
||||
radioBox "$nap_title" "enable the static random delay. For more information check the doc's..." \
|
||||
"true" "enable the static random delay" off \
|
||||
"false" "default" on
|
||||
[ $? -eq 1 ] && return
|
||||
nap_static_random_delay=$REPLY
|
||||
setDefault interval_min
|
||||
}
|
||||
|
||||
|
||||
do_nap_interval_min() {
|
||||
|
||||
msg="Specify a lower limit for the time span of the delay in seconds:"
|
||||
# set the minimum delay for the interval
|
||||
inputBox "$nap_title" "${msg}"
|
||||
[ $? -eq 0 ] || return
|
||||
nap_interval_min=$REPLY
|
||||
_interval_min_done="(DONE)"
|
||||
setDefault interval_max
|
||||
}
|
||||
|
||||
do_nap_interval_max() {
|
||||
|
||||
msg="Specify a upper limit for the time span of the delay in seconds:"
|
||||
# set the maximum delay for the interval
|
||||
inputBox "$nap_title" "${msg}"
|
||||
[ $? -eq 0 ] || return
|
||||
nap_interval_max=$REPLY
|
||||
_interval_max_done="(DONE)"
|
||||
setDefault finish
|
||||
}
|
||||
|
||||
do_nap_finish() {
|
||||
|
||||
# Uses the prefix 0.nap because it has to be the first file processed by the corresponding handler
|
||||
# that the randomized delay becomes useful.
|
||||
|
||||
get_next_filename $configdirectory/1.nap
|
||||
cat > $next_filename <<EOF
|
||||
### configuration file for nap.handler ###
|
||||
# This holds back the processing of configuration files in this directory
|
||||
# for a randomized and configurable time span
|
||||
|
||||
nap_static_random_delay = $nap_static_random_delay
|
||||
nap_interval_min = $nap_interval_min
|
||||
nap_interval_max = $nap_interval_max
|
||||
EOF
|
||||
chmod 600 $next_filename
|
||||
}
|
||||
|
||||
nap_main_menu() {
|
||||
while true; do
|
||||
static_random_delay="enable the static random delay"
|
||||
interval_min="specify the minimum delay for the interval $_interval_min_done"
|
||||
interval_max="specify the maximum delay for the interval $_interval_max_done"
|
||||
menuBox "$nap_title" "choose a step:" \
|
||||
static "$static_random_delay" \
|
||||
interval_min "$interval_min" \
|
||||
interval_max "$interval_max" \
|
||||
finish "finish and create configuration file"
|
||||
[ $? -eq 0 ] || return
|
||||
case "$REPLY" in
|
||||
"static") do_nap_static_random_delay;;
|
||||
"interval_min") do_nap_interval_min;;
|
||||
"interval_max") do_nap_interval_max;;
|
||||
"finish")
|
||||
if [[ "$_interval_min_done$_interval_max_done" != "(DONE)(DONE)" ]]; then
|
||||
msgBox "$nap_title" "You cannot create the configuration file until mandatory steps are completed."
|
||||
else
|
||||
do_nap_finish
|
||||
return
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
nap_wizard() {
|
||||
|
||||
# global variables
|
||||
nap_title="random delay on backup process wizard"
|
||||
|
||||
_interval_min_done=
|
||||
_interval_max_done=
|
||||
|
||||
|
||||
# define some defaults for the configurations
|
||||
nap_static_random_delay=true
|
||||
nap_interval_min=
|
||||
nap_interval_max=
|
||||
|
||||
nap_main_menu
|
||||
}
|
25
handlers/nap.in
Normal file
25
handlers/nap.in
Normal file
@ -0,0 +1,25 @@
|
||||
# nap.handler for processing the .nap files to freeze the processing of configurations
|
||||
# in the configuration directory of backupninja temporary.
|
||||
|
||||
getconf nap_static_random_delay
|
||||
getconf nap_interval_min
|
||||
getconf nap_interval_max
|
||||
|
||||
# check for static random delay
|
||||
if [ $nap_static_random_delay == "false" ]; then
|
||||
|
||||
# use perl rand if static random is set false
|
||||
delay=$(perl -e "print int($nap_interval_min + rand($nap_interval_max - $nap_interval_min))")
|
||||
|
||||
else
|
||||
|
||||
# seed rand with machine-id, the substring 0,8 is needed so the integer value does not
|
||||
# overflows the max integer value of perl on a 32 bit system. With this method entropy isn't
|
||||
# a problem
|
||||
delay=$(cat /etc/machine-id | perl -e "srand(hex(substr(<STDIN>,0,8))); \
|
||||
print int($nap_interval_min + rand($nap_interval_max - $nap_interval_min))")
|
||||
|
||||
fi
|
||||
|
||||
echo "Holding processing of configurations for $delay seconds..."
|
||||
perl -e "sleep $delay"
|
Loading…
Reference in New Issue
Block a user