/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 108 - (hide annotations)
Sat Jun 6 16:56:30 2009 UTC (14 years, 10 months ago) by dpavlin
File MIME type: text/plain
File size: 794 byte(s)
expire snapshots

1 dpavlin 107 #!/usr/bin/perl
2    
3     use warnings;
4     use strict;
5    
6     use DateTime;
7    
8     my $now = DateTime->now();
9    
10 dpavlin 108 my $last_backup;
11    
12 dpavlin 107 open(my $fs, '-|', 'zfs list -H');
13     while(<$fs>) {
14     chomp;
15     my ( $name, $used, $avail, $refer, $mountpoint ) = split(/\t/,$_,6);
16    
17 dpavlin 108 next unless $name =~ m{(.+)@(\d\d\d\d)-(\d\d)-(\d\d)};
18 dpavlin 107
19 dpavlin 108 my $host = $1;
20 dpavlin 107
21 dpavlin 108 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     warn "$op $name\t$used\t$refer\t$age\t$last\n";
42    
43     system "zfs destroy $name" if $op eq '-' && @ARGV;
44 dpavlin 107 }

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26