From b2013172257d98277042670101493c88d3b3dfe7 Mon Sep 17 00:00:00 2001 From: cbarratt Date: Sat, 2 Aug 2003 08:02:30 +0000 Subject: [PATCH] * Added lib/BackupPC/Xfer/Archive.pm --- lib/BackupPC/Xfer/Archive.pm | 155 +++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 lib/BackupPC/Xfer/Archive.pm diff --git a/lib/BackupPC/Xfer/Archive.pm b/lib/BackupPC/Xfer/Archive.pm new file mode 100644 index 0000000..1aa4e07 --- /dev/null +++ b/lib/BackupPC/Xfer/Archive.pm @@ -0,0 +1,155 @@ +#============================================================= -*-perl-*- +# +# BackupPC::Xfer::Archive package +# +# DESCRIPTION +# +# This library defines a BackupPC::Xfer::Archive class for managing +# archives to media. +# +# AUTHOR +# Craig Barratt +# +# 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; -- 2.20.1