/[sysadmin-cookbook]/recepies/zfs/zfs-expire-snapshot.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /recepies/zfs/zfs-expire-snapshot.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 107 by dpavlin, Sat Jun 6 13:21:07 2009 UTC revision 108 by dpavlin, Sat Jun 6 16:56:30 2009 UTC
# Line 7  use DateTime; Line 7  use DateTime;
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  }  }

Legend:
Removed from v.107  
changed lines
  Added in v.108

  ViewVC Help
Powered by ViewVC 1.1.26