Skip to content

Commit 45a817a

Browse files
committed
Add support for removing old backups
1 parent 7438480 commit 45a817a

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

sample.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"-efqQK",
1111
"--master-data=2",
1212
"--all-databases"
13-
]
13+
],
14+
"keep": 3
1415
}

sql-backup.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ def main():
6969
logger.info('Backing up to "%s"' % (result_file,))
7070
perform_backup(result_file, database=options.database)
7171

72+
remove_old_backups(result_file)
73+
7274
def setup_logger():
7375
logger = logging.getLogger('sql-backup')
7476
logger.setLevel(logging.DEBUG)
@@ -122,6 +124,24 @@ def perform_backup(filename,database=None):
122124
logger.exception('Failed to perform backup')
123125
sys.exit(1)
124126

127+
def remove_old_backups(backup_file):
128+
if 'keep' not in config:
129+
# Don't remove old backups
130+
return
131+
# Configuration has instructed that only n backups are to be kept
132+
try:
133+
logger.info('Removing old backups...')
134+
folder = os.path.dirname(backup_file)
135+
backups = [(x, os.lstat(os.path.join(folder, x)).st_mtime) for x in os.listdir(folder)]
136+
backups = sorted(backups, key=lambda x: x[1], reverse=True)
137+
keep = config['keep']
138+
delete = backups[keep:]
139+
for (f, _) in delete:
140+
os.remove(os.path.join(folder, f))
141+
except:
142+
logger.exception('Failed to remove old backups')
143+
144+
125145
def log_and_popen(*args, **kwargs):
126146
logger.debug('Popen(%r, %r)' % (args, kwargs))
127147
return subprocess.Popen(*args, **kwargs)

sql.mit.edu-daily.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@
1414
"--disable-keys",
1515
"--master-data=2",
1616
"--all-databases"
17-
]
17+
],
18+
"keep": 3
1819
}

test.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
"dumper": [
88
"echo",
99
"hi there"
10-
]
10+
],
11+
"keep": 2
1112
}

0 commit comments

Comments
 (0)