Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.21 KB | None | 0 0
  1. use strict;
  2. use warnings;
  3.  
  4. use Time::Local qw/timelocal/;
  5.  
  6. my @dirs = glob "/home/minecraft/server/world-backup/20*";
  7.  
  8. my $now = time;
  9.  
  10. for my $dir (sort @dirs) {
  11.     my ($year, $month, $day, $hour, $min) = $dir =~ m/(\d+)-(\d+)-(\d+)_(\d{2})(\d{2})/;
  12.  
  13.     my $time = timelocal(0,$min+0,$hour+0,$day+0,$month-1,$year-1900);
  14.  
  15.     my $diff = $now - $time;
  16.  
  17.     ### Last 2 hours; keep
  18.     if ($diff < 2*60*60) {
  19.         #print "KEEP(<2 HOUR): $dir\n";
  20.         next;
  21.     }
  22.  
  23.     ### Older than 2 hours, keep hourly only
  24.     unless ($min == 0) {
  25.         #print "DELETE(>2 HOUR & !HOUR): $dir\n";
  26.         system "rm -rf $dir";
  27.         next;
  28.     }
  29.  
  30.     ### Last 1.5 days, keep all hours
  31.     if ($diff < 1.5*24*60*60) {
  32.         #print "KEEP(<1.5 DAY & HOUR): $dir\n";
  33.         next;
  34.     }
  35.  
  36.     ### Older dan 1.5 days, keep midnight only
  37.     unless ($hour == 0) {
  38.         #print "DELETE(>1.5 DAY & !DAY): $dir\n";
  39.         system "rm -rf $dir";
  40.         next;
  41.     }
  42.  
  43.     ### Last 30 days, keep all midnights
  44.     if ($diff < 30*24*60*60) {
  45.         #print "KEEP(<30 DAY & DAY): $dir\n"
  46.         next;
  47.     }
  48.  
  49.     ### Kill anything older
  50.     #print "DELETE(>30 DAY): $dir\n";
  51.     system "rm -rf $dir";
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement