Adding BackupPC_archiveStart from BackupPC source
This is the unedited version from my copy of BackupPC. I'm planning to edit this in order to fix a couple bugs... -rwxr-xr-x 1 root root 4036 2011-06-30 04:41 /usr/share/backuppc/bin/BackupPC_archiveStart backuppc: Installed: 3.2.0-3ubuntu4~lucid1 Candidate: 3.2.0-3ubuntu4~lucid1 Version table: *** 3.2.0-3ubuntu4~lucid1 0 500 http://archive.ubuntu.com/ubuntu/ lucid-backports/main Packages 100 /var/lib/dpkg/status 3.1.0-9ubuntu1 0 500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages
This commit is contained in:
parent
abbbbba970
commit
7ff0a277a6
1 changed files with 123 additions and 0 deletions
123
BackupPC_archiveStart
Executable file
123
BackupPC_archiveStart
Executable file
|
@ -0,0 +1,123 @@
|
|||
#!/usr/bin/perl
|
||||
#============================================================= -*-perl-*-
|
||||
#
|
||||
# BackupPC_archiveStart: start an archive request from the
|
||||
# command line.
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Usage: BackupPC_archiveStart archiveHost userName hosts...
|
||||
#
|
||||
# Initiates an archive request on archive host archiveHost
|
||||
# for the listed hosts. The latest backup for each host is
|
||||
# archived. The userName is name of the requesting user,
|
||||
# which appears in the log files.
|
||||
#
|
||||
# AUTHOR
|
||||
# Craig Barratt <cbarratt@users.sourceforge.net>
|
||||
#
|
||||
# COPYRIGHT
|
||||
# Copyright (C) 2007-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
|
||||
# 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 3.2.0, released 31 Jul 2010.
|
||||
#
|
||||
# See http://backuppc.sourceforge.net.
|
||||
#
|
||||
#========================================================================
|
||||
|
||||
use strict;
|
||||
no utf8;
|
||||
use lib "/usr/share/backuppc/lib";
|
||||
use Getopt::Std;
|
||||
use BackupPC::Lib;
|
||||
|
||||
die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) );
|
||||
|
||||
my %opts;
|
||||
|
||||
# no options currently
|
||||
if ( !getopts("", \%opts) || @ARGV < 3 ) {
|
||||
print STDERR <<EOF;
|
||||
usage: $0 archiveHost userName hosts...
|
||||
EOF
|
||||
exit(1);
|
||||
}
|
||||
|
||||
my $Hosts = $bpc->HostInfoRead();
|
||||
my $ArchiveHost = $ARGV[0];
|
||||
my $UserName = $ARGV[1];
|
||||
my $TopDir = $bpc->{Conf}{TopDir};
|
||||
|
||||
if ( !defined($Hosts->{$ArchiveHost}) ) {
|
||||
print(STDERR "$0: archive host $ArchiveHost doesn't exist... quitting\n");
|
||||
exit(1);
|
||||
}
|
||||
$bpc->ConfigRead($ArchiveHost);
|
||||
|
||||
my(@HostList, @BackupList);
|
||||
for ( my $i = 2 ; $i < @ARGV ; $i++ ) {
|
||||
my $host = $ARGV[$i];
|
||||
if ( !defined($Hosts->{$host}) ) {
|
||||
print(STDERR "$0: host $host doesn't exist... quitting\n");
|
||||
exit(1);
|
||||
}
|
||||
my @backups = $bpc->BackupInfoRead($host);
|
||||
if ( !@backups ) {
|
||||
print(STDERR "$0: host $host doesn't have any backups... quitting\n");
|
||||
exit(1);
|
||||
}
|
||||
push(@HostList, $host);
|
||||
push(@BackupList, $backups[$#backups]{num});
|
||||
}
|
||||
|
||||
my $ReqFileName;
|
||||
for ( my $i = 0 ; ; $i++ ) {
|
||||
$ReqFileName="archiveReq.$$.$i";
|
||||
last if ( !-f "$TopDir/pc/$ArchiveHost/$ReqFileName" );
|
||||
}
|
||||
my %ArchiveReq = (
|
||||
archiveloc => $bpc->{Conf}{ArchiveDest},
|
||||
archtype => 0,
|
||||
compression => $bpc->{Conf}{ArchiveComp} eq 'none' ? $bpc->{Conf}{CatPath}
|
||||
: ($bpc->{Conf}{ArchiveComp} eq 'gzip'
|
||||
? $bpc->{Conf}{GzipPath} : $bpc->{Conf}{Bzip2Path}),
|
||||
compext => $bpc->{Conf}{ArchiveComp} eq 'none' ? ''
|
||||
: ($bpc->{Conf}{ArchiveComp} eq 'gzip' ? '.gz' : '.bz2'),
|
||||
parfile => $bpc->{Conf}{ArchivePar},
|
||||
splitsize => '0000000',
|
||||
host => $ArchiveHost,
|
||||
HostList => \@HostList,
|
||||
BackupList => \@BackupList,
|
||||
user => $UserName,
|
||||
reqTime => time,
|
||||
);
|
||||
my $archive = Data::Dumper->new([\%ArchiveReq], [qw(*ArchiveReq)]);
|
||||
$archive->Indent(1);
|
||||
if ( !open(REQ, ">", "$TopDir/pc/$ArchiveHost/$ReqFileName") ) {
|
||||
print(STDERR "$0: can't open/write request file $TopDir/pc/$ArchiveHost/$ReqFileName... quitting\n");
|
||||
exit(1);
|
||||
}
|
||||
binmode(REQ);
|
||||
print REQ $archive->Dump;
|
||||
close(REQ);
|
||||
$bpc->ServerConnect($bpc->{Conf}{ServerHost}, $bpc->{Conf}{ServerPort});
|
||||
my $reply = $bpc->ServerMesg("archive $UserName $ArchiveHost $ReqFileName");
|
||||
$bpc->ServerDisconnect();
|
||||
print("Sent archive request, reply: $reply\n");
|
||||
exit(0);
|
Loading…
Reference in a new issue