* Added lib/BackupPC/Xfer/Archive.pm
authorcbarratt <cbarratt>
Sat, 2 Aug 2003 08:02:30 +0000 (08:02 +0000)
committercbarratt <cbarratt>
Sat, 2 Aug 2003 08:02:30 +0000 (08:02 +0000)
lib/BackupPC/Xfer/Archive.pm [new file with mode: 0644]

diff --git a/lib/BackupPC/Xfer/Archive.pm b/lib/BackupPC/Xfer/Archive.pm
new file mode 100644 (file)
index 0000000..1aa4e07
--- /dev/null
@@ -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  <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;