diff -r d176b9443312 -r 8231f7b00052 bin/amdumpext --- a/bin/amdumpext Mon Dec 16 15:29:52 2013 +0100 +++ b/bin/amdumpext Mon Dec 16 16:36:15 2013 +0100 @@ -37,7 +37,7 @@ use constant FD3 => 3; use constant FD4 => 4; -$SIG{__DIE__} = sub { die "$ME: ", @_ }; +$SIG{__DIE__} = sub { die $^S ? '' : "$ME: ", @_ }; my %SUPPORT = ( CONFIG => YES, # --config … (default) @@ -123,7 +123,7 @@ OK "$ME version $VERSION"; OK "euid=$> (" . getpwuid($>) . ')'; OK "egid=" . do { - my $gid = (split ' ', $))[0]; + my ($gid, undef) = split ' ', $); my $group = getgrgid $gid; "$gid ($group)"; }; @@ -135,7 +135,8 @@ foreach my $tool (qw(dump restore)) { if ($_ = (grep { -x ($_ .= "/$tool") } split /:/ => $ENV{PATH})[0]) { - chomp(my $version = (`$_ 2>&1`)[0]); + my ($version, undef) = `$_ 2>&1`; + chomp $version; OK "$tool is $version"; } else { @@ -156,8 +157,8 @@ my $dumpdates = $opt_dumpdates ? expand($opt_dumpdates) : DUMPDATES; eval { open(my $x, "+>>", $dumpdates) or die "$!\n" }; - if (chomp $@) { ERROR "dumpdates file \"$dumpdates\": $@" } - else { OK "dumpdates file: \"$dumpdates\"" } + if (chomp $@) { ERROR "dumpdates file $dumpdates: $@" } + else { OK "dumpdates file is $dumpdates" } } exit 0; @@ -421,62 +422,78 @@ amdumpext selfcheck [options] [--level ] --device amdumpext estimate [options] [--level ]... --device +=head1 DESCRIPTION + +The B is an application plugin for amanda. It drives the +native ext2/3/4 dump/restore programs found on most Linux systems. See L +and L for more information on these tools. + =head1 COMMANDS +The B supports the commands from the API description found on +L. + +=head1 COMMON OPTIONS + =over -=item B - -Send a list of supported features. - -=back - -=head1 OPTIONS - -=head2 Common Options +=item B<--device> I -The following options have to be supported by the application. - -=over 4 - -=item B<--config> I - -The configuration to be used (the backup set). - -=item B<--host> I - -The host from the DLE. +The disk device from the disklist. =item B<--disk> I -The disk to be saved. It's some "label" for the device to be backed up. +The diskname from the disklist. Currently ignored. + +=item B<--host> I + +The hostname from the disklist. Currently ignored. + +=item B<--config> I + +The name of the configuration. + +=item B<--level> I -=item B<--device> I +The level of the backup. 0 means full backup. + +=item B<--index> I -The device to be backed up (may be a device name, a mountpoint). +Create an index of the files backed up. XML is not supported yet. +(Default: not set, means no index at all) + +=item B<--message> I + +The format used for messages. XML is not supported yet. +(Default: line) =back -=head2 Optional options +=head1 COMMANDS + +=head2 support + +This command returns the list of supported features. -The following options need to be supported if indicated by the "support" -command. +=head2 selfcheck -=over +This command instructs B to so some selfchecks. In an ideal +world it will detect any problem that might prevent a successful backup. -=item B<--message> "line" +mandatory options: device, level -Send messages line by line. +=head2 estimate -=item B<--index> "line" - -Send the index line by line. +Create an estimate about the amount of data we may expect for the +backup. Multi-Level estimates are supported. -=back +mandatory options: device, level, ... + +=head1 PROPERTIES -=cut - -=head2 Properties +The properties may be set on the server side to tune the behaviour +of the application. Currently property setting on the client side is +not supported. =over 4 @@ -487,14 +504,58 @@ =back +=head1 TESTING + +The B may be tested on the command line. The following output +file descriptors are used: + +=over + +=item 1 (STDOUT) + +The normal command output, the data stream. + +=item 2 (STDERR) + +Not used by the API, but probably redirected to some log files. + +=item 3 (messages) + +Operational messages, often it's postprocessed output of some of +the invoked tools + +=item 4 (index) + +If index generation is ordered (via the B<--index> option), the index is +sent to this file descriptor. + +=back + +The following shell command line is suitable to test the B: + + $ amdumpext backup --device /dev/sda1 --level 0 1>dump 3>messages 4>index + +If you're interested in reading the messages as they appear: + + $ amdumpext backup --device /dev/sda1 --level 0 3>&1 1>dump 4>index + + =head1 EXAMPLE - define application "dump" { +The C should contain something similiar to the following +stanza: + + define application "mydump" { plugin "amdumpext" # optional - define some additional parameters property "dumpdates" "/tmp/dumpdates.${c}" } + define dumptype "dump" { + program "APPLICATION" + application "mydump" + } + =cut