74 my $db = connectDB(\%h, $_); |
74 my $db = connectDB(\%h, $_); |
75 print "# $db\n"; |
75 print "# $db\n"; |
76 iterate( |
76 iterate( |
77 %h, |
77 %h, |
78 sub { |
78 sub { |
79 my ($item, $v0, $v1, $c) = @_; |
79 my ($item, $v0, $v1, $c, $flag) = @_; |
80 printf "$item: $v0 $v1 $c (%s %s)\n", |
80 printf "$item: $v0 $v1 $c (%s %s)%s\n", |
81 strftime("%FT%T", localtime($v0)), |
81 strftime("%FT%T", localtime($v0)), |
82 strftime("%FT%T", localtime($v1)); |
82 strftime("%FT%T", localtime($v1)), |
|
83 $flag ? " $flag" : ""; |
83 } |
84 } |
84 ); |
85 ); |
85 print "\n" if @ARGV; |
86 print "\n" if @ARGV; |
86 } |
87 } |
87 exit 0; |
88 exit 0; |
90 if ($opt_stats) { |
91 if ($opt_stats) { |
91 foreach (@ARGV = getDBs(@ARGV)) { |
92 foreach (@ARGV = getDBs(@ARGV)) { |
92 my %h; |
93 my %h; |
93 my $db = connectDB(\%h, $_); |
94 my $db = connectDB(\%h, $_); |
94 |
95 |
95 my ($seen, $returned, $oldest_c, $oldest_u); |
96 my ($seen, $returned, $oldest_c, $oldest_u, $auto); |
96 $seen = $returned = 0; |
97 $seen = $returned = 0; |
97 $oldest_c = $oldest_u = time(); |
98 $oldest_c = $oldest_u = time(); |
98 iterate( |
99 iterate( |
99 %h, |
100 %h, |
100 sub { |
101 sub { |
101 my ($item, $v0, $v1, $c) = @_; |
102 my ($item, $v0, $v1, $c, $flags) = @_; |
102 ++$seen; |
103 if ($flags//'' eq 'auto') { |
103 ++$returned if $v0 != $v1; # soon it can be $c |
104 ++$auto; |
104 $oldest_c = $v0 if $v0 < $oldest_c; |
105 return; |
105 $oldest_u = $v1 if $v1 < $oldest_u; |
106 } |
|
107 ++$seen; |
|
108 ++$returned if $v0 != $v1; # soon it can be $c |
|
109 $oldest_c = $v0 if $v0 < $oldest_c; |
|
110 $oldest_u = $v1 if $v1 < $oldest_u; |
|
111 return; |
106 } |
112 } |
107 ); |
113 ); |
108 |
114 |
109 $_ = <<__; |
115 $_ = <<__; |
110 date: %s |
116 date: %s |
111 db: $db (ls: %.1f MB / du: %.1f MB) |
117 db: $db (ls: %.1f MB / du: %.1f MB) |
112 total: $seen (100%%) |
118 total: $seen (100%%) |
113 returned: %*d (%3d%%) |
119 returned: %*d (%3d%%) |
114 not returned: %*d (%3d%%) |
120 not returned: %*d (%3d%%) |
115 oldest (created): %.1f days (%s) |
121 auto white listed: %*d |
116 oldest (used): %.1f days (%s) |
122 oldest (created): %.1f days (%s) |
|
123 oldest (used): %.1f days (%s) |
117 __ |
124 __ |
118 printf $_, scalar(localtime), (-s $db) / (1024 * 1024), |
125 printf $_, scalar(localtime), (-s $db) / (1024 * 1024), |
119 ((stat $db)[12] * 512) / (1024 * 1024), length($seen), $returned, |
126 ((stat $db)[12] * 512) / (1024 * 1024), |
120 int(0.5 + 100 * ($returned / $seen)), length($seen), |
127 length($seen), $returned, int(0.5 + 100 * ($returned / $seen)), # returned |
121 $seen - $returned, int(0.5 + 100 * ($seen - $returned) / $seen), |
128 length($seen), $seen - $returned, int(0.5 + 100 * ($seen - $returned) / $seen), # not returned |
|
129 length($seen), $auto, # auto white |
122 ((time - $oldest_c) / 86400), scalar(localtime $oldest_c), |
130 ((time - $oldest_c) / 86400), scalar(localtime $oldest_c), |
123 ((time - $oldest_u) / 86400), scalar(localtime $oldest_u); |
131 ((time - $oldest_u) / 86400), scalar(localtime $oldest_u); |
124 print "\n" if @ARGV; |
132 print "\n" if @ARGV; |
125 |
133 |
126 } |
134 } |
189 grep { !/\.lock$/ } grep { -f -s } |
198 grep { !/\.lock$/ } grep { -f -s } |
190 map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*"; |
199 map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*"; |
191 } |
200 } |
192 |
201 |
193 # Helper to iterate over our hash and call the passed |
202 # Helper to iterate over our hash and call the passed |
194 # "callback" function (item, v0, v1, count) |
203 # "callback" function (item, v0, v1, count, flags) |
195 sub iterate(\%$) { |
204 sub iterate(\%$) { |
196 my ($hash, $sub) = @_; |
205 my ($hash, $sub) = @_; |
197 while (my ($k, $v) = each %$hash) { |
206 while (my ($k, $v) = each %$hash) { |
198 chop($k, $v); |
207 chop($k, $v); |
199 &$sub($k, (split(" ", $v), 0)[ 0 .. 2 ]); # 0 for filling |
208 &$sub($k, (split(' ', $v), 0, 0)[ 0 .. 3 ]); # 0 for filling |
200 } |
209 } |
201 } |
210 } |
202 |
211 |
203 # vim:ft=perl aw sts=4 sw=4: |
212 # vim:ft=perl aw sts=4 sw=4: |