From 5c7f08101166f7831e58fd8f3a9121b71c4f7804 Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Thu, 14 Jun 2007 18:24:41 +0000 Subject: [PATCH] Added the lysrdiff-sizechange utility. * lysrdiff-sizechange.py: New script. Report the most recent size change of each backup task. * Makefile (install): Added lysrdiff-sizechange.py. --- ChangeLog | 5 ++++ Makefile | 1 + lysrdiff-sizechange.py | 54 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100755 lysrdiff-sizechange.py diff --git a/ChangeLog b/ChangeLog index 9ede102..e1037fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-06-14 Per Cederqvist <ceder@shafan.lysator.liu.se> + Added the lysrdiff-sizechange utility. + * lysrdiff-sizechange.py: New script. Report the most recent size + change of each backup task. + * Makefile (install): Added lysrdiff-sizechange.py. + New options --continue and --only-clone. Better remote watching of the status. diff --git a/Makefile b/Makefile index 9452920..001285a 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,7 @@ install: install-one-task cp lysrdiff-move-obsolete $(BINDIR)/ cp lysrdiff-move-job $(BINDIR)/ cp lysrdiff-label-disk $(BINDIR)/ + cp lysrdiff-sizechange.py $(BINDIR)/ install-one-task: cp backup-one-task $(BINDIR)/ diff --git a/lysrdiff-sizechange.py b/lysrdiff-sizechange.py new file mode 100755 index 0000000..8a549ed --- /dev/null +++ b/lysrdiff-sizechange.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import os +import sys + +def root(disk, part): + return "/lysrdiff/%d/perm/%d/lysrdiff" % (disk, part) + +def taskfile(disk, part): + return "%s/tasks" % root(disk, part) + +def summary_file(disk, part, category, subcategory): + return "%s/backups/%s/%s/backup-summary.txt" % ( + root(disk, part), category, subcategory) + +def parse_summary(line): + start_date, start_time, end_date, end_time, infotext = line.split(" ", 4) + info = {} + for item in infotext.split(" "): + key, val = item.split("=", 1) + info[key] = val + return (start_date + " " + start_time, + end_date + " " + end_time, + info) + +def report_sizechange(disk, part, category, subcategory): + prev = 0 + curr = 0 + for line in open(summary_file(disk, part, category, subcategory)): + start, end, info = parse_summary(line) + sz = info.get("totalsize") + if sz is not None: + try: + sz = int(sz) + prev = curr + curr = sz + except ValueError: + pass + + print curr - prev, category, subcategory + + +def report_partition_sizechange(disk, part): + for line in open(taskfile(disk, part)): + category, subcategory, server, origin = line.split(" ", 3) + report_sizechange(disk, part, category, subcategory) + +def main(): + for spec in sys.argv[1:]: + disk, part = spec.split("/") + report_partition_sizechange(int(disk), int(part)) + +if __name__ == '__main__': + main() -- GitLab