mirror of https://github.com/jimsalterjrs/sanoid
parent
09a879664a
commit
d8613d1379
21
sanoid
21
sanoid
|
|
@ -121,12 +121,13 @@ sub monitor_snapshots {
|
||||||
my $path = $config{$section}{'path'};
|
my $path = $config{$section}{'path'};
|
||||||
push @paths, $path;
|
push @paths, $path;
|
||||||
|
|
||||||
my @types = ('yearly','monthly','daily','hourly');
|
my @types = ('yearly','monthly','daily','hourly','frequently');
|
||||||
foreach my $type (@types) {
|
foreach my $type (@types) {
|
||||||
|
|
||||||
my $smallerperiod = 0;
|
my $smallerperiod = 0;
|
||||||
# we need to set the period length in seconds first
|
# we need to set the period length in seconds first
|
||||||
if ($type eq 'hourly') { $smallerperiod = 60; }
|
if ($type eq 'frequently') { $smallerperiod = 1; }
|
||||||
|
elsif ($type eq 'hourly') { $smallerperiod = 60; }
|
||||||
elsif ($type eq 'daily') { $smallerperiod = 60*60; }
|
elsif ($type eq 'daily') { $smallerperiod = 60*60; }
|
||||||
elsif ($type eq 'monthly') { $smallerperiod = 60*60*24; }
|
elsif ($type eq 'monthly') { $smallerperiod = 60*60*24; }
|
||||||
elsif ($type eq 'yearly') { $smallerperiod = 60*60*24; }
|
elsif ($type eq 'yearly') { $smallerperiod = 60*60*24; }
|
||||||
|
|
@ -200,7 +201,8 @@ sub prune_snapshots {
|
||||||
unless ($type =~ /ly$/) { next; }
|
unless ($type =~ /ly$/) { next; }
|
||||||
|
|
||||||
# we need to set the period length in seconds first
|
# we need to set the period length in seconds first
|
||||||
if ($type eq 'hourly') { $period = 60*60; }
|
if ($type eq 'frequently') { $period = 60 * $config{$section}{'frequent_period'}; }
|
||||||
|
elsif ($type eq 'hourly') { $period = 60*60; }
|
||||||
elsif ($type eq 'daily') { $period = 60*60*24; }
|
elsif ($type eq 'daily') { $period = 60*60*24; }
|
||||||
elsif ($type eq 'monthly') { $period = 60*60*24*31; }
|
elsif ($type eq 'monthly') { $period = 60*60*24*31; }
|
||||||
elsif ($type eq 'yearly') { $period = 60*60*24*365.25; }
|
elsif ($type eq 'yearly') { $period = 60*60*24*365.25; }
|
||||||
|
|
@ -291,7 +293,18 @@ sub take_snapshots {
|
||||||
my @preferredtime;
|
my @preferredtime;
|
||||||
my $lastpreferred;
|
my $lastpreferred;
|
||||||
|
|
||||||
if ($type eq 'hourly') {
|
if ($type eq 'frequently') {
|
||||||
|
my $frequentslice = int($datestamp{'min'} / $config{$section}{'frequent_period'});
|
||||||
|
|
||||||
|
push @preferredtime,0; # try to hit 0 seconds
|
||||||
|
push @preferredtime,$frequentslice * $config{$section}{'frequent_period'};
|
||||||
|
push @preferredtime,$datestamp{'hour'};
|
||||||
|
push @preferredtime,$datestamp{'mday'};
|
||||||
|
push @preferredtime,($datestamp{'mon'}-1); # january is month 0
|
||||||
|
push @preferredtime,$datestamp{'year'};
|
||||||
|
$lastpreferred = timelocal(@preferredtime);
|
||||||
|
if ($lastpreferred > time()) { $lastpreferred -= 60 * $config{$section}{'frequent_period'}; } # preferred time is later this frequent period - so look at last frequent period
|
||||||
|
} elsif ($type eq 'hourly') {
|
||||||
push @preferredtime,0; # try to hit 0 seconds
|
push @preferredtime,0; # try to hit 0 seconds
|
||||||
push @preferredtime,$config{$section}{'hourly_min'};
|
push @preferredtime,$config{$section}{'hourly_min'};
|
||||||
push @preferredtime,$datestamp{'hour'};
|
push @preferredtime,$datestamp{'hour'};
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
daily = 60
|
daily = 60
|
||||||
|
|
||||||
[template_production]
|
[template_production]
|
||||||
|
frequently = 0
|
||||||
hourly = 36
|
hourly = 36
|
||||||
daily = 30
|
daily = 30
|
||||||
monthly = 3
|
monthly = 3
|
||||||
|
|
@ -49,6 +50,7 @@
|
||||||
|
|
||||||
[template_backup]
|
[template_backup]
|
||||||
autoprune = yes
|
autoprune = yes
|
||||||
|
frequently = 0
|
||||||
hourly = 30
|
hourly = 30
|
||||||
daily = 90
|
daily = 90
|
||||||
monthly = 12
|
monthly = 12
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,17 @@ recursive =
|
||||||
use_template =
|
use_template =
|
||||||
process_children_only =
|
process_children_only =
|
||||||
|
|
||||||
|
# The period in minutes for frequent snapshots,
|
||||||
|
# should be in the range of 1-30 and divide an hour without remainder
|
||||||
|
frequent_period = 15
|
||||||
|
|
||||||
# If any snapshot type is set to 0, we will not take snapshots for it - and will immediately
|
# If any snapshot type is set to 0, we will not take snapshots for it - and will immediately
|
||||||
# prune any of those type snapshots already present.
|
# prune any of those type snapshots already present.
|
||||||
#
|
#
|
||||||
# Otherwise, if autoprune is set, we will prune any snapshots of that type which are older
|
# Otherwise, if autoprune is set, we will prune any snapshots of that type which are older
|
||||||
# than (setting * periodicity) - so if daily = 90, we'll prune any dailies older than 90 days.
|
# than (setting * periodicity) - so if daily = 90, we'll prune any dailies older than 90 days.
|
||||||
autoprune = yes
|
autoprune = yes
|
||||||
|
frequently = 0
|
||||||
hourly = 48
|
hourly = 48
|
||||||
daily = 90
|
daily = 90
|
||||||
monthly = 6
|
monthly = 6
|
||||||
|
|
@ -62,6 +67,8 @@ yearly_min = 0
|
||||||
monitor = yes
|
monitor = yes
|
||||||
monitor_dont_warn = no
|
monitor_dont_warn = no
|
||||||
monitor_dont_crit = no
|
monitor_dont_crit = no
|
||||||
|
frequently_warn = 2000
|
||||||
|
frequently_crit = 8000
|
||||||
hourly_warn = 90
|
hourly_warn = 90
|
||||||
hourly_crit = 360
|
hourly_crit = 360
|
||||||
daily_warn = 28
|
daily_warn = 28
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue