7 |
|
|
8 |
my $now = DateTime->now(); |
my $now = DateTime->now(); |
9 |
|
|
10 |
|
my $last_backup; |
11 |
|
|
12 |
open(my $fs, '-|', 'zfs list -H'); |
open(my $fs, '-|', 'zfs list -H'); |
13 |
while(<$fs>) { |
while(<$fs>) { |
14 |
chomp; |
chomp; |
15 |
my ( $name, $used, $avail, $refer, $mountpoint ) = split(/\t/,$_,6); |
my ( $name, $used, $avail, $refer, $mountpoint ) = split(/\t/,$_,6); |
16 |
|
|
17 |
next unless $name =~ m{@(\d\d\d\d)-(\d\d)-(\d\d)}; |
next unless $name =~ m{(.+)@(\d\d\d\d)-(\d\d)-(\d\d)}; |
18 |
|
|
19 |
|
my $host = $1; |
20 |
|
|
21 |
|
my $date = DateTime->new( year => $2, month => $3, day => $4 ); |
22 |
|
|
23 |
|
my $age = $now->delta_days( $date )->delta_days; |
24 |
|
|
25 |
|
my $op = ' '; |
26 |
|
my $last = 0; |
27 |
|
|
28 |
|
if ( $age > 14 ) { |
29 |
|
|
30 |
|
$last_backup->{$host} ||= $date; |
31 |
|
$last = $last_backup->{$host}->delta_days( $date )->delta_days; |
32 |
|
|
33 |
|
if ( $last && $last < 5 ) { |
34 |
|
$op = '-'; |
35 |
|
} else { |
36 |
|
$op = '+'; |
37 |
|
$last_backup->{$host} = $date; |
38 |
|
} |
39 |
|
} |
40 |
|
|
41 |
my $date = DateTime->new( year => $1, month => $2, day => $3 ); |
warn "$op $name\t$used\t$refer\t$age\t$last\n"; |
|
my $age = $now->delta_days( $date ); |
|
42 |
|
|
43 |
warn "$name $used $refer [", $age->delta_days, " days]\n"; |
system "zfs destroy $name" if $op eq '-' && @ARGV; |
44 |
} |
} |