Bacula-users

Re: [Bacula-users] Volumes are not being recycled?

2016-02-18 02:46:21
Subject: Re: [Bacula-users] Volumes are not being recycled?
From: Kern Sibbald <kern AT sibbald DOT com>
To: Wanderlei Huttel <wanderleihuttel AT gmail DOT com>, Heitor Faria <heitor AT bacula.com DOT br>
Date: Thu, 18 Feb 2016 17:40:50 +1000
Hello,

Yes, it is the list_result() function in src/cats/sql.c that is a very 
generic routine for outputting "list" results.  I personally cannot be 
of much help, but there are a good number of SQL experts using Bacula.

Best regards,
Kern

On 02/18/2016 10:29 AM, Wanderlei Huttel wrote:
> Hello Guys
>
> I was trying to create a function to convert seconds and bytes to more
> "human readable".
> If I'm right, the file that shows information in bconsole is
> src/cats/sql.c, function list_result.
>
> How the function list_result didn't check the name of fields, I guess is
> necessary to check the name of fields to implement this features, but I
> don't know where can I start. Any tips?
>
>
> if ( (strcasecmp(field->name, "VolRetention") == 0 ) ) {
>    ...
> }
>
>
> ###########################################################################################
> #include "stdio.h"
> #include "stdlib.h"
> #include "math.h"
>
> char* seconds_to_humanreadable(float seconds, char *buf);
>
> int main (int argc, char *argv[]){
>      char buf[32];
>      float seconds;
>      int i = 1;
>      while( i < argc){
>          seconds = atof(argv[i]);
>          printf("%s\n", seconds_to_humanread( seconds, buf) );
>          i++;
>      }
> } /* end main */
>
>
> char* seconds_to_humanreadable(float seconds, char *buf) {
>      if (seconds < 60) {
>            sprintf(buf, "%.2f seconds", seconds);
>      }
>      else if (seconds >= 60 && seconds < 3600){
>            sprintf(buf, "%.2f minutes", seconds/60);
>      }
>      else if (seconds >= 3600 && seconds < 86400){
>            sprintf(buf, "%.2f hours", seconds/3600);
>      }
>      else if( seconds >= 86400 && seconds < 2628000){
>            sprintf(buf, "%.2f days", seconds/86400);
>      }
>      else if( seconds >= 2628000 && seconds <= 31536000){
>            sprintf(buf, "%.2f months", seconds/2628000);
>      }
>      else if(seconds > 31536000){
>            sprintf(buf, "%.2f years", seconds/31536000);
>      }
>      else{
>            sprintf(buf, "0");
>      }
>      return buf;
> } /*end function */
> ###########################################################################################
>
> #include "stdio.h"
> #include "stdlib.h"
> #include "math.h"
> #include "string.h"
>
> char* bytes_to_humanreadable(float bytes, char *buf);
>
> int main (int argc, char *argv[]){
>      char buf[32];
>      float bytes;
>      int i = 1;
>      while( i < argc){
>         bytes = atof(argv[i]);
>         printf("%s\n", bytes_to_humanread( bytes, buf) );
>         i++;
>      } /* end while */
> } /* end main */
>
>
> char* bytes_to_humanreadable(float bytes, char *buf) {
>      int i = 0;
>      const char* unit[] = {" ", "KB", "MB", "GB", "TB", "PB", "EB",
> "ZB", "YB", "BB"};
>
>      while( true ){
>         if ( bytes < 1024 ){
>            sprintf(buf, "%.2f %s", bytes, unit[i]);
>            return buf;
>         }
>         bytes = bytes / 1024;
>         i++;
>      } /* end while */
> } /*end function */
> ###########################################################################################
>
> Atenciosamente
>
> *Nome */|/***Wanderlei Hüttel*
> *Blog*  | http://www.huttel.com.br
>
>
>
> 2016-02-17 20:25 GMT-02:00 Heitor Faria <heitor AT bacula.com DOT br
> <mailto:heitor AT bacula.com DOT br>>:
>
>     Kern,
>
>     Sorry for the dumb question but could not bconsole make the values
>     conversion in similar way to this shell script bytes conversion
>     snippet before printing?
>
>     xargs -i echo 'scale=2; {}/1073741824' | bc
>
>     May it would be a more database independent approach.
>
>     Regards,
>     
> ===========================================================================
>
>     Heitor Medrado de Faria - LPIC-III | ITIL-F |  Bacula Systems
>     Certified Administrator II
>     Do you need Bacula training?
>     <http://bacula.us/video-classes>http://bacula.us/video-classes/
>     +55 61 8268-4220 <tel:%2B55%2061%208268-4220>
>     Site: <http://bacula.us>http://bacula.us FB: heitor.faria
>     
> ===========================================================================
>
>
>     Enviado por TypeApp <http://www.typeapp.com/r>
>
>     Em 17 de fev de 2016, em 20:05, Kern Sibbald <kern AT sibbald DOT com
>     <mailto:kern AT sibbald DOT com>> escreveu:
>
>         Hello Ana (and Heitor),
>
>         Please note that at the current time, the list command is
>         generic, and
>         thus it only knows how to print character strings that have been
>         returned by the SQL engine. Though there may be some way to tell
>         SQL
>         that the result we get for expiresin is a "duration" (note: very
>         different from a date such as LastWritten), I do not know how to
>         do it.
>
>         Thus for the moment, we are limited to displaying SQL generated
>         character strings in the form that SQL gives them to us.
>
>         The main point of the new expiresin field is that it is not
>         zero, the
>         retention period has not expired. If it is a big positive number
>         (number of seconds remaining before the volume expires), then
>         the Volume
>         will not be recycled.
>
>         Many people forget that the retention period *begins* from the
>         LastWritten time, which means that as long as you are writing on
>         the
>         Volume, nothing will be expired. Maybe devoting a bit of thought to
>         that particular point, and what would happen if we changed it,
>         would
>         make retention periods easier to understand.
>
>         Best regards,
>         Kern
>
>         On 02/16/2016 07:19 PM, Ana Emília M. Arruda wrote:
>
>             Hello Kern and Heitor,
>
>             I can see the ExpiresIn field in Bacula 7.4.0 version.
>             Maybe the ExpiresIn value could be more useful if displayed
>             in the same
>             format as the LastWritten field.
>
>             Best regards,
>             Ana
>
>             On Tue, Feb 16, 2016 at 2:46 AM, Heitor Faria
>             <heitor AT bacula.com DOT br <mailto:heitor AT bacula.com DOT br>
>             <mailto:heitor AT bacula.com DOT br <mailto:heitor AT bacula.com 
> DOT br>>>
>             wrote:
>
>                         Recently I got tired of doing the mental
>                         gymnastics to see when Volumes
>                         will expire and with Eric's SQL help, we
>                         modified the list (and llist)
>                         media output to eliminate one or two of the
>                         columns in the case of list
>                         media, but to add an "expiresin" field, which
>                         makes it much easier to
>                         see when a volume will expire.
>
>                         This code has been in the public git repository
>                         in Branch-7.4 along with
>                         a number of bug fixes since the 7.4.0 release.
>                         If you are interested in
>                         simplifying the Volume expiration mind
>                         gymnastics you might checkout and
>                         try the new code.
>
>                         By the way, I thought that the above feature was
>                         added after the 7.4.0
>                         release, but according to what I see in the
>                         repo, much to my surprise it
>                         should also be in the released 7.4.0 version.
>
>                         I would be interested in any feedback.
>
>
>                     Hello, Kern: this feature is great and I'm thankful
>                     for it, but is there a way
>                     to make information human readable?
>
>
>                 What do you mean?
>
>                 Please show me what you currently see and what you
>                 prefer to see.
>
>
>             Hello, Kern: sorry for being laconic.
>             When I mean "human readable" is in the sense of ls, df and other
>             Linux commands:
>
>             "-h, --human-readable
>             print sizes in human readable format (e.g., 1K 234M 2G)"
>
>             *What I see today:*
>
>             *list media pool=File
>             
> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>             | MediaId | VolumeName | VolStatus | Enabled | VolBytes |
>             VolFiles | VolRetention | Recycle | Slot | InChanger |
>             MediaType |
>             LastWritten | ExpiresIn |
>             
> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>             | 1 | Vol-0001 | Error | 1 | 1,286,119,412 |
>             0 | 31,536,000 | 1 | 0 | 0 | File1 |
>             2015-10-21 23:57:35 | 21,428,702 |
>             
> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>
>             *What I think would make the user life easier:*
>
>             *list media pool=File human
>             
> +---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>             | MediaId | VolumeName | VolStatus | Enabled | VolBytes |
>             VolFiles |
>             VolRetention | Recycle | Slot | InChanger | MediaType |
>             LastWritten
>             | ExpiresIn |
>             
> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>             | 1 | Vol-0001 | Error | 1 | 1,29 GB | 0
>             | 31,536,000 | 1 | 0 | 0 | File1 | 2015-10-21
>             23:57:35 | 248 days |
>             
> +---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>
>                 Best regards,
>                 Kern
>
>
>             Regards,
>             --
>             
> ------------------------------------------------------------------------
>
>             Heitor Medrado de Faria - LPIC-III | ITIL-F | Bacula Systems
>             Certified Administrator II
>             Do you need Bacula training? http://bacula.us/video-classes/
>             +55 61 8268-4220 <tel:%2B55%2061%208268-4220>
>             <tel:%2B55%2061%208268-4220>
>             Site: http://bacula.us FB: heitor.faria
>             
> ------------------------------------------------------------------------
>
>
>             
> ------------------------------------------------------------------------
>
>             Site24x7 APM Insight: Get Deep Visibility into Application
>             Performance
>             APM + Mobile APM + RUM: Monitor 3 App instances at just
>             $35/Month
>             Monitor end-to-end web transactions and take corrective
>             actions now
>             Troubleshoot faster and improve end-user experience. Signup Now!
>             http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>             
> ------------------------------------------------------------------------
>
>             Bacula-users mailing list
>             Bacula-users AT lists.sourceforge DOT net
>             <mailto:Bacula-users AT lists.sourceforge DOT net>
>             <mailto:Bacula-users AT lists.sourceforge DOT net
>             <mailto:Bacula-users AT lists.sourceforge DOT net>>
>             https://lists.sourceforge.net/lists/listinfo/bacula-users
>
>
>
>
>     
> ------------------------------------------------------------------------------
>     Site24x7 APM Insight: Get Deep Visibility into Application Performance
>     APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>     Monitor end-to-end web transactions and take corrective actions now
>     Troubleshoot faster and improve end-user experience. Signup Now!
>     http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>     _______________________________________________
>     Bacula-users mailing list
>     Bacula-users AT lists.sourceforge DOT net
>     <mailto:Bacula-users AT lists.sourceforge DOT net>
>     https://lists.sourceforge.net/lists/listinfo/bacula-users
>
>

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users