From: Michael Vrable Date: Sat, 7 Jul 2007 21:02:56 +0000 (-0700) Subject: Dump statistics of data written at the end of a backup run. X-Git-Url: https://git.vrable.net/?a=commitdiff_plain;h=82025c010191040717501135d2758db7f5e9fa62;p=cumulus.git Dump statistics of data written at the end of a backup run. --- diff --git a/scandir.cc b/scandir.cc index b96b1d3..10972cd 100644 --- a/scandir.cc +++ b/scandir.cc @@ -550,6 +550,7 @@ int main(int argc, char *argv[]) delete statcache; tss->sync(); + tss->dump_stats(); delete tss; /* Write a backup descriptor file, which says which segments are needed and diff --git a/store.cc b/store.cc index cf3eea9..eb1c6da 100644 --- a/store.cc +++ b/store.cc @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -27,6 +28,7 @@ using std::max; using std::list; +using std::map; using std::set; using std::string; @@ -194,6 +196,8 @@ size_t Tarfile::size_estimate() static const size_t SEGMENT_SIZE = 4 * 1024 * 1024; +static map group_sizes; + ObjectReference TarSegmentStore::write_object(const char *data, size_t len, const std::string &group) { @@ -224,6 +228,8 @@ ObjectReference TarSegmentStore::write_object(const char *data, size_t len, segment->file->write_object(id, data, len); segment->count++; + group_sizes[group] += len; + ObjectReference ref(segment->name, id_buf); // If this segment meets or exceeds the size target, close it so that @@ -240,6 +246,15 @@ void TarSegmentStore::sync() close_segment(segments.begin()->first); } +void TarSegmentStore::dump_stats() +{ + printf("Data written:\n"); + for (map::iterator i = group_sizes.begin(); + i != group_sizes.end(); ++i) { + printf(" %s: %lld\n", i->first.c_str(), i->second); + } +} + void TarSegmentStore::close_segment(const string &group) { struct segment_info *segment = segments[group]; diff --git a/store.h b/store.h index 72fde52..1fd366b 100644 --- a/store.h +++ b/store.h @@ -84,6 +84,9 @@ public: // Ensure all segments have been fully written. void sync(); + // Dump statistics to stdout about how much data has been written + void dump_stats(); + private: struct segment_info { Tarfile *file;