mirror of https://github.com/jimsalterjrs/sanoid
Compare commits
4 Commits
fb91f90013
...
4cbf71ce7d
| Author | SHA1 | Date |
|---|---|---|
|
|
4cbf71ce7d | |
|
|
dbcaeef1ac | |
|
|
b50e55c17a | |
|
|
acbf5daa43 |
|
|
@ -176,13 +176,6 @@ pkg install p5-Config-Inifiles p5-Capture-Tiny pv mbuffer lzop sanoid
|
|||
|
||||
* See note about tcsh unpleasantness and other things in FREEBSD.readme
|
||||
|
||||
## Alpine Linux or busybox based distributions
|
||||
|
||||
The busybox implementation of ps is lacking needed arguments so a proper ps program needs to be installed.
|
||||
For Alpine Linux this can be done with:
|
||||
|
||||
`apk --no-cache add procps`
|
||||
|
||||
## OmniOS
|
||||
|
||||
Used with OmniOS r34, r36 and r37 (with napp-it installed). Hence, we presume you have a standard perl installation etc.
|
||||
|
|
|
|||
21
sanoid
21
sanoid
|
|
@ -17,6 +17,7 @@ use Getopt::Long qw(:config auto_version auto_help);
|
|||
use Pod::Usage; # pod2usage
|
||||
use Time::Local; # to parse dates in reverse
|
||||
use Capture::Tiny ':all';
|
||||
use POSIX 'strftime';
|
||||
|
||||
my %args = (
|
||||
"configdir" => "/etc/sanoid",
|
||||
|
|
@ -616,7 +617,11 @@ sub take_snapshots {
|
|||
my @snapshots;
|
||||
|
||||
foreach my $type (@types) {
|
||||
my $snapname = "autosnap_$datestamp{'sortable'}_$type";
|
||||
my $sortable = strftime($config{$dataset}{'datestamp_format'}, localtime($datestamp{'unix_time'}));
|
||||
my $snapname = $config{$dataset}{'snapname_format'};
|
||||
$snapname =~ s/IDENTIFIER/$config{$dataset}{'identifier'}/g;
|
||||
$snapname =~ s/DATE/$sortable/g;
|
||||
$snapname =~ s/TYPE/$type/g;
|
||||
push(@snapshots, $snapname);
|
||||
}
|
||||
|
||||
|
|
@ -906,12 +911,13 @@ sub getsnaps {
|
|||
}
|
||||
|
||||
foreach my $snap (@rawsnaps) {
|
||||
my ($fs,$snapname,$snapdate) = ($snap =~ m/(.*)\@(.*ly)\t*creation\t*(\d*)/);
|
||||
my ($fs,$snapname,$snapdate) = ($snap =~ m/(.*)\@(.*?)\t*creation\t*(\d*)/);
|
||||
|
||||
# avoid pissing off use warnings
|
||||
if (defined $snapname) {
|
||||
my ($snaptype) = ($snapname =~ m/.*_(\w*ly)/);
|
||||
if ($snapname =~ /^autosnap/) {
|
||||
if ($snapname =~ /$config{$fs}{'identifier'}/) {
|
||||
my @types = qw(yearly monthly weekly daily hourly frequently);
|
||||
my ($snaptype) = grep { $snapname =~ /$_/ } @types;
|
||||
$snaps{$fs}{$snapname}{'ctime'}=$snapdate;
|
||||
$snaps{$fs}{$snapname}{'type'}=$snaptype;
|
||||
}
|
||||
|
|
@ -1148,16 +1154,15 @@ sub init {
|
|||
|
||||
sub get_date {
|
||||
my %datestamp;
|
||||
($datestamp{'sec'},$datestamp{'min'},$datestamp{'hour'},$datestamp{'mday'},$datestamp{'mon'},$datestamp{'year'},$datestamp{'wday'},$datestamp{'yday'},$datestamp{'isdst'}) = localtime(time);
|
||||
$datestamp{'unix_time'} = time();
|
||||
($datestamp{'sec'},$datestamp{'min'},$datestamp{'hour'},$datestamp{'mday'},$datestamp{'mon'},$datestamp{'year'},$datestamp{'wday'},$datestamp{'yday'},$datestamp{'isdst'}) = localtime($datestamp{'unix_time'});
|
||||
|
||||
$datestamp{'year'} += 1900;
|
||||
$datestamp{'unix_time'} = (((((((($datestamp{'year'} - 1971) * 365) + $datestamp{'yday'}) * 24) + $datestamp{'hour'}) * 60) + $datestamp{'min'}) * 60) + $datestamp{'sec'};
|
||||
$datestamp{'sec'} = sprintf ("%02u", $datestamp{'sec'});
|
||||
$datestamp{'min'} = sprintf ("%02u", $datestamp{'min'});
|
||||
$datestamp{'hour'} = sprintf ("%02u", $datestamp{'hour'});
|
||||
$datestamp{'mday'} = sprintf ("%02u", $datestamp{'mday'});
|
||||
$datestamp{'mon'} = sprintf ("%02u", ($datestamp{'mon'} + 1));
|
||||
$datestamp{'noseconds'} = "$datestamp{'year'}-$datestamp{'mon'}-$datestamp{'mday'}_$datestamp{'hour'}:$datestamp{'min'}";
|
||||
$datestamp{'sortable'} = "$datestamp{'noseconds'}:$datestamp{'sec'}";
|
||||
return %datestamp;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,3 +113,9 @@ yearly_crit = 0
|
|||
# for overriding these values one needs to specify them in a root pool section! ([tank]\n ...)
|
||||
capacity_warn = 80
|
||||
capacity_crit = 95
|
||||
|
||||
# snapshot name formats can be overridden
|
||||
identifier = autosnap
|
||||
# strftime-style format string
|
||||
datestamp_format = %Y-%m-%d_%H:%M:%S
|
||||
snapname_format = IDENTIFIER_DATE_TYPE
|
||||
|
|
|
|||
Loading…
Reference in New Issue