diff options
author | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-05-25 20:38:21 +0000 |
---|---|---|
committer | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-05-25 20:38:21 +0000 |
commit | 1d050174970945c986f6c4f1c0b9cf922fd24bc2 (patch) | |
tree | cbf759920e7915c0e752a002edcd260160ebbf34 /rdiff-backup/rdiff_backup | |
parent | 7a82871f7b6d25464516dd659f3e98cc56211ff1 (diff) | |
download | rdiff-backup-1d050174970945c986f6c4f1c0b9cf922fd24bc2.tar.gz |
Final update of statistics stuff
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@109 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup')
-rw-r--r-- | rdiff-backup/rdiff_backup/header.py | 2 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/highlevel.py | 17 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/statistics.py | 19 |
3 files changed, 36 insertions, 2 deletions
diff --git a/rdiff-backup/rdiff_backup/header.py b/rdiff-backup/rdiff_backup/header.py index 16ad128..9ca40d2 100644 --- a/rdiff-backup/rdiff_backup/header.py +++ b/rdiff-backup/rdiff_backup/header.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # # rdiff-backup -- Mirror files while keeping incremental changes -# Version 0.7.5 released May 21, 2002 +# Version 0.7.5.1 released May 25, 2002 # Copyright (C) 2001, 2002 Ben Escoto <bescoto@stanford.edu> # # This program is licensed under the GNU General Public License (GPL). diff --git a/rdiff-backup/rdiff_backup/highlevel.py b/rdiff-backup/rdiff_backup/highlevel.py index cc1335c..a9e5ce2 100644 --- a/rdiff-backup/rdiff_backup/highlevel.py +++ b/rdiff-backup/rdiff_backup/highlevel.py @@ -262,6 +262,7 @@ class HLDestinationStruct: cls.check_skip_error(finalizer.Finish, dsrp) except: cls.handle_last_error(dsrp, finalizer, ITR) if Globals.preserve_hardlinks: Hardlink.final_writedata() + cls.write_statistics(ITR) SaveState.checkpoint_remove() def patch_increment_and_finalize(cls, dest_rpath, diffs, inc_rpath): @@ -291,6 +292,7 @@ class HLDestinationStruct: cls.check_skip_error(finalizer.Finish, dsrp) except: cls.handle_last_error(dsrp, finalizer, ITR) if Globals.preserve_hardlinks: Hardlink.final_writedata() + cls.write_statistics(ITR) SaveState.checkpoint_remove() def check_skip_error(cls, thunk, dsrp): @@ -321,4 +323,19 @@ class HLDestinationStruct: SaveState.touch_last_file_definitive() raise + def write_statistics(cls, ITR): + """Write session statistics to file, log""" + stat_inc = Inc.get_inc(Globals.rbdir.append("session_statistics"), + Time.curtime, "data") + ITR.StartTime = Time.curtime + ITR.EndTime = time.time() + if Globals.preserve_hardlinks and Hardlink.final_inc: + # include hardlink data in size of increments + ITR.IncrementFileSize += Hardlink.final_inc.getsize() + ITR.write_stats_to_rp(stat_inc) + if Globals.print_statistics: + message = ITR.get_stats_logstring("Session statistics") + Log.log_to_file(message) + Globals.client_conn.sys.stdout.write(message) + MakeClass(HLDestinationStruct) diff --git a/rdiff-backup/rdiff_backup/statistics.py b/rdiff-backup/rdiff_backup/statistics.py index 40eb184..8269456 100644 --- a/rdiff-backup/rdiff_backup/statistics.py +++ b/rdiff-backup/rdiff_backup/statistics.py @@ -54,6 +54,12 @@ class StatsObj: if self.get_stat(attr) is not None] return "".join(timelist + filelist) + def get_stats_logstring(self, title): + """Like get_stats_string, but add header and footer""" + header = "-------------[ %s ]-------------" % title + footer = "-" * len(header) + return "%s\n%s%s\n" % (header, self.get_stats_string(), footer) + def init_stats_from_string(self, s): """Initialize attributes from string, return self for convenience""" def error(line): raise StatsException("Bad line '%s'" % line) @@ -64,7 +70,12 @@ class StatsObj: if len(line_parts) < 2: error(line) attr, value_string = line_parts[:2] if not attr in self.stat_attrs: error(line) - try: self.set_stat(attr, long(value_string)) + try: + try: val1 = long(value_string) + except ValueError: val1 = None + val2 = float(value_string) + if val1 == val2: self.set_stat(attr, val1) # use integer val + else: self.set_stat(attr, val2) # use float except ValueError: error(line) return self @@ -111,6 +122,12 @@ class StatsObj: self.get_stat(attr)/float(len(statobj_list))) return self + def get_statsobj_copy(self): + """Return new StatsObj object with same stats as self""" + s = StatObj() + for attr in self.stat_attrs: s.set_stat(attr, self.get_stat(attr)) + return s + class StatsITR(IterTreeReducer, StatsObj): """Keep track of per directory statistics |