Re: [Bacula-users] file listing?

2011-03-15 Thread Kjetil Torgrim Homme
I wrote a script to do this for me, I call it bacula-du, since it
accepts many of the same options as du(1), and the output is the same.

Usage: bacula-du [OPTIONS] -j JOBID
Summarize disk usage of directories included in the backup JOBID

Options are:
  -a, --all write counts for all files, not just directories
  -b, --bytes   use size in octets rather than number of blocks
  -B, --block-size=SIZE report SIZE-byte blocks (default 1Ki)
  -mlike --block-size=1Mi
  -S, --separate-dirs   do not include size of subdirectories
  -t, --threshold=SIZE  skip output for files or directories with usage
below SIZE
  -L, --largest=NUM only print NUM largest directories/files

SIZE may be (or may be an integer optionally followed by) one of following:
k (1000), Ki (1024), M (1000*1000), Mi (1024*1024), G, Gi, T, Ti, P, Pi.

I hope others can find it useful.
-- 
Kjetil T. Homme
Redpill Linpro AS - Changing the game
#! /usr/bin/perl -w

# bacula-du 1.0
# Written by Kjetil Torgrim Homme kjetil.ho...@redpill-linpro.com
# Released under GPLv3 or the same terms as Bacula itself

sub usage {
print _END_;
Usage: $0 [OPTIONS] -j JOBID
Summarize disk usage of directories included in the backup JOBID

Options are:
  -a, --all write counts for all files, not just directories
  -b, --bytes   use size in octets rather than number of blocks
  -B, --block-size=SIZE report SIZE-byte blocks (default 1Ki)
  -mlike --block-size=1Mi
  -S, --separate-dirs   do not include size of subdirectories
  -t, --threshold=SIZE  skip output for files or directories with usage
below SIZE
  -L, --largest=NUM only print NUM largest directories/files

SIZE may be (or may be an integer optionally followed by) one of following:
k (1000), Ki (1024), M (1000*1000), Mi (1024*1024), G, Gi, T, Ti, P, Pi.
_END_
   exit(64);
}

use strict;
use DBD::mysql;
use DBI;
use MIME::Base64;
use Getopt::Long qw(:config bundling no_ignore_case);
use Data::Dumper;

my $dbhost = localhost;
my $db = bacula;
my $dsn = DBI:Pg:dbname=$db;host=$dbhost;
my $dbuser = postgres;
my $dbpass = ;
# Suggestion for MySQL:
# my $dsn = DBI:mysql:database=mysql;mysql_read_default_group=clientp;
# my $dbuser = mysql;
# my $dbpass = undef;

###

my $i = 0;
my %base64 = map { $_ = $i++ } split(, 
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);

sub decode_bacula_base64 {
my $acc = 0;
for (split(, $_[0])) {
$acc = 6;
$acc += $base64{$_};
}
return $acc;
}

sub extract_size_from_lstat {
return decode_bacula_base64((split( , shift))[7]);
}

sub extract_blocks_from_lstat {
return 512 * decode_bacula_base64((split( , shift))[9]);
}

sub convert_units {
my $num = shift;

my %units = (k = 1000**1, Ki = 1024**1, ki = 1024**1,
 M = 1000**2, Mi = 1024**2,
 G = 1000**3, Gi = 1024**3,
 T = 1000**4, Ti = 1024**4,
 P = 1000**5, Pi = 1024**5);

if ($num =~ /^(\d*)([kKMGTP]i?)B?$/) {
$num = ($1 ? $1 : 1) * $units{$2};
} elsif ($num !~ /^\d+$/) {
die Can't parse: $num\n;
}
return $num;
}

### main program resumes

my $threshold = 1; # omit 0 octet sized files/directories by default
my $blocksize = 1024;
my ($jobid, $all, $bytes, $separate_dirs, $largest);

GetOptions(jobid|j=i = \$jobid,
   threshold|t=s = \$threshold,
   separate-dirs|S = \$separate_dirs,
   all|a = \$all,
   bytes|b = \$bytes,
   block-size|B=s = \$blocksize,
   largest|L=i = \$largest,
   m = sub { $blocksize = 1Mi },
) || usage();

usage() unless $jobid;

$threshold = convert_units($threshold);
$blocksize = convert_units($blocksize);


