# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2001-2003 Craig Barratt
+# Copyright (C) 2001-2009 Craig Barratt
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#
#========================================================================
#
-# Version 2.1.0_CVS, released 3 Jul 2003.
+# Version 3.2.0, released 31 Jul 2010.
#
# See http://backuppc.sourceforge.net.
#
package BackupPC::Xfer::Archive;
use strict;
-
-sub new
-{
- my($class, $bpc, $args) = @_;
-
- $args ||= {};
- my $t = bless {
- bpc => $bpc,
- conf => { $bpc->Conf },
- host => "",
- hostIP => "",
- shareName => "",
- pipeRH => undef,
- pipeWH => undef,
- badFiles => [],
- %$args,
- }, $class;
-
- return $t;
-}
-
-sub args
-{
- my($t, $args) = @_;
-
- foreach my $arg ( keys(%$args) ) {
- $t->{$arg} = $args->{$arg};
- }
-}
-
-sub useArchive
-{
- return 1;
-}
+use base qw(BackupPC::Xfer::Protocol);
sub start
{
$t->{xferOK} = 1;
@HostList = $t->{HostList};
@BackupList = $t->{BackupList};
- my $i=0;
- my $tarCreatePath = $conf->{InstallDir} . "/bin/BackupPC_tarCreate";
+ my $i = 0;
+ my $tarCreatePath = "$conf->{InstallDir}/bin/BackupPC_tarCreate";
while (${@HostList[0]}[$i]) {
- #
- # Merge variables into @archiveClientCmd
- #
- my $cmdargs = {
- archiveloc => $t->{archiveloc},
- parfile => $t->{parfile},
- compression => $t->{compression},
- compext => $t->{compext},
- splitsize => $t->{splitsize},
- host => ${@HostList[0]}[$i],
- backupnumber => ${@BackupList[0]}[$i],
- Installdir => $conf->{InstallDir},
- tarCreatePath => $tarCreatePath,
- splitpath => $conf->{SplitPath},
- parpath => $conf->{ParPath},
- };
-
- $archiveClientCmd2 = $bpc->cmdVarSubstitute($archiveClientCmd, $cmdargs);
- $t->{XferLOG}->write(\"Executing: @$archiveClientCmd2\n");
-
- $bpc->cmdSystemOrEval($archiveClientCmd2,
+ #
+ # Merge variables into @archiveClientCmd
+ #
+ my $errStr;
+ my $cmdargs = {
+ archiveloc => $t->{archiveloc},
+ parfile => $t->{parfile},
+ compression => $t->{compression},
+ compext => $t->{compext},
+ splitsize => $t->{splitsize},
+ host => ${@HostList[0]}[$i],
+ backupnumber => ${@BackupList[0]}[$i],
+ Installdir => $conf->{InstallDir},
+ tarCreatePath => $tarCreatePath,
+ splitpath => $conf->{SplitPath},
+ parpath => $conf->{ParPath},
+ };
+
+ $archiveClientCmd2 = $bpc->cmdVarSubstitute($archiveClientCmd,
+ $cmdargs);
+ $t->{XferLOG}->write(\"Executing: @$archiveClientCmd2\n");
+
+ $bpc->cmdSystemOrEvalLong($archiveClientCmd2,
sub {
+ $errStr = $_[0];
$t->{XferLOG}->write(\$_[0]);
- });
-
- $i++;
+ }, 0, $t->{pidHandler});
+ if ( $? ) {
+ ($t->{_errStr} = $errStr) =~ s/[\n\r]+//;
+ return;
+ }
+ $i++;
}
$t->{XferLOG}->write(\"Completed Archive\n");
return "Completed Archive";
}
-sub errStr
-{
- my($t) = @_;
-
- return $t->{_errStr};
-}
-
-sub xferPid
-{
- my($t) = @_;
-
- return ($t->{xferPid});
-}
-
-sub logMsg
-{
- my($t, $msg) = @_;
-
- push(@{$t->{_logMsg}}, $msg);
-}
-
-sub logMsgGet
-{
- my($t) = @_;
-
- return shift(@{$t->{_logMsg}});
-}
-
1;