* Added --config-override to configure.pl, allow config settings to be
set on the command line. Proposed by Les Stott and Holger Parplies.
+* Moved call to NmbLookupFindHostCmd in BackupPC_dump to after the
+ check of whether a backup needs to be done. This makes wakeonlan
+ work correctly, rather than waking up the client every WakeupSchedule.
+ Reported by David Lasker.
+
+* Improved settings for compression and compext in BackupPC_archiveStart
+ based on compression type, as proposed by Paul Dugas. compext is now
+ empty, .gz or .bz2 based on ArchiveComp.
+
* Changed bin/BackupPC_dump to not ping or lookup the host if
$Conf{BackupsDisable} is set. Requested by John Rouillard.
and also set the file extension to .gz when compression is on.
Reported by Stephen Vaughan.
+* Fixed netbios name comparison in bin/BackupPC_dump and
+ bin/BackupPC_restore to just use the first 15 characters
+ of the host name. Patch from Dan MacNeil.
+
+* Fixed nmblookup parsing in BackupPC::Lib::NetBiosInfoGet to ignore
+ entries with the <GROUP> tag. Based on patch from Dan MacNeil.
+
+* Fixed BackupPC_dump so that the XferLOG file is saved when
+ DumpPreUserCmd fails. Reported by John Rouillard.
+
* Updated BackupPC.pod for $Conf{BackupsDisable}, reported by
Nils Breunese.
* Minor updates to lib/BackupPC/Lang/fr.pm from Nicolas STRANSKY
- applied by GFK.
+ applied by GFK, and also from Vincent Fleuranceau.
* Minor updates to lib/BackupPC/Lang/de.pm from Klaus Weidenbach.
#
#========================================================================
#
-# Version 3.2.0, released 31 Dec 2008.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
if ( $Status{$host}{dhcpCheckCnt} > 0 );
} elsif ( $mesg =~ /^xferPids (.*)/ ) {
$Jobs{$host}{xferPid} = $1;
+ } elsif ( $mesg =~ /^completionPercent (.*)/ ) {
+ $Jobs{$host}{completionPercent} = $1;
} elsif ( $mesg =~ /^started_restore/ ) {
$Jobs{$host}{type} = "restore";
print(LOG $bpc->timeStamp,
#
#========================================================================
#
-# Version 3.2.0, released 31 Dec 2008.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
my %ArchiveReq = (
archiveloc => $bpc->{Conf}{ArchiveDest},
archtype => 0,
- compression => $bpc->{Conf}{ArchiveComp} eq "none" ? $bpc->{Conf}{CatPath}
- : $bpc->{Conf}{ArchiveComp},
- compext => $bpc->{Conf}{ArchiveComp} eq "none" ? '.raw' : '.gz',
+ 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,
#
#========================================================================
#
-# Version 3.2.0, released 31 Dec 2008.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
my $Dir = "$TopDir/pc/$client";
my @xferPid = ();
my $tarPid = -1;
+my $completionPercent;
#
# Re-read config file, so we can include the PC-specific config
exit(0);
}
-if ( !$opts{d} && !$Conf{BackupsDisable} ) {
- #
- # In the non-DHCP case, make sure the host can be looked up
- # via NS, or otherwise find the IP address via NetBios.
- #
- if ( $Conf{ClientNameAlias} ne "" ) {
- $host = $Conf{ClientNameAlias};
- } else {
- $host = $client;
- }
- if ( !defined(gethostbyname($host)) ) {
- #
- # Ok, NS doesn't know about it. Maybe it is a NetBios name
- # instead.
- #
- print(STDERR "Name server doesn't know about $host; trying NetBios\n")
- if ( $opts{v} );
- if ( !defined($hostIP = $bpc->NetBiosHostIPFind($host)) ) {
- print(LOG $bpc->timeStamp, "Can't find host $host via netbios\n");
- print("host not found\n");
- exit(1);
- }
- } else {
- $hostIP = $host;
- }
-}
-
###########################################################################
# Figure out what to do and do it
###########################################################################
exit(1);
}
+if ( !$opts{d} ) {
+ #
+ # In the non-DHCP case, make sure the host can be looked up
+ # via NS, or otherwise find the IP address via NetBios.
+ #
+ if ( $Conf{ClientNameAlias} ne "" ) {
+ $host = $Conf{ClientNameAlias};
+ } else {
+ $host = $client;
+ }
+ if ( !defined(gethostbyname($host)) ) {
+ #
+ # Ok, NS doesn't know about it. Maybe it is a NetBios name
+ # instead.
+ #
+ print(STDERR "Name server doesn't know about $host; trying NetBios\n")
+ if ( $opts{v} );
+ if ( !defined($hostIP = $bpc->NetBiosHostIPFind($host)) ) {
+ print(LOG $bpc->timeStamp, "Can't find host $host via netbios\n");
+ print("host not found\n");
+ exit(1);
+ }
+ } else {
+ $hostIP = $host;
+ }
+}
+
#
# Check if $host is alive
#
if ( $? && $Conf{UserCmdCheckStatus} ) {
print(LOG $bpc->timeStamp,
"DumpPreUserCmd returned error status $?... exiting\n");
- print("dump failed: DumpPreUserCmd returned error status $?\n");
- exit(1);
+ $XferLOG->write(\"DumpPreUserCmd returned error status $?... exiting\n");
+ $stat{hostError} = "DumpPreUserCmd returned error status $?";
+ BackupFailCleanup();
}
$NeedPostCmd = 1;
if ( $? && $Conf{UserCmdCheckStatus} ) {
print(LOG $bpc->timeStamp,
"DumpPreShareCmd returned error status $?... exiting\n");
- print("dump failed: DumpPreShareCmd returned error status $?\n");
UserCommandRun("DumpPostUserCmd") if ( $NeedPostCmd );
- exit(1);
+ $XferLOG->write(\"DumpPreShareCmd returned error status $?... exiting\n");
+ $stat{hostError} = "DumpPreShareCmd returned error status $?";
+ BackupFailCleanup();
}
$xfer = BackupPC::Xfer::create($Conf{XferMethod}, $bpc);
if ( !defined($xfer) ) {
my $errStr = BackupPC::Xfer::errStr();
print(LOG $bpc->timeStamp, "dump failed: $errStr\n");
- print("dump failed: $errStr\n");
UserCommandRun("DumpPostShareCmd", $shareName) if ( $NeedPostCmd );
UserCommandRun("DumpPostUserCmd") if ( $NeedPostCmd );
- exit(1);
+ $XferLOG->write(\"BackupPC::Xfer::create failed: $errStr\n");
+ $stat{hostError} = $errStr;
+ BackupFailCleanup();
}
my $useTar = $xfer->useTar;
compress => $Conf{CompressLevel},
XferMethod => $Conf{XferMethod},
logLevel => $Conf{XferLogLevel},
- pidHandler => \&pidHandler,
partialNum => $partialNum,
+ pidHandler => \&pidHandler,
+ completionPercent => \&completionPercent,
});
if ( !defined($logMsg = $xfer->start()) ) {
- print(LOG $bpc->timeStamp, "xfer start failed: ", $xfer->errStr, "\n");
- print("dump failed: ", $xfer->errStr, "\n");
- print("link $clientURI\n") if ( $needLink );
+ my $errStr = "xfer start failed: " . $xfer->errStr . "\n";
+ print(LOG $bpc->timeStamp, $errStr);
#
# kill off the tar process, first nicely then forcefully
#
}
UserCommandRun("DumpPostShareCmd", $shareName) if ( $NeedPostCmd );
UserCommandRun("DumpPostUserCmd") if ( $NeedPostCmd );
- exit(1);
+ $XferLOG->write(\"xfer start failed: $errStr\n");
+ $stat{hostError} = $errStr;
+ BackupFailCleanup();
}
@xferPid = $xfer->xferPid;
|| $Conf{NmbLookupCmd} eq "" );
my($netBiosHost, $netBiosUser) = $bpc->NetBiosInfoGet($hostIP);
return "host $host has mismatching netbios name $netBiosHost"
- if ( $netBiosHost ne $host );
+ if ( lc($netBiosHost) ne lc(substr($host, 0, 15)) );
return;
}
print("xferPids $str\n");
}
+#
+# The Xfer method might tell us from time to time about progress
+# in the backup or restore
+#
+sub completionPercent
+{
+ my($percent) = @_;
+
+ $percent = 100 if ( $percent > 100 );
+ $percent = 0 if ( $percent < 0 );
+ if ( !defined($completionPercent)
+ || int($completionPercent + 0.5) != int($percent) ) {
+ printf("completionPercent %.0f\n", $percent);
+ }
+ $completionPercent = $percent;
+}
+
#
# Run an optional pre- or post-dump command
#
#
#========================================================================
#
-# Version 3.1.0, released 25 Nov 2007.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
|| $Conf{NmbLookupCmd} eq "" );
my($netBiosHost, $netBiosUser) = $bpc->NetBiosInfoGet($hostIP);
return "host $host has mismatching netbios name $netBiosHost"
- if ( $netBiosHost ne $host );
+ if ( lc($netBiosHost) ne lc(substr($host, 0, 15)) );
return;
}
<form action="\$MyURL" method="get">
Le serveur BackupPC sur <tt>\$Conf{ServerHost}</tt>, port <tt>\$Conf{ServerPort}</tt>
n'est pas en fonction (vous l'avez peut-être arrêté, ou vous ne l'avez pas encore démarré).<br>
-Voulez-vous le démarrer?
+Voulez-vous le démarrer ?
<input type="hidden" name="action" value="startServer">
<input type="submit" value="Démarrer le serveur" name="ignore">
</form>
#
#========================================================================
#
-# Version 3.2.0, released 31 Dec 2008.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
my $bpc = bless {
%$paths,
- Version => '3.2.0',
+ Version => '3.2.0beta0',
}, $class;
$bpc->{storage} = BackupPC::Storage->new($paths);
};
$nmbCmd = $bpc->cmdVarSubstitute($bpc->{Conf}{NmbLookupCmd}, $args);
foreach ( split(/[\n\r]+/, $bpc->cmdSystemOrEval($nmbCmd, undef, $args)) ) {
+ #
+ # skip <GROUP> and other non <ACTIVE> entries
+ #
+ next if ( /<\w{2}> - <GROUP>/i );
next if ( !/^\s*([\w\s-]+?)\s*<(\w{2})\> - .*<ACTIVE>/i );
$netBiosHostName ||= $1 if ( $2 eq "00" ); # host is first 00
$netBiosUserName = $1 if ( $2 eq "03" ); # user is last 03
#
#========================================================================
#
-# Version 3.1.0, released 25 Nov 2007.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
return ( $XferLOG->write(\$msg) ) if ( $level <= $t->{logLevel} );
}
-
##############################################################################
# File Inclusion/Exclusion
##############################################################################
#
#========================================================================
#
-# Version 3.2.0, released 31 Dec 2008.
+# Version 3.2.0beta0, released 17 Jan 2009.
#
# See http://backuppc.sourceforge.net.
#
pidHandler => sub {
$t->{pidHandler}(@_);
},
+ completionPercent => sub {
+ $t->{completionPercent}(@_);
+ },
clientCharset => $conf->{ClientCharset},
fio => BackupPC::Xfer::RsyncFileIO->new({
xfer => $t,