--- /dev/null
+#============================================================= -*-perl-*-
+#
+# BackupPC::Xfer::Archive package
+#
+# DESCRIPTION
+#
+# This library defines a BackupPC::Xfer::Archive class for managing
+# archives to media.
+#
+# AUTHOR
+# Craig Barratt <cbarratt@users.sourceforge.net>
+#
+# COPYRIGHT
+# Copyright (C) 2001-2003 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#========================================================================
+#
+# Version 2.1.0_CVS, released 3 Jul 2003.
+#
+# 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;
+}
+
+sub start
+{
+ return "Archive Started";
+}
+
+sub run
+{
+ my($t) = @_;
+ my $bpc = $t->{bpc};
+ my $conf = $t->{conf};
+
+ my(@HostList, @BackupList, $archiveClientCmd, $archiveClientCmd2, $logMsg);
+
+ $archiveClientCmd = $conf->{ArchiveClientCmd};
+ $t->{xferOK} = 1;
+ @HostList = $t->{HostList};
+ @BackupList = $t->{BackupList};
+ 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,
+ sub {
+ $t->{XferLOG}->write(\$_[0]);
+ });
+
+ $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;