idinfo: Implement terse mode output - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 6499f2d353ff8cc5cffeb336cee6c8dbf20679c2 /scm/dedup/commit/6499f2d353ff8cc5cffeb336cee6c8dbf20679c2.gph bitreich.org 70 1parent 27bf6699242c15fb69fcb20f5afcf46665902fa5 /scm/dedup/commit/27bf6699242c15fb69fcb20f5afcf46665902fa5.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Thu, 18 Apr 2019 11:36:14 +0100 Err bitreich.org 70 i Err bitreich.org 70 idinfo: Implement terse mode output Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dinfo.1 | 16 ++++++++++++++-- Err bitreich.org 70 i M dinfo.c | 67 +++++++++++++++++++------------ Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 56 insertions(+), 27 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dinfo.1 b/dinfo.1 /scm/dedup/file/dinfo.1.gph bitreich.org 70 i@@ -1,4 +1,4 @@ Err bitreich.org 70 i-.Dd April 17, 2019 Err bitreich.org 70 i+.Dd April 18, 2019 Err bitreich.org 70 i .Dt DINFO 1 Err bitreich.org 70 i .Os Err bitreich.org 70 i .Sh NAME Err bitreich.org 70 i@@ -6,7 +6,7 @@ Err bitreich.org 70 i .Nd Print information about a dedup repository Err bitreich.org 70 i .Sh SYNOPSIS Err bitreich.org 70 i .Nm dinfo Err bitreich.org 70 i-.Op Fl v Err bitreich.org 70 i+.Op Fl tv Err bitreich.org 70 i .Op repo Err bitreich.org 70 i .Sh DESCRIPTION Err bitreich.org 70 i .Nm Err bitreich.org 70 i@@ -17,6 +17,18 @@ is specified, then the current directory Err bitreich.org 70 i is assumed to be the repository. Err bitreich.org 70 i .Sh OPTIONS Err bitreich.org 70 i .Bl -tag -width "-v" Err bitreich.org 70 i+.It Fl t Err bitreich.org 70 i+Enable terse mode. Err bitreich.org 70 i+The output fields are as follows: Err bitreich.org 70 i+.br Err bitreich.org 70 i+[original dataset size] Err bitreich.org 70 i+[compressed dataset size] Err bitreich.org 70 i+[deduplicated dataset size] Err bitreich.org 70 i+[deduplication ratio] Err bitreich.org 70 i+[min block size] Err bitreich.org 70 i+[average block size] Err bitreich.org 70 i+[max block size] Err bitreich.org 70 i+[number of unique blocks] Err bitreich.org 70 i .It Fl v Err bitreich.org 70 i Enable verbose mode. Err bitreich.org 70 i .El Err bitreich.org 70 1diff --git a/dinfo.c b/dinfo.c /scm/dedup/file/dinfo.c.gph bitreich.org 70 i@@ -25,32 +25,45 @@ int verbose; Err bitreich.org 70 i char *argv0; Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-print_info(void) Err bitreich.org 70 i+print_info(int tflag) Err bitreich.org 70 i { Err bitreich.org 70 i struct stats *st = &snap_hdr.st; Err bitreich.org 70 i Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- if (st->nr_blks == 0) Err bitreich.org 70 i- return; Err bitreich.org 70 i- Err bitreich.org 70 i- fprintf(stderr, "Original size: %llu bytes\n", Err bitreich.org 70 i- (unsigned long long)st->orig_size); Err bitreich.org 70 i- fprintf(stderr, "Compressed size: %llu bytes\n", Err bitreich.org 70 i- (unsigned long long)st->compr_size); Err bitreich.org 70 i- fprintf(stderr, "Deduplicated size: %llu bytes\n", Err bitreich.org 70 i- (unsigned long long)st->dedup_size); Err bitreich.org 70 i- fprintf(stderr, "Deduplication ratio: %.2f\n", Err bitreich.org 70 i- (double)st->orig_size / st->dedup_size); Err bitreich.org 70 i- fprintf(stderr, "Min/avg/max block size: %llu/%llu/%llu bytes\n", Err bitreich.org 70 i- (unsigned long long)st->min_blk_size, Err bitreich.org 70 i- (unsigned long long)st->dedup_size / st->nr_blks, Err bitreich.org 70 i- (unsigned long long)st->max_blk_size); Err bitreich.org 70 i- fprintf(stderr, "Number of unique blocks: %llu\n", Err bitreich.org 70 i- (unsigned long long)st->nr_blks); Err bitreich.org 70 i+ if (!tflag) { Err bitreich.org 70 i+ fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i+ compr_type2name(compr_algo)); Err bitreich.org 70 i+ fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i+ hash_type2name(hash_algo)); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (st->nr_blks == 0) Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fprintf(stderr, "Original size: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)st->orig_size); Err bitreich.org 70 i+ fprintf(stderr, "Compressed size: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)st->compr_size); Err bitreich.org 70 i+ fprintf(stderr, "Deduplicated size: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)st->dedup_size); Err bitreich.org 70 i+ fprintf(stderr, "Deduplication ratio: %.2f\n", Err bitreich.org 70 i+ (double)st->orig_size / st->dedup_size); Err bitreich.org 70 i+ fprintf(stderr, "Min/avg/max block size: %llu/%llu/%llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)st->min_blk_size, Err bitreich.org 70 i+ (unsigned long long)st->dedup_size / st->nr_blks, Err bitreich.org 70 i+ (unsigned long long)st->max_blk_size); Err bitreich.org 70 i+ fprintf(stderr, "Number of unique blocks: %llu\n", Err bitreich.org 70 i+ (unsigned long long)st->nr_blks); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ /* terse mode */ Err bitreich.org 70 i+ fprintf(stderr, "%llu %llu %llu %.2f %llu %llu %llu %llu\n", Err bitreich.org 70 i+ (unsigned long long)st->orig_size, Err bitreich.org 70 i+ (unsigned long long)st->compr_size, Err bitreich.org 70 i+ (unsigned long long)st->dedup_size, Err bitreich.org 70 i+ (double)st->orig_size / st->dedup_size, Err bitreich.org 70 i+ (unsigned long long)st->min_blk_size, Err bitreich.org 70 i+ (unsigned long long)st->dedup_size / st->nr_blks, Err bitreich.org 70 i+ (unsigned long long)st->max_blk_size, Err bitreich.org 70 i+ (unsigned long long)st->nr_blks); Err bitreich.org 70 i+ } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i@@ -84,7 +97,7 @@ term(void) Err bitreich.org 70 i static void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i- fprintf(stderr, "usage: %s [-v] [repo]\n", argv0); Err bitreich.org 70 i+ fprintf(stderr, "usage: %s [-tv] [repo]\n", argv0); Err bitreich.org 70 i exit(1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -92,8 +105,12 @@ int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i char *repo = NULL; Err bitreich.org 70 i+ int tflag = 0; Err bitreich.org 70 i Err bitreich.org 70 i ARGBEGIN { Err bitreich.org 70 i+ case 't': Err bitreich.org 70 i+ tflag = 1; Err bitreich.org 70 i+ break; Err bitreich.org 70 i case 'v': Err bitreich.org 70 i verbose++; Err bitreich.org 70 i break; Err bitreich.org 70 i@@ -116,7 +133,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i err(1, "chdir: %s", repo); Err bitreich.org 70 i Err bitreich.org 70 i init(); Err bitreich.org 70 i- print_info(); Err bitreich.org 70 i+ print_info(tflag); Err bitreich.org 70 i term(); Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 .