expire snapshots older than 3 days
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 11 Apr 2010 20:36:10 +0000 (20:36 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 11 Apr 2010 20:36:10 +0000 (20:36 +0000)
git-svn-id: svn://svn.rot13.org/sysadmin-cookbook@199 191e9f34-6774-4a6d-acfc-7664dacd4a2a

recepies/btrfs/btrfs-snap-expire.pl [new file with mode: 0755]

diff --git a/recepies/btrfs/btrfs-snap-expire.pl b/recepies/btrfs/btrfs-snap-expire.pl
new file mode 100755 (executable)
index 0000000..ad0f154
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use DateTime;
+
+my $to = DateTime->now->subtract( days => 3 )->truncate( to => 'day' );
+
+foreach my $snap ( glob '/mnt/*/.snap/*' ) {
+       if ( $snap =~ m{^(.+)/((\d\d\d\d)-(\d\d)-(\d\d)T(\d\d))$} ) {
+               my $path = $1;
+               my $name = $2;
+               next if $6 == 0; # keep daily snapshot
+               my $dt = DateTime->new( year => $3, month => $4, day => $5, hour => $6 );
+               next if $dt > $to;
+               warn "remove $snap\n";
+               system "btrfsctl -D $name $path";
+       } else {
+               warn "SKIP $snap\n";
+       }
+}