#!/usr/bin/python import os, re, sys from time import strptime from glob import glob PATH = os.path.abspath(sys.argv[1]) backups = glob('%s/weekly/*.gz' % PATH) backups.sort() backups.reverse() backups = [[x, re.match('.*(\d\d\d\d-\d\d-\d\d).*', x)] for x in backups] backups = [[x[0], strptime(x[1].groups()[0], '%Y-%m-%d')] for x in backups] keep = backups[:2] backups = backups[2:] monthlys = {} for x in backups: month = (x[1].tm_year, x[1].tm_mon) if month not in monthlys: monthlys[month] = x if len(monthlys) > 3: break keep.extend(monthlys.values()) for x in backups: if not x in keep: print 'rm %s' % x[0] else: print '# keeping %s' % x[0]