my @padding = (, A==, ==, =);

sub extract_size_from_lstat_foo {
my ($b64) = (split( , shift))[7];

my $acc = 0;
for (split(, decode_base64($b64 . $padding[length($b64) % 4]))) {
$acc = 8;
$acc += ord($_);
}
return $acc;
}

my $extract_size = $bytes
? \extract_size_from_lstat
: \extract_blocks_from_lstat;

my $dbh;
unless ($dbh = DBI-connect($dsn, $dbuser, $dbpass, {AutoCommit = 0})) {
print STDERR Could not connect to database $db on host $dbhost\n;
exit 2;
}

my $sth = $dbh-prepare(
   SELECT p.Path, fn.Name, LStat
   FROM Path p
 JOIN File f ON f.PathId = p.PathId
 JOIN Filename fn ON f.FilenameId = fn.FilenameId
   WHERE f.JobId = $jobid);
$sth-execute();

my %du;
my $rowcount = 0;
while (my ($path, $fname, $lstat) = $sth-fetchrow_array) {
my $size = $extract_size-($lstat);
# print STDERR Got '$path' size $size\n;
$du{$path$fname} += $size if $all;
$du{$path} += $size;
next if $separate_dirs;
while ($path ne '/') {
$path =~ s,[^/]+/$,,;
$du{$path} += $size;
}
if ((++$rowcount % 1000) == 0) {
print STDERR got $rowcount 

Re: [Bacula-users] file listing?

2011-03-15 Thread Phil Stracchino
On 03/15/11 12:41, Kjetil Torgrim Homme wrote:
 I wrote a script to do this for me, I call it bacula-du, since it
 accepts many of the same options as du(1), and the output is the same.
 
 Usage: bacula-du [OPTIONS] -j JOBID
 Summarize disk usage of directories included in the backup JOBID
 
 Options are:
   -a, --all write counts for all files, not just directories
   -b, --bytes   use size in octets rather than number of blocks
   -B, --block-size=SIZE report SIZE-byte blocks (default 1Ki)
   -mlike --block-size=1Mi
   -S, --separate-dirs   do not include size of subdirectories
   -t, --threshold=SIZE  skip output for files or directories with usage
 below SIZE
   -L, --largest=NUM only print NUM largest directories/files
 
 SIZE may be (or may be an integer optionally followed by) one of following:
 k (1000), Ki (1024), M (1000*1000), Mi (1024*1024), G, Gi, T, Ti, P, Pi.
 
 I hope others can find it useful.

Kjetil,
Thanks, this looks like a useful tool.  I'm forwarding your post to the
bacula-devel list to make sure folks there see it too.


-- 
  Phil Stracchino, CDK#2 DoD#299792458 ICBM: 43.5607, -71.355
  ala...@caerllewys.net   ala...@metrocast.net   p...@co.ordinate.org
  Renaissance Man, Unix ronin, Perl hacker, SQL wrangler, Free Stater
 It's not the years, it's the mileage.

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-15 Thread Dan Langille
On 3/15/2011 12:41 PM, Kjetil Torgrim Homme wrote:
 I wrote a script to do this for me, I call it bacula-du, since it
 accepts many of the same options as du(1), and the output is the same.

 Usage: bacula-du [OPTIONS] -j JOBID
 Summarize disk usage of directories included in the backup JOBID

 Options are:
-a, --all write counts for all files, not just directories
-b, --bytes   use size in octets rather than number of blocks
-B, --block-size=SIZE report SIZE-byte blocks (default 1Ki)
-mlike --block-size=1Mi
-S, --separate-dirs   do not include size of subdirectories
-t, --threshold=SIZE  skip output for files or directories with usage
  below SIZE
-L, --largest=NUM only print NUM largest directories/files

 SIZE may be (or may be an integer optionally followed by) one of following:
 k (1000), Ki (1024), M (1000*1000), Mi (1024*1024), G, Gi, T, Ti, P, Pi.

 I hope others can find it useful.

Can you give us an example of the output please?

-- 
Dan Langille - http://langille.org/

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-13 Thread Dan Langille
On 3/12/2011 9:33 PM, ganiuszka wrote:
 W dniu 13 marca 2011 01:01 użytkownik Dan Langilled...@langille.org  
 napisał:
 On 3/12/2011 9:29 AM, ganiuszka wrote:

 W dniu 11 marca 2011 21:45 użytkownik ganiuszkaganius...@gmail.com
   napisał:

 Hi,
 In my example jobid is putting in:
 ... File.JobId=8...
 but this eight:

 base64_decode_lstat(8,File.LStat)

 is exactly eight field (encoded filesize field). I seem that you used
 standard base64 decoder to decode eighth field. Am I right?

 Bacula lstat is encoded by using non-standard base64 algorithm. Your
 decoded lstat shows like this:

 [dev] =89
 [inodes] =1366434
 [mode] =33200
 [links] =1
 [uid] =80
 [gid] =91
 [rdev] =5481898
 [size] =315
 [blksize] =16384
 [blocks] =4
 [atime] =1299770037
 [mtime] =1299770037
 [ctime] =1299770066
 [LinkFl] =0
 [flags] =0
 [data] =2

 I do not understand every field, but most fields is clear. Now, I
 wrote implementation of Bacula base64_decoder in PHP. I need finish it
 and make WebGUI for this and I will share this decoder here. For this
 I am using source code of base64 implementation in Bacula and this:

 http://old.nabble.com/The-File.LStat-field-td940366.html

 Regards.
 gani

 2011/3/11 Dan Langilled...@langille.org:

 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried
 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS
 int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 :=
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) *
 (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/






 Hi,

 I wrote the Bacula LStat decoder implementation in PHP. I made WebGUI
 for this also. Now online LStat decoder (beta version) is available on
 my page Bacula.pl:

 http://www.bacula.pl/bacula-lstat-decoder/

 In the near future I need to make description of fields.

 Here is Bacula LStat decoder function in PHP:

 function decode_bacula_lstat($lstat) {
 $base64 =
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 $lstat = trim($lstat);
 $lstat_fields = explode(' ', $lstat);

 if(count($lstat_fields) !== 16) {
 die('Error! Number of lstat fields is invalid. Please make
 sure that
 it is valid lstat string.');
 }

 list($dev, $inode, $mode, $links, $uid, $gid, $rdev, $size,
 $blksize,
 $blocks, $atime, $mtime, $ctime, $linkfi, $flags, $data) =
 $lstat_fields;
 $encoded_values = array('dev' =  $dev, 'inode' =  $inode, 'mode' 
 =
 $mode, 'links' =  $links, 'uid' =  $uid, 'gid' =  $gid, 'rdev' =
 $rdev, 'size' =  $size, 'blksize' =  $blksize, 'blocks' =  $blocks,
 'atime' =  $atime, 'mtime' =  $mtime, 'ctime' =  $ctime, 'linkfi' =
 $linkfi, 'flags' =  $flags, 'data' =  $data);

 $ret = array();
 foreach($encoded_values as $key =  $val) {
 $result = 0;
 $is_minus = false;
 $start = 0;

 if(substr($val, 0, 1) === '-') {
 $is_minus = true;
 $start++;
 }

 for($i = $start; $i  strlen($val); $i++) {
 $result= 6;
 $result +=  strpos($base64, substr($val, $i , 1));
 }
 $ret[$key] = ($is_minus === true) ? -$result : $result;
 }
 return $ret;
 }

 and here is usage for this:

 $lstat = 'gB DL+b IGg B A y A D5dZR BAA fN4 BNeR+z BNeR+7 BNeR+7 A A C';
 $decoded_lstat = decode_bacula_lstat($lstat);
 print_r($decoded_lstat);

 Any suggestions and modifications are welcome.
 Regards
 gani


 I tried this function. I got an 

Re: [Bacula-users] file listing?

2011-03-13 Thread ganiuszka
Hi,

Thank you for feedback again.

Yes, the BCMath module is not in default configuration if you will
compile PHP. In case compilation from sources need to add
--enable-bcmath to configuration parameters.

On some GNU/Linux distributions the BCMath is as default in PHP
(Debian, Slackware) and on some distributions the BCMath need to
install as a module from package apart from the PHP package (for
example Fedora).

Regards.
gani

W dniu 13 marca 2011 21:07 użytkownik Dan Langille d...@langille.org napisał:
 On 3/12/2011 9:33 PM, ganiuszka wrote:

 W dniu 13 marca 2011 01:01 użytkownik Dan Langilled...@langille.org
  napisał:

 On 3/12/2011 9:29 AM, ganiuszka wrote:

 W dniu 11 marca 2011 21:45 użytkownik ganiuszkaganius...@gmail.com
  napisał:

 Hi,
 In my example jobid is putting in:
 ... File.JobId=8...
 but this eight:

 base64_decode_lstat(8,File.LStat)

 is exactly eight field (encoded filesize field). I seem that you used
 standard base64 decoder to decode eighth field. Am I right?

 Bacula lstat is encoded by using non-standard base64 algorithm. Your
 decoded lstat shows like this:

 [dev] =    89
 [inodes] =    1366434
 [mode] =    33200
 [links] =    1
 [uid] =    80
 [gid] =    91
 [rdev] =    5481898
 [size] =    315
 [blksize] =    16384
 [blocks] =    4
 [atime] =    1299770037
 [mtime] =    1299770037
 [ctime] =    1299770066
 [LinkFl] =    0
 [flags] =    0
 [data] =    2

 I do not understand every field, but most fields is clear. Now, I
 wrote implementation of Bacula base64_decoder in PHP. I need finish it
 and make WebGUI for this and I will share this decoder here. For this
 I am using source code of base64 implementation in Bacula and this:

 http://old.nabble.com/The-File.LStat-field-td940366.html

 Regards.
 gani

 2011/3/11 Dan Langilled...@langille.org:

 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried
 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the
 size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS
 int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 :=
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) *
 (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/






 Hi,

 I wrote the Bacula LStat decoder implementation in PHP. I made WebGUI
 for this also. Now online LStat decoder (beta version) is available on
 my page Bacula.pl:

 http://www.bacula.pl/bacula-lstat-decoder/

 In the near future I need to make description of fields.

 Here is Bacula LStat decoder function in PHP:

 function decode_bacula_lstat($lstat) {
        $base64 =
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        $lstat = trim($lstat);
        $lstat_fields = explode(' ', $lstat);

        if(count($lstat_fields) !== 16) {
                die('Error! Number of lstat fields is invalid. Please
 make
 sure that
 it is valid lstat string.');
        }

        list($dev, $inode, $mode, $links, $uid, $gid, $rdev, $size,
 $blksize,
 $blocks, $atime, $mtime, $ctime, $linkfi, $flags, $data) =
 $lstat_fields;
        $encoded_values = array('dev' =  $dev, 'inode' =  $inode,
 'mode' =
 $mode, 'links' =  $links, 'uid' =  $uid, 'gid' =  $gid, 'rdev' =
 $rdev, 'size' =  $size, 'blksize' =  $blksize, 'blocks' =  $blocks,
 'atime' =  $atime, 'mtime' =  $mtime, 'ctime' =  $ctime, 'linkfi' =
 $linkfi, 'flags' =  $flags, 'data' =  $data);

        $ret = array();
        foreach($encoded_values as $key =  $val) {
                $result = 0;
                $is_minus = false;
                $start = 0;

                if(substr($val, 0, 1) === '-') {
                        $is_minus = true;
                        $start++;
                }

                for($i = $start; $i  strlen($val); $i++) {
                        

Re: [Bacula-users] file listing?

2011-03-12 Thread ganiuszka
Hi,

I wrote the Bacula LStat decoder implementation in PHP. I made WebGUI
for this also. Now online LStat decoder (beta version) is available on
my page Bacula.pl:

http://www.bacula.pl/bacula-lstat-decoder/

In the near future I need to make description of fields.

Here is Bacula LStat decoder function in PHP:

function decode_bacula_lstat($lstat) {
$base64 = 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
$lstat = trim($lstat);
$lstat_fields = explode(' ', $lstat);

if(count($lstat_fields) !== 16) {
die('Error! Number of lstat fields is invalid. Please make sure 
that
it is valid lstat string.');
}

list($dev, $inode, $mode, $links, $uid, $gid, $rdev, $size, $blksize,
$blocks, $atime, $mtime, $ctime, $linkfi, $flags, $data) =
$lstat_fields;
$encoded_values = array('dev' = $dev, 'inode' = $inode, 'mode' =
$mode, 'links' = $links, 'uid' = $uid, 'gid' = $gid, 'rdev' =
$rdev, 'size' = $size, 'blksize' = $blksize, 'blocks' = $blocks,
'atime' = $atime, 'mtime' = $mtime, 'ctime' = $ctime, 'linkfi' =
$linkfi, 'flags' = $flags, 'data' = $data);

$ret = array();
foreach($encoded_values as $key = $val) {
$result = 0;
$is_minus = false;
$start = 0;

if(substr($val, 0, 1) === '-') {
$is_minus = true;
$start++;
}

for($i = $start; $i  strlen($val); $i++) {
$result = 6;
$result +=  strpos($base64, substr($val, $i , 1));
}
$ret[$key] = ($is_minus === true) ? -$result : $result;
}
return $ret;
}

and here is usage for this:

$lstat = 'gB DL+b IGg B A y A D5dZR BAA fN4 BNeR+z BNeR+7 BNeR+7 A A C';
$decoded_lstat = decode_bacula_lstat($lstat);
print_r($decoded_lstat);

Any suggestions and modifications are welcome.
Regards
gani


W dniu 11 marca 2011 21:45 użytkownik ganiuszka ganius...@gmail.com napisał:
 Hi,
 In my example jobid is putting in:
 ... File.JobId=8...
 but this eight:

 base64_decode_lstat(8,File.LStat)

 is exactly eight field (encoded filesize field). I seem that you used
 standard base64 decoder to decode eighth field. Am I right?

 Bacula lstat is encoded by using non-standard base64 algorithm. Your
 decoded lstat shows like this:

 [dev] = 89
 [inodes] = 1366434
 [mode] = 33200
 [links] = 1
 [uid] = 80
 [gid] = 91
 [rdev] = 5481898
 [size] = 315
 [blksize] = 16384
 [blocks] = 4
 [atime] = 1299770037
 [mtime] = 1299770037
 [ctime] = 1299770066
 [LinkFl] = 0
 [flags] = 0
 [data] = 2

 I do not understand every field, but most fields is clear. Now, I
 wrote implementation of Bacula base64_decoder in PHP. I need finish it
 and make WebGUI for this and I will share this decoder here. For this
 I am using source code of base64 implementation in Bacula and this:

 http://old.nabble.com/The-File.LStat-field-td940366.html

 Regards.
 gani

 2011/3/11 Dan Langille d...@langille.org:
 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/




-- 
Większej miłości nikt nie ma nad tę, jak gdy kto życie swoje kładzie
za przyjaciół swoich. Jezus Chrystus

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the 

Re: [Bacula-users] file listing?

2011-03-12 Thread Dan Langille
On 3/12/2011 9:29 AM, ganiuszka wrote:
 W dniu 11 marca 2011 21:45 użytkownik ganiuszkaganius...@gmail.com  napisał:
 Hi,
 In my example jobid is putting in:
 ... File.JobId=8...
 but this eight:

 base64_decode_lstat(8,File.LStat)

 is exactly eight field (encoded filesize field). I seem that you used
 standard base64 decoder to decode eighth field. Am I right?

 Bacula lstat is encoded by using non-standard base64 algorithm. Your
 decoded lstat shows like this:

 [dev] =  89
 [inodes] =  1366434
 [mode] =  33200
 [links] =  1
 [uid] =  80
 [gid] =  91
 [rdev] =  5481898
 [size] =  315
 [blksize] =  16384
 [blocks] =  4
 [atime] =  1299770037
 [mtime] =  1299770037
 [ctime] =  1299770066
 [LinkFl] =  0
 [flags] =  0
 [data] =  2

 I do not understand every field, but most fields is clear. Now, I
 wrote implementation of Bacula base64_decoder in PHP. I need finish it
 and make WebGUI for this and I will share this decoder here. For this
 I am using source code of base64 implementation in Bacula and this:

 http://old.nabble.com/The-File.LStat-field-td940366.html

 Regards.
 gani

 2011/3/11 Dan Langilled...@langille.org:
 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/






 Hi,

 I wrote the Bacula LStat decoder implementation in PHP. I made WebGUI
 for this also. Now online LStat decoder (beta version) is available on
 my page Bacula.pl:

 http://www.bacula.pl/bacula-lstat-decoder/

 In the near future I need to make description of fields.

 Here is Bacula LStat decoder function in PHP:

 function decode_bacula_lstat($lstat) {
   $base64 = 
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
   $lstat = trim($lstat);
   $lstat_fields = explode(' ', $lstat);

   if(count($lstat_fields) !== 16) {
   die('Error! Number of lstat fields is invalid. Please make sure 
 that
 it is valid lstat string.');
   }

   list($dev, $inode, $mode, $links, $uid, $gid, $rdev, $size, $blksize,
 $blocks, $atime, $mtime, $ctime, $linkfi, $flags, $data) =
 $lstat_fields;
   $encoded_values = array('dev' = $dev, 'inode' = $inode, 'mode' =
 $mode, 'links' = $links, 'uid' = $uid, 'gid' = $gid, 'rdev' =
 $rdev, 'size' = $size, 'blksize' = $blksize, 'blocks' = $blocks,
 'atime' = $atime, 'mtime' = $mtime, 'ctime' = $ctime, 'linkfi' =
 $linkfi, 'flags' = $flags, 'data' = $data);

   $ret = array();
   foreach($encoded_values as $key = $val) {
   $result = 0;
   $is_minus = false;
   $start = 0;

   if(substr($val, 0, 1) === '-') {
   $is_minus = true;
   $start++;
   }

   for($i = $start; $i  strlen($val); $i++) {
   $result = 6;
   $result +=  strpos($base64, substr($val, $i , 1));
   }
   $ret[$key] = ($is_minus === true) ? -$result : $result;
   }
   return $ret;
 }

 and here is usage for this:

 $lstat = 'gB DL+b IGg B A y A D5dZR BAA fN4 BNeR+z BNeR+7 BNeR+7 A A C';
 $decoded_lstat = decode_bacula_lstat($lstat);
 print_r($decoded_lstat);

 Any suggestions and modifications are welcome.
 Regards
 gani


I tried this function. I got an interesting value for:

   Bn bIgF IGk B Pp Pp BsZ/o Cp7/ZH EAA VQLA BNachF BNacW5 BNachH A A C

The PHP function returns:  -1443891641

The pgsql function returns:

bacula=# select base64_decode_lstat(8,'Bn bIgF IGk B Pp Pp BsZ/o 

Re: [Bacula-users] file listing?

2011-03-12 Thread ganiuszka
Hi,

First, many thanks for your feedback.

I researched that behaviour with filesize of your lstat field (
-1443891641). Yes, I made mistake with using shift bitwise operator.
From PHP documentation:

Warning!
Don't right shift for more than 32 bits on 32 bits systems. Don't left
shift in case it results to number longer than 32 bits.
(source: http://php.net/manual/en/language.operators.bitwise.php)

Repairing this bug is replacing the line:

$result = 6;

to this line:

$result = bcmul($result, bcpow(2,6));

It should work properly.

Thanks.
gani


W dniu 13 marca 2011 01:01 użytkownik Dan Langille d...@langille.org napisał:
 On 3/12/2011 9:29 AM, ganiuszka wrote:

 W dniu 11 marca 2011 21:45 użytkownik ganiuszkaganius...@gmail.com
  napisał:

 Hi,
 In my example jobid is putting in:
 ... File.JobId=8...
 but this eight:

 base64_decode_lstat(8,File.LStat)

 is exactly eight field (encoded filesize field). I seem that you used
 standard base64 decoder to decode eighth field. Am I right?

 Bacula lstat is encoded by using non-standard base64 algorithm. Your
 decoded lstat shows like this:

 [dev] =  89
 [inodes] =  1366434
 [mode] =  33200
 [links] =  1
 [uid] =  80
 [gid] =  91
 [rdev] =  5481898
 [size] =  315
 [blksize] =  16384
 [blocks] =  4
 [atime] =  1299770037
 [mtime] =  1299770037
 [ctime] =  1299770066
 [LinkFl] =  0
 [flags] =  0
 [data] =  2

 I do not understand every field, but most fields is clear. Now, I
 wrote implementation of Bacula base64_decoder in PHP. I need finish it
 and make WebGUI for this and I will share this decoder here. For this
 I am using source code of base64 implementation in Bacula and this:

 http://old.nabble.com/The-File.LStat-field-td940366.html

 Regards.
 gani

 2011/3/11 Dan Langilled...@langille.org:

 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried
 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS
 int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 :=
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) *
 (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/






 Hi,

 I wrote the Bacula LStat decoder implementation in PHP. I made WebGUI
 for this also. Now online LStat decoder (beta version) is available on
 my page Bacula.pl:

 http://www.bacula.pl/bacula-lstat-decoder/

 In the near future I need to make description of fields.

 Here is Bacula LStat decoder function in PHP:

 function decode_bacula_lstat($lstat) {
        $base64 =
 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        $lstat = trim($lstat);
        $lstat_fields = explode(' ', $lstat);

        if(count($lstat_fields) !== 16) {
                die('Error! Number of lstat fields is invalid. Please make
 sure that
 it is valid lstat string.');
        }

        list($dev, $inode, $mode, $links, $uid, $gid, $rdev, $size,
 $blksize,
 $blocks, $atime, $mtime, $ctime, $linkfi, $flags, $data) =
 $lstat_fields;
        $encoded_values = array('dev' = $dev, 'inode' = $inode, 'mode' =
 $mode, 'links' = $links, 'uid' = $uid, 'gid' = $gid, 'rdev' =
 $rdev, 'size' = $size, 'blksize' = $blksize, 'blocks' = $blocks,
 'atime' = $atime, 'mtime' = $mtime, 'ctime' = $ctime, 'linkfi' =
 $linkfi, 'flags' = $flags, 'data' = $data);

        $ret = array();
        foreach($encoded_values as $key = $val) {
                $result = 0;
                $is_minus = false;
                $start = 0;

                if(substr($val, 0, 1) === '-') {
                        $is_minus = true;
                        $start++;
                }

                for($i = $start; $i  strlen($val); $i++) {
                        $result = 6;
                        $result +=  

Re: [Bacula-users] file listing?

2011-03-11 Thread Dan Langille
On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:
 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8 AS 
 $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

For the record:

In this query, I see base64_decode_lstat(8,File.LStat)

What is 8?  It is not jobid.  It is a field id.  This lstat value:

BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

The eight field, as defined by ' ', is E7.

-- 
Dan Langille - http://langille.org/

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-11 Thread ganiuszka
Hi,
In my example jobid is putting in:
... File.JobId=8...
but this eight:

base64_decode_lstat(8,File.LStat)

is exactly eight field (encoded filesize field). I seem that you used
standard base64 decoder to decode eighth field. Am I right?

Bacula lstat is encoded by using non-standard base64 algorithm. Your
decoded lstat shows like this:

[dev] = 89
[inodes] = 1366434
[mode] = 33200
[links] = 1
[uid] = 80
[gid] = 91
[rdev] = 5481898
[size] = 315
[blksize] = 16384
[blocks] = 4
[atime] = 1299770037
[mtime] = 1299770037
[ctime] = 1299770066
[LinkFl] = 0
[flags] = 0
[data] = 2

I do not understand every field, but most fields is clear. Now, I
wrote implementation of Bacula base64_decoder in PHP. I need finish it
and make WebGUI for this and I will share this decoder here. For this
I am using source code of base64 implementation in Bacula and this:

http://old.nabble.com/The-File.LStat-field-td940366.html

Regards.
gani

2011/3/11 Dan Langille d...@langille.org:
 On 3/9/2011 5:36 PM, ganiuszka wrote:

 2011/3/9 Mike Egglestonmikee...@mac.com:

 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

 Hi,
 Here you have SQL function for PostgreSQL (I took it from bweb):

 CREATE PROCEDURAL LANGUAGE plpgsql;
 BEGIN;

 CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8
 AS $$
 DECLARE
 val int8;
 b64 varchar(64);
 size varchar(64);
 i int;
 BEGIN
 size := split_part($2, ' ', $1);
 b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
 FOR i IN 1..length(size) LOOP
 val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
 END LOOP;
 RETURN val;
 END;
 $$ language 'plpgsql';

 COMMIT;

 and this is a query which lists file path, filename and size in Bytes
 (in this example for jobid=8):

 SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
 size FROM Filename, File, Path WHERE File.JobId=8 AND
 File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
 BY size ASC;

 I tested it. It works.

 For the record:

 In this query, I see base64_decode_lstat(8,File.LStat)

 What is 8?  It is not jobid.  It is a field id.  This lstat value:

 BZ FNmi IGw B BQ Bb U6Wq E7 EAA E BNeOq1 BNeOq1 BNeOrS A A C

 The eight field, as defined by ' ', is E7.

 --
 Dan Langille - http://langille.org/




-- 
Większej miłości nikt nie ma nad tę, jak gdy kto życie swoje kładzie
za przyjaciół swoich. Jezus Chrystus

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-09 Thread James Woodward
Hello Mike,

I'd have to say no based on the tables defined here 
http://bacula.org/5.0.x-manuals/en/developers/developers/Database_Tables.html. 
The file size does not appear to be stored in the database. I don't think any 
size is mentioned until you get to the job level.

James



On 2011-03-09, at 12:51 PM, Mike Eggleston wrote:

 Afternoon,
 
 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?
 
 Mike
 
 --
 Colocation vs. Managed Hosting
 A question and answer guide to determining the best fit
 for your organization - today and in the future.
 http://p.sf.net/sfu/internap-sfd2d
 ___
 Bacula-users mailing list
 Bacula-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/bacula-users
 

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-09 Thread John Drescher
2011/3/9 James Woodward james.woodw...@ualberta.ca:
 Hello Mike,
 I'd have to say no based on the tables defined
 here http://bacula.org/5.0.x-manuals/en/developers/developers/Database_Tables.html.
 The file size does not appear to be stored in the database. I don't think
 any size is mentioned until you get to the job level.
 James


I think its in the LStat.

John

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-09 Thread Mike Eggleston
On Wed, 09 Mar 2011, John Drescher might have said:

 2011/3/9 James Woodward james.woodw...@ualberta.ca:
  Hello Mike,
  I'd have to say no based on the tables defined
  here http://bacula.org/5.0.x-manuals/en/developers/developers/Database_Tables.html.
  The file size does not appear to be stored in the database. I don't think
  any size is mentioned until you get to the job level.
  James
 
 
 I think its in the LStat.
 
 John

In my old version (v2.0.3) I don't see an 'lstat' command.

Mike

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-09 Thread John Drescher
On Wed, Mar 9, 2011 at 4:52 PM, Mike Eggleston mikee...@mac.com wrote:
 On Wed, 09 Mar 2011, John Drescher might have said:

 2011/3/9 James Woodward james.woodw...@ualberta.ca:
  Hello Mike,
  I'd have to say no based on the tables defined
  here http://bacula.org/5.0.x-manuals/en/developers/developers/Database_Tables.html.
  The file size does not appear to be stored in the database. I don't think
  any size is mentioned until you get to the job level.
  James
 

 I think its in the LStat.

 John

 In my old version (v2.0.3) I don't see an 'lstat' command.


I meant that I believe the file size and attributes are in the
database in the lstat column of the File table. I am not sure there is
an easy way to list this.

LStat   tinyblobFile attributes in base64 encoding

John

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


Re: [Bacula-users] file listing?

2011-03-09 Thread ganiuszka
Hi,
Here you have SQL function for PostgreSQL (I took it from bweb):

CREATE PROCEDURAL LANGUAGE plpgsql;
BEGIN;

CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8 AS $$
DECLARE
val int8;
b64 varchar(64);
size varchar(64);
i int;
BEGIN
size := split_part($2, ' ', $1);
b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
val := 0;
FOR i IN 1..length(size) LOOP
val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
END LOOP;
RETURN val;
END;
$$ language 'plpgsql';

COMMIT;

and this is a query which lists file path, filename and size in Bytes
(in this example for jobid=8):

SELECT Path.Path, Filename.Name, base64_decode_lstat(8,File.LStat) AS
size FROM Filename, File, Path WHERE File.JobId=8 AND
File.PathId=Path.PathId AND Filename.FilenameId=File.FilenameId ORDER
BY size ASC;

I tested it. It works.

Regards
gani

2011/3/9 Mike Eggleston mikee...@mac.com:
 Afternoon,

 I just noticed one of my clients had a huge incremental (level 2)
 backup. I want to see what file caused the huge increase. I tried 'list
 files jobid=20097' and though I'm shown the files, I'm not shown the
 size of each file. Is there a command or query that shows me the size
 of the file?

 Mike

--
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users