#------------------------------------------------------------------------
# Version __VERSION__, __RELEASEDATE__
#------------------------------------------------------------------------
+
+* Fixed simple but serious bug in bin/BackupPC_tarCreate that prevented
+ hardlinks being saved correctly. Debugged by Michael (mna.news)
+ with several other people.
+
+* Fixed serious bug in bin/BackupPC_dump reported/debugged by Dan Niles
+ that can happen when multiple full backups are deleted after
+ $Conf{FullKeepCnt} is changed.
+
+* Changed lib/BackupPC/CGI/Lib.pm so that link to "$TopDir/conf/$host.pl"
+ is displayed if it exists. Patch from Andreas Vögele.
+
+* Applied daemonize patch to bin/BackupPC from:
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301057
+
+* It's now a fatal error if $Conf{CompressLevel} is set, but
+ Compress::Zlib is not found. Before $Conf{CompressLevel} was
+ silently set to 0, which made all the backups uncompressed.
+ That meant the user never knew if they forget to install
+ Compress::Zlib but were expecting compression to be on.
+
+* Finally increased $Conf{ClientTimeout} to 72000 (20 hours).
+
+* Added sleep 1 in restart() function in init.d/src/gentoo-backuppc,
+ suggested by Jon Hood.
+
+* Added $DestDir to the path of the CGI image directory in configure.pl.
+ Patch submitted by Andreas Vögele.
+
+* Applied extensive patch to French translation from Frederic Lehobey.
+
+* Minor change to Dutch language $Lang{Pool_Stat} from Wander Winkelhorst.
+
+* Minor change to French language $Lang{EMailOutlookBackupMesg} and
+ $Lang{EMailOutlookBackupSubj} from Ludovic Gasc.
+
+#------------------------------------------------------------------------
+# Version 2.1.1, 13 Mar 2005
+#------------------------------------------------------------------------
+
+ * Fixed bug in top-level restore using rsync XferMethod.
+ BackupPC::View was leaving an extra leading "/" at the start
+ of top-level directories, messing up the FileList sort order.
+ Reported and debugged by Gail Edwards.
+
+ * Added pathCreate() to BackupPC_tarExtract so that new directories
+ are created. Required for xtar on MacOSX since the virtual resource
+ fork directories (.rsrc) are not explicitly included in the tar
+ archive - just the files below .rsrc are.
+
+ * Changed $host.$bkupNum.tar$fileExt.* to $host.$bkupNum.tar$fileExt*
+ in $parCmd in bin/BackupPC_archiveHost.
+
+ * Fixed HostSortCompare() in BackupPC to correctly sort hosts so
+ those with the oldest backups get queued first.
+
+ * Changed test in BackupPC_sendEmail so that directories/files
+ starting with "." in $TopDir/pc are ignored, rather than
+ just "." and "..".
+
+ * Changed BackupPC_sendEmail to include NT_STATUS_FILE_LOCK_CONFLICT
+ in check for bad outlook files.
+
+ * Ensure that %Status and %StatusHost are empty if requesting
+ status on hosts in lib/BackupPC/CGI/Lib.pm GetStatusInfo().
+ Fixes problem with new hosts under mod_perl.
+
+ * Added images/icon-hardlink.gif so that hardlinks show file type icon.
+
+#------------------------------------------------------------------------
+# Version 2.1.0pl1, 15 Aug 2004
+#------------------------------------------------------------------------
* Added fix to lib/BackupPC/Lang/nl.pm from Lieven Bridts.
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
use vars qw(%Status %Info $Hosts);
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
use Socket;
use Carp;
use Digest::MD5;
+use POSIX qw(setsid);
###########################################################################
# Handle command line options
if ( $opts{d} ) {
#
- # daemonize by forking
+ # daemonize by forking; more robust method per:
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=301057
#
- defined(my $pid = fork) or die "Can't fork: $!";
+ my $pid;
+ defined($pid = fork) or die("Can't fork: $!");
+ exit if( $pid ); # parent exits
+
+ POSIX::setsid();
+ defined($pid = fork) or die("Can't fork: $!");
exit if $pid; # parent exits
+
+ chdir ("/") or die("Cannot chdir to /: $!\n");
+ close(STDIN);
+ open(STDIN , ">/dev/null") or die("Cannot open /dev/null as stdin\n");
+ # STDOUT and STDERR are handled in LogFileOpen() right below,
+ # otherwise we would have to reopen them too.
}
#
delete($Status{$host}{error});
delete($Status{$host}{errorTime});
$Status{$host}{endTime} = time;
+ $Status{$host}{lastGoodBackupTime} = time;
} elsif ( $mesg =~ /^backups disabled/ ) {
print(LOG $bpc->timeStamp,
"Ignoring old backup error on $host\n");
#
sub HostSortCompare
{
+ #
+ # Hosts with errors go before hosts without errors
+ #
return -1 if ( $Status{$a}{error} ne "" && $Status{$b}{error} eq "" );
+
+ #
+ # Hosts with no errors go after hosts with errors
+ #
+
return 1 if ( $Status{$a}{error} eq "" && $Status{$b}{error} ne "" );
- return $Status{$a}{endTime} <=> $Status{$b}{endTime};
+
+ #
+ # hosts with the older last good backups sort earlier
+ #
+ my $r = $Status{$a}{lastGoodBackupTime} <=> $Status{$b}{lastGoodBackupTime};
+ return $r if ( $r );
+
+ #
+ # Finally, just sort based on host name
+ #
+ return $a cmp $b;
}
+
#
# Queue all the hosts for backup. This means queuing all the fixed
# ip hosts and all the dhcp address ranges. We also additionally
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
use BackupPC::Xfer::Archive;
#
# Setup file extension for compression and open ArchiveLOG output file
#
-$Conf{CompressLevel} = 0 if ( !BackupPC::FileZIO->compOk );
+if ( $Conf{CompressLevel} && !BackupPC::FileZIO->compOk ) {
+ $stat{hostError} = "Compress::Zlib not found";
+ exit(ArchiveCleanup($client));
+}
my $fileExt = $Conf{CompressLevel} > 0 ? ".z" : "";
my $ArchiveLOG = BackupPC::FileZIO->open("$Dir/ArchiveLOG$fileExt", 1,
$Conf{CompressLevel});
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
use File::Path;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
#
if ( -d $outLoc && -x $parPath ) {
if ( $parfile != 0 ) {
print("Running $parPath to create parity files\n");
- my $parCmd = "$parPath c -r$parfile $outLoc/$host.$bkupNum.tar$fileExt.par2 $outLoc/$host.$bkupNum.tar$fileExt.*";
+ my $parCmd = "$parPath c -r$parfile $outLoc/$host.$bkupNum.tar$fileExt.par2 $outLoc/$host.$bkupNum.tar$fileExt*";
$ret = system($parCmd);
if ( $ret ) {
print("Executing: $parCmd\n");
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use File::Path;
use Compress::Zlib;
use Getopt::Std;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
use BackupPC::Xfer::Smb;
#
# Setup file extension for compression and open XferLOG output file
#
-$Conf{CompressLevel} = 0 if ( !BackupPC::FileZIO->compOk );
+if ( $Conf{CompressLevel} && !BackupPC::FileZIO->compOk ) {
+ print(LOG $bpc->timeStamp, "dump failed: can't find Compress::Zlib\n");
+ print("dump failed: can't find Compress::Zlib\n");
+ exit(1);
+}
my $fileExt = $Conf{CompressLevel} > 0 ? ".z" : "";
my $XferLOG = BackupPC::FileZIO->open("$Dir/XferLOG$fileExt", 1,
$Conf{CompressLevel});
$fullKeepCnt = [$fullKeepCnt] if ( ref($fullKeepCnt) ne "ARRAY" );
my $fullAgeMax;
my $fullPeriod = int(0.5 + $Conf{FullPeriod});
+ $fullPeriod = 7 if ( $fullPeriod <= 0 );
for ( my $i = 0 ; $i < @$fullKeepCnt ; $i++ ) {
$fullAgeMax += $fullKeepCnt->[$i] * $fullPeriod;
$fullPeriod *= 2;
#
# Delete the full backup
#
- #printf("Deleting backup $i ($prevFull)\n");
- push(@delete, $i);
+ #print("Deleting backup $i ($prevFull)\n");
+ unshift(@delete, $i);
} else {
$fullCnt++;
while ( $fullKeepIdx < @$fullKeepCnt
my($client, $Backups, $idx) = @_;
my($Dir) = "$TopDir/pc/$client";
+ if ( $Backups->[$idx]{num} eq "" ) {
+ print("BackupRemove: ignoring empty backup number for idx $idx\n");
+ return;
+ }
+
$bpc->RmTreeDefer("$TopDir/trash",
"$Dir/$Backups->[$idx]{num}");
unlink("$Dir/SmbLOG.$Backups->[$idx]{num}")
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::Attrib;
use BackupPC::PoolWrite;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
use Getopt::Std;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
use BackupPC::Xfer::Smb;
#
# Setup file extension for compression and open RestoreLOG output file
#
-$Conf{CompressLevel} = 0 if ( !BackupPC::FileZIO->compOk );
+if ( $Conf{CompressLevel} && !BackupPC::FileZIO->compOk ) {
+ $stat{hostError} = "Compress:Zlib not found";
+ exit(RestoreCleanup($client));
+}
my $fileExt = $Conf{CompressLevel} > 0 ? ".z" : "";
my $RestoreLOG = BackupPC::FileZIO->open("$Dir/RestoreLOG$fileExt", 1,
$Conf{CompressLevel});
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
my @files = $d->read;
$d->close;
foreach my $host ( @files ) {
- next if ( $host eq "." || $host eq ".." || defined($Status{$host}) );
+ next if ( $host =~ /^\./ || defined($Status{$host}) );
push(@oldDirs, "$TopDir/pc/$host");
}
if ( @oldDirs ) {
while ( 1 ) {
my $s = $fh->readLine();
last if ( $s eq "" );
- if ( $s =~ /^\s*Error reading file.*\.pst : ERRDOS - ERRlock/
+ if ( $s =~ /^\s*Error reading file.*\.pst : (ERRDOS - ERRlock|NT_STATUS_FILE_LOCK_CONFLICT)/
|| $s =~ /^\s*Error reading file.*\.pst\. Got 0 bytes/ ) {
$badOutlook = 1;
last;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::FileZIO;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use File::Path;
use Getopt::Std;
use BackupPC::Lib;
#
sub archiveWriteHardLinks
{
- my $fh = @_;
+ my($fh) = @_;
foreach my $hdr ( @HardLinks ) {
$hdr->{size} = 0;
+ my $name = $hdr->{linkname};
+ $name =~ s{^\./}{/};
+ if ( defined($HardLinkExtraFiles{$name}) ) {
+ $hdr->{linkname} = $HardLinkExtraFiles{$name};
+ }
if ( defined($PathRemove)
&& substr($hdr->{linkname}, 0, length($PathRemove)+1)
eq ".$PathRemove" ) {
my $done = 0;
my $name = $hdr->{linkname};
$name =~ s{^\./}{/};
- if ( $HardLinkExtraFiles{$name} ) {
+ if ( defined($HardLinkExtraFiles{$name}) ) {
$done = 1;
} else {
foreach my $arg ( @ARGV ) {
+ $arg = "/" if ( $arg eq "." );
$arg =~ s{^\./+}{/};
$arg =~ s{/+$}{};
$done = 1 if ( $name eq $arg || $name =~ /^\Q$arg\// );
# routine, so that we save the hassle of dealing with
# mangling, merging and attributes.
#
- $HardLinkExtraFiles{$hdr->{linkname}} = 1;
- archiveWrite($fh, $hdr->{linkname}, $hdr->{name});
+ my $name = $hdr->{linkname};
+ $name =~ s{^\./}{/};
+ $HardLinkExtraFiles{$name} = $hdr->{name};
+ archiveWrite($fh, $name, $hdr->{name});
}
} elsif ( $hdr->{type} == BPC_FTYPE_SYMLINK ) {
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::Attrib qw(:all);
use BackupPC::FileZIO;
#
my($nRead);
#print("Reading $f->{name}, $f->{size} bytes, type $f->{type}\n");
+ pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f);
my $poolWrite = BackupPC::PoolWrite->new($bpc,
"$OutDir/$ShareName/$f->{mangleName}",
$f->{size}, $Compress);
# a plain file.
#
$f->{size} = length($f->{linkname});
+ pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f);
my $poolWrite = BackupPC::PoolWrite->new($bpc,
"$OutDir/$ShareName/$f->{mangleName}",
$f->{size}, $Compress);
# contents.
#
$f->{size} = length($f->{linkname});
+ pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f);
my $poolWrite = BackupPC::PoolWrite->new($bpc,
"$OutDir/$ShareName/$f->{mangleName}",
$f->{size}, $Compress);
} else {
$data = "$f->{devmajor},$f->{devminor}";
}
+ pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f);
my $poolWrite = BackupPC::PoolWrite->new($bpc,
"$OutDir/$ShareName/$f->{mangleName}",
length($data), $Compress);
$name);
}
+#
+# Create the parent directory of $file if necessary
+#
+sub pathCreate
+{
+ my($dir, $fullPath, $file, $f) = @_;
+
+ #
+ # Get parent directory of each of $dir and $fullPath
+ #
+ $dir =~ s{/[^/]*$}{};
+ $fullPath =~ s{/[^/]*$}{};
+ return if ( -d $fullPath );
+ mkpath($fullPath, 0, 0777);
+ $Attrib{$dir} = BackupPC::Attrib->new({ compress => $Compress })
+ if ( !defined($Attrib{$dir}) );
+ $Attrib{$dir}->set($file, {
+ type => BPC_FTYPE_DIR,
+ mode => 0755,
+ uid => $f->{uid},
+ gid => $f->{gid},
+ size => 0,
+ mtime => 0,
+ });
+}
+
sub catch_signal
{
my $sigName = shift;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) );
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use Compress::Zlib;
use BackupPC::FileZIO;
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
use strict;
no utf8;
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use Archive::Zip qw(:ERROR_CODES);
use File::Path;
use Getopt::Std;
#
#========================================================================
#
-# Version 2.1.0beta2, released 23 May 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
no utf8;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
-use lib "/usr/local/BackupPC/lib";
+use lib "/usr/local/BackupPC2.1.0/lib";
use BackupPC::Lib;
use BackupPC::CGI::Lib qw(:all);
# the directory onto INC if it is missing. This is an ugly hack;
# need to figure out what's really going on...
#
-my $installDir = '/usr/local/BackupPC/lib';
+my $installDir = '/usr/local/BackupPC2.1.0/lib';
push(@INC, $installDir) if ( !grep($_ eq $installDir, @INC) );
#
# - 'rsync': backup and restore via rsync (via rsh or ssh).
# Best choice for linux/unix. Good choice also for WinXX.
#
-# - 'rsyncd': backup and restre via rsync daemon on the client.
+# - 'rsyncd': backup and restore via rsync daemon on the client.
# Best choice for linux/unix if you have rsyncd running on
# the client. Good choice also for WinXX.
#
# Despite the name, this parameter sets the timeout for all transport
# methods (tar, smb etc).
#
-$Conf{ClientTimeout} = 7200;
+$Conf{ClientTimeout} = 72000;
#
# Maximum number of log files we keep around in each PC's directory
# To: $user$domain
# cc:
# Subject: $subj
-#
+# $headers
# Dear $userName,
#
# This is a site-specific email message.
# To: $user$domain
# cc:
# Subject: $subj
-#
+# $headers
# Dear $userName,
#
# This is a site-specific email message.
# To: $user$domain
# cc:
# Subject: $subj
-#
+# $headers
# Dear $userName,
#
# This is a site-specific email message.
# Create CGI image directory
#
foreach my $dir ( ($Conf{CgiImageDir}) ) {
- next if ( $dir eq "" || -d $dir );
+ next if ( $dir eq "" || -d "$DestDir$dir" );
mkpath("$DestDir$dir", 0, 0775);
if ( !-d "$DestDir$dir" || !chown($Uid, $Gid, "$DestDir$dir") ) {
die("Failed to create or chown $DestDir$dir");
Beyond being a satisfied user and telling other people about it, everyone
is encouraged to add links to L<http://backuppc.sourceforge.net>
-(I'll see then via Google) or otherwise publicize BackupPC. Unlike
+(I'll see them via Google) or otherwise publicize BackupPC. Unlike
the commercial products in this space, I have a zero budget (in both
time and money) for marketing, PR and advertising, so it's up to
all of you! Feel free to vote for BackupPC at
=head2 Step 3: Setting up config.pl
After running configure.pl, browse through the config file,
-__INSTALLDIR__/conf/config.pl, and make sure all the default settings
+__TOPDIR__/conf/config.pl, and make sure all the default settings
are correct. In particular, you will need to decide whether to use
smb, tar or rsync transport (or whether to set it on a per-PC basis)
and set the relevant parameters for that transport method.
=item Mac OS X
In general this should be similar to Linux/Unix machines.
-Mark Stosberg reports that you can also use hfstar.
+Many users have reported success using xtar, which also
+backs up the Mac OS X resource forks.
+
+Other choices include rsync and Mark Stosberg reports that you
+can also use hfstar.
See L<http://fink.sourceforge.net/pdb/package.php/hfstar>.
=item SSH Setup
running. Therefore, when it is time to run BackupPC_nightly, no new
backups are started and BackupPC waits until all backups have finished.
Then BackupPC_nightly is run, and until it finishes no new backups are
-started. If BackupPC_nightly is slow, the settings
+started. If BackupPC_nightly takes too long to run, the settings
+$Conf{MaxBackupPCNightlyJobs} and $Conf{BackupPCNightlyPeriod} can
+be used to run several BackupPC_nightly processes in parallel, and
+to split its job over several nights.
=back
=head1 Copyright
-Copyright (C) 2001-2004 Craig Barratt
+Copyright (C) 2001-2005 Craig Barratt
=head1 Credits
restart() {
ebegin "Restarting BackupPC"
svc_stop
+ sleep 1
svc_start
eend $? "Failed to restart BackupPC"
}
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
{
my($status) = @_;
ServerConnect();
+ %Status = () if ( $status =~ /\bhosts\b/ );
+ %StatusHost = () if ( $status =~ /\bhost\(/ );
my $reply = $bpc->ServerMesg("status $status");
$reply = $1 if ( $reply =~ /(.*)/s );
eval($reply);
$Lang->{Last_bad_XferLOG_errors_only},
" class=\"navbar\"");
}
- if ( -f "$TopDir/pc/$host/config.pl" ) {
+ if ( -f "$TopDir/pc/$host/config.pl"
+ || ($host ne "config" && -f "$TopDir/conf/$host.pl") ) {
NavLink("?action=view&type=config&host=${EscURI($host)}",
$Lang->{Config_file}, " class=\"navbar\"");
}
NavSectionTitle($Lang->{NavSectionTitle_});
foreach my $l ( @adminLinks ) {
if ( $PrivAdmin || !$l->{priv} ) {
- my $txt = defined($l->{lname}) ? $Lang->{$l->{lname}} : $l->{name};
+ my $txt = $l->{lname} ne "" ? $Lang->{$l->{lname}} : $l->{name};
NavLink($l->{link}, $txt);
}
}
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
my $view = BackupPC::View->new($bpc, $host, \@Backups);
my $a = $view->fileAttrib($num, $share, $dir);
if ( $dir =~ m{(^|/)\.\.(/|$)} || !defined($a) ) {
- ErrorExit("Can't restore bad file ${EscHTML($dir)}");
+ ErrorExit("Can't restore bad file ${EscHTML($dir)} ($num, $share, $dir)");
}
my $f = BackupPC::FileZIO->open($a->{fullPath}, 0, $a->{compress});
my $data;
}
$f->close;
$linkName =~ s/^\.\///;
- my $share = $1 if ( $dir =~ /^\/?(.*?)\// );
restoreFile($host, $num, $share, $linkName, 1, $dir);
return;
}
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
# -----
-$Lang{Only_privileged_users_can_view_admin_options} = "Seulement les usagers ayant les privilèges appropriés peuvent voir les options d'administration.";
+$Lang{Only_privileged_users_can_view_admin_options} = "Seuls les utilisateurs privilégiés peuvent voir les options d'administration.";
$Lang{H_Admin_Options} = "BackupPC: Options d'administration";
$Lang{Admin_Options} = "Options d'administration";
$Lang{Admin_Options_Page} = <<EOF;
-->
EOF
$Lang{Unable_to_connect_to_BackupPC_server} = "Impossible de se connecter au serveur BackupPC",
- "Ce script CGI (\$MyURL) est incapable de se connecter au serverur BackupPC"
+ "Ce script CGI (\$MyURL) est incapable de se connecter au serveur BackupPC"
. " sur \$Conf{ServerHost} au port \$Conf{ServerPort}. L'erreur"
. " est: \$err."
. " Il est possible que le serveur BackupPC ne roule pas ou qu'il y a une erreur "
<td align="center"> Nb complètes </td>
<td align="center"> Complètes Âge/Jours </td>
<td align="center"> Complètes Taille/Go </td>
- <td align="center"> Vitesse Mo/sec </td>
+ <td align="center"> Vitesse Mo/s </td>
<td align="center"> Nb incrémentielles </td>
<td align="center"> Incrémentielles Âge/Jours </td>
<td align="center"> État actuel </td>
<td align="center"> Nb complètes </td>
<td align="center"> Complètes Âge/jour </td>
<td align="center"> Complètes Taille/Go </td>
- <td align="center"> Vitesse Mo/sec </td>
+ <td align="center"> Vitesse Mo/s </td>
<td align="center"> Nb incrémentielles </td>
<td align="center"> Incrémentielles Âge/jours </td>
<td align="center"> État actuel </td>
<input type="hidden" name="action" value="Archive">
<table class="tableStnd" border cellpadding="3" cellspacing="1">
<tr class="tableheader"><td align=center> Host</td>
- <td align="center"> Usager </td>
+ <td align="center"> Utilisateur </td>
<td align="center"> Taille </td>
\$strGood
\$checkAllHosts
# -----------------------------------
$Lang{Pool_Stat} = <<EOF;
<li>La mise en commun est constituée de \$info->{"\${name}FileCnt"} fichiers
- et \$info->{"\${name}DirCnt"} repertoires représentant \${poolSize} Go (depuis le \$poolTime),
+ et \$info->{"\${name}DirCnt"} répertoires représentant \${poolSize} Go (depuis le \$poolTime),
<li>Le hachage de mise en commun des fichiers donne \$info->{"\${name}FileCntRep"} fichiers répétés
avec comme plus longue chaîne \$info->{"\${name}FileRepMax"},
<li>Le nettoyage nocturne a effacé \$info->{"\${name}FileCntRm"} fichiers, soit
$Lang{REPLY_FROM_SERVER} = <<EOF;
\${h1(\$str)}
<p>
-La réponse du serveur a été: \$reply
+La réponse du serveur a été : \$reply
<p>
Retourner à la page d\'accueil de <a href="\$MyURL?host=\$host">\$host</a>.
EOF
# --------------------------------
$Lang{Only_privileged_users_can_view_queues_} = "Seuls les utilisateurs privilégiés peuvent voir les files.";
# --------------------------------
-$Lang{Only_privileged_users_can_archive} = "(ENSLIGH) Only privileged users can Archive.";
+$Lang{Only_privileged_users_can_archive} = "Seuls les utilisateurs privilégiés peuvent archiver.";
# --------------------------------
$Lang{BackupPC__Queue_Summary} = "BackupPC: Résumé de la file";
# --------------------------------
# -------------------------------
$Lang{Recent_Email_Summary} = <<EOF;
-\${h1("Résumé des courriels récents (Du plus récent au plus vieux)")}
+\${h1("Résumé des courriels récents (du plus récent au plus vieux)")}
<p>
<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td align="center"> Destinataire </td>
$Lang{Restore_Options_for__host2} = <<EOF;
\${h1("Options de restauration sur \$host")}
<p>
-Vous avez sélectionné les fichiers/repertoires suivants depuis
+Vous avez sélectionné les fichiers/répertoires suivants depuis
le partage \$share, sauvegarde numéro \$num:
<ul>
\$fileListStr
</ul>
</p><p>
-Vous avez trois choix pour restaurer ces fichiers/repertoires.
+Vous avez trois choix pour restaurer ces fichiers/répertoires.
Veuillez sélectionner une des options suivantes.
</p>
\${h2("Option 1: Restauration directe")}
$Lang{Reply_from_server_was___reply} = <<EOF;
\${h1(\$str)}
<p>
-La réponse du serveur est: \$reply
+La réponse du serveur est : \$reply
<p>
Retourner à la page d\'accueil de <a href="\$MyURL?host=\$hostDest">\$hostDest </a>.
EOF
$Lang{BackupPC_Archive_Reply_from_server} = <<EOF;
\${h1(\$str)}
<p>
-La réponse du serveur est: \$reply
+La réponse du serveur est : \$reply
EOF
<td align="center"> Type </td>
<td align="center"> Fusionnée </td>
<td align="center"> Date de démarrage </td>
- <td align="center"> Durée/mins </td>
+ <td align="center"> Durée/min </td>
<td align="center"> Âge/jours </td>
<td align="center"> Chemin d\'accès de la sauvegarde sur le serveur </td>
</tr>
<p>
Les fichiers existants sont ceux qui sont déjà sur le serveur;
Les nouveaux fichiers sont ceux qui ont été ajoutés au serveur.
-Les fichiers vides et les erreurs de SMB ne sont pas comptabilisés parmis les nouveaux et les réutilisés.
+Les fichiers vides et les erreurs de SMB ne sont pas comptabilisés parmi les nouveaux et les réutilisés.
</p>
<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
<td align="center"> Type </td>
<td align="center"> Nb de Fichiers </td>
<td align="center"> Taille/Mo </td>
- <td align="center"> Mo/sec </td>
+ <td align="center"> Mo/s </td>
<td align="center"> Nb de Fichiers </td>
<td align="center"> Taille/Mo </td>
<td align="center"> Nb de Fichiers </td>
$Lang{Host__host_Archive_Summary} = "BackupPC: Résumé de l'archivage pour l'hôte \$host";
$Lang{Host__host_Archive_Summary2} = <<EOF;
-\${h1("Host \$host Archive Summary")}
+\${h1("Résumé de l'archivage pour l\'hôte \$host")}
<p>
\$warnStr
<ul>
$Lang{DirHistory_for__host} = <<EOF;
\${h1("Historique des sauvegardes de répertoires pour \$host")}
<p>
-Cette page montre chaque version des fichiers parmis toutes sauvegardes:
+Cette page montre chaque version des fichiers parmi toutes sauvegardes:
<ul>
<li> Cliquez sur un numéro de sauvegarde pour revenir à la navigation de sauvegarde,
<li> Cliquez sur un répertoire (\$Lang->{DirHistory_dirLink}) pour naviguer
<li> Les fichiers qui ne sont pas présents sur une sauvegarde en particulier
sont représentés par une boite vide.
<li> Les fichiers montrés avec la même version peuvent avoir des attributs différents.
- Choissisez le numéro de sauvegarde pour voir les attributs de fichiers.
+ Choisissez le numéro de sauvegarde pour voir les attributs de fichiers.
</ul>
\${h2("Historique de \${EscHTML(\$dirDisplay)}")}
EOF
# ------------------------------
-$Lang{Restore___num_details_for__host} = "BackupPC: Détails de la restauration n° \$num pour \$host";
+$Lang{Restore___num_details_for__host} = "BackupPC: Détails de la restauration n°\$num pour \$host";
$Lang{Restore___num_details_for__host2} = <<EOF;
-\${h1("Détails de la restauration n° \$num pour \$host")}
+\${h1("Détails de la restauration n°\$num pour \$host")}
<p>
<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%">
<tr><td class="tableheader"> Numéro </td><td class="border"> \$Restores[\$i]{num} </td></tr>
<tr><td class="tableheader"> Durée </td><td class="border"> \$duration min </td></tr>
<tr><td class="tableheader"> Nombre de fichier </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr>
<tr><td class="tableheader"> Grosseur totale </td><td class="border"> \${MB} Mo </td></tr>
-<tr><td class="tableheader"> Taux de transfert </td><td class="border"> \$MBperSec Mo/sec </td></tr>
+<tr><td class="tableheader"> Taux de transfert </td><td class="border"> \$MBperSec Mo/s </td></tr>
<tr><td class="tableheader"> Erreurs de TarCreate </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr>
<tr><td class="tableheader"> Erreurs de transfert </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr>
<tr><td class="tableheader"> Journal de transfert </td><td class="border">
EOF
# ------------------------------
-$Lang{Archive___num_details_for__host} = "BackupPC: Détails de l'archivage no. \$num pour \$host";
+$Lang{Archive___num_details_for__host} = "BackupPC: Détails de l'archivage n°\$num pour \$host";
$Lang{Archive___num_details_for__host2 } = <<EOF;
-\${h1("Archive #\$num Details for \$host")}
+\${h1("Détails de l'archivage n°\$num pour \$host")}
<p>
<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr><td class="tableheader"> Numéro </td><td class="border"> \$Archives[\$i]{num} </td></tr>
$Lang{Unknown_host_or_user} = "\${EscHTML(\$host)}, hôte ou utilisateur inconnu.";
$Lang{Only_privileged_users_can_view_information_about} = "Seuls les utilisateurs privilégiés peuvent accéder aux "
. " informations sur l\'hôte \${EscHTML(\$host)}." ;
-$Lang{Only_privileged_users_can_view_archive_information} = "Seuls les usagers ayant les privilèges nécessaires peuvent voir les informations d'archivage.";
+$Lang{Only_privileged_users_can_view_archive_information} = "Seuls les utilisateurs privilégiés peuvent voir les informations d'archivage.";
$Lang{Only_privileged_users_can_view_restore_information} = "Seuls les utilisateurs privilégiés peuvent restaurer des informations.";
$Lang{Restore_number__num_for_host__does_not_exist} = "Restauration numéro \$num de l\'hôte \${EscHTML(\$host)} n\'existe pas";
-$Lang{Archive_number__num_for_host__does_not_exist} = "L'archive no \$num pour l'hôte \${EscHTML(\$host)} n'existe pas.";
+$Lang{Archive_number__num_for_host__does_not_exist} = "L'archive n°\$num pour l'hôte \${EscHTML(\$host)} n'existe pas.";
$Lang{Can_t_find_IP_address_for} = "Ne peut pas trouver d\'adresse IP pour \${EscHTML(\$host)}";
$Lang{host_is_a_DHCP_host} = <<EOF;
$Lang{Backup_requested_on__host_by__User} = "Sauvegarde demandée sur \$host par \$User";
$Lang{Backup_stopped_dequeued_on__host_by__User} = "Sauvegarde Arrêtée/déprogrammée pour \$host par \$User";
$Lang{Restore_requested_to_host__hostDest__backup___num} = "Restauration demandée pour l\'hôte \$hostDest, "
- . "sauvegarde n° \$num, par \$User depuis \$ENV{REMOTE_ADDR}";
+ . "sauvegarde n°\$num, par \$User depuis \$ENV{REMOTE_ADDR}";
$Lang{Archive_requested} = "Archivage demandé par \$User de \$ENV{REMOTE_ADDR}";
# -------------------------------------------------
# ------------
$Lang{Last_email_sent_to__was_at___subject} = <<EOF;
-<li>Dernier email envoyé à \${UserLink(\$user)} le \$mailTime, avait comme sujet "\$subj".
+<li>Dernier courriel envoyé à \${UserLink(\$user)} le \$mailTime, avait comme sujet "\$subj".
EOF
# ------------
$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF;
# ------
$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF;
-<li>Les pings vers \$host ont échoués \$StatusHost{deadCnt} fois consécutives.
+<li>Les pings vers \$host ont échoué \$StatusHost{deadCnt} fois consécutives.
EOF
# -----
<tr class="tableheader"><td align="center"> Sauvegarde n° </td>
<td align="center"> Résultat </td>
<td align="right"> Date de départ</td>
- <td align="right"> Durée/mins</td>
+ <td align="right"> Durée/min</td>
<td align="right"> Nb fichiers </td>
<td align="right"> Mo </td>
<td align="right"> Nb errs tar </td>
$Lang{Yes} = "oui";
$Lang{The_directory_is_empty} = <<EOF;
-<tr><td bgcolor="#ffffff">Le repertoire \${EscHTML(\$dirDisplay)} est vide
+<tr><td bgcolor="#ffffff">Le répertoire \${EscHTML(\$dirDisplay)} est vide
</td></tr>
EOF
$Lang{Status_idle} = "inactif";
$Lang{Status_backup_starting} = "début de la sauvegarde";
$Lang{Status_backup_in_progress} = "sauvegarde en cours";
-$Lang{Status_restore_starting} = "début de la restoration";
-$Lang{Status_restore_in_progress} = "restoration en cours";
+$Lang{Status_restore_starting} = "début de la restauration";
+$Lang{Status_restore_in_progress} = "restauration en cours";
$Lang{Status_link_pending} = "en attente de l'édition de liens";
$Lang{Status_link_running} = "édition de liens en cours";
Notre logiciel de copies de sécurité n'a jamais réussi à
prendre de sauvegarde de votre ordinateur ($host). Les sauvegardes
-devraient normallement survenir lorsque votre ordinateur est connecté
+devraient normalement survenir lorsque votre ordinateur est connecté
au réseau. Vous devriez contacter le support informatique si:
- Votre ordinateur est régulièrement connecté au réseau, ce qui
au réseau lorsque ce sera possible.
Merci de votre attention,
-BackupPC Genie
+BackupPC Génie
http://backuppc.sourceforge.net
EOF
Aucune sauvegarde de votre ordinateur n'a été effectuée depuis $days
jours. $numBackups sauvegardes ont étés effectuées du $firstTime
-jusqu'il y à $days jours. Les sauvegardes devraient normallement
+jusqu'il y à $days jours. Les sauvegardes devraient normalement
survenir lorsque votre ordinateur est connecté au réseau.
Si votre ordinateur a été connecté au réseau plus de quelques heures
avec votre ordinateur.
Merci de votre attention,
-BackupPC Genie
+BackupPC Génie
http://backuppc.sourceforge.net
EOF
# Old Outlook files
-$Lang{EMailOutlookBackupSubj} = "BackupPC: Les fichiers de Outlook sur \$host doivent êtes sauvegardés";
+$Lang{EMailOutlookBackupSubj} = "BackupPC: Les fichiers de Outlook sur \$host doivent être sauvegardés";
$Lang{EMailOutlookBackupMesg} = <<'EOF';
To: $user$domain
cc:
au $lastTime. Par contre, Outlook bloque ses fichiers lorsqu'il est
ouvert, ce qui empêche de les sauvegarder.
-Il est recommendé d'effectuer une sauvegarde de vos fichiers Outlook
+Il est recommandé d'effectuer une sauvegarde de vos fichiers Outlook
quand vous serez connecté au réseau en quittant Outlook et tout autre
application, et en visitant ce lien avec votre fureteur web:
sauvegarde devrait prendre quelques minutes à s'effectuer.
Merci de votre attention,
-BackupPC Genie
+BackupPC Génie
http://backuppc.sourceforge.net
EOF
#!/bin/perl
#
-# $Id: it.pm,v 1.9 2004/06/20 02:21:02 cbarratt Exp $
+# $Id: it.pm,v 1.9.2.1 2005/09/06 04:52:10 cbarratt Exp $
#
# Italian i18n file
#
Ciao $userName,
-e` stato effettuato correttamente il backup del tuo PC ($host) per
+non e` stato effettuato correttamente il backup del tuo PC ($host) per
$days giorni. Dal $firstTime fino a $days fa sono stati eseguiti con
successo $numBackups backup. I backup dei PC dovrebbero avvenire
automaticamente quando il tuo PC e` connesso alla rete.
$Lang{Pool_Stat} = <<EOF;
<li>Gebruikte backupschijfruimte is \${poolSize}GB groot en bevat \$info->{"\${name}FileCnt"} bestanden
en \$info->{"\${name}DirCnt"} mappen (op \$poolTime),
- <li>Schijfruimte bevat \$info->{"\${name}FileCntRep"} identieke
- bestanden (langste reeks is \$info->{"\${name}FileRepMax"},
+ <li>Schijfruimte bevat \$info->{"\${name}FileCntRep"} bestanden met identieke hashcodes (langste reeks is \$info->{"\${name}FileRepMax"},
<li>Nachtelijke opruiming verwijderde \$info->{"\${name}FileCntRm"} bestanden
met een grootte van \${poolRmSize}GB (ongeveer \$poolTime),
EOF
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
my($topDir, $installDir, $noUserCheck) = @_;
my $bpc = bless {
- TopDir => $topDir || '/data/BackupPC',
- BinDir => $installDir || '/usr/local/BackupPC',
- LibDir => $installDir || '/usr/local/BackupPC',
- Version => '2.1.0',
+ TopDir => $topDir || '/data/BackupPC2.1.0',
+ BinDir => $installDir || '/usr/local/BackupPC2.1.0',
+ LibDir => $installDir || '/usr/local/BackupPC2.1.0',
+ Version => '2.1.2',
BackupFields => [qw(
num type startTime endTime
nFiles size nFilesExist sizeExist nFilesNew sizeNew
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
}
}
}
- $m->{files}{$fileUM}{relPath} = "$dir/$fileUM";
- $m->{files}{$fileUM}{sharePathM} = "$sharePathM/$file";
- $m->{files}{$fileUM}{fullPath} = "$path/$file";
- $m->{files}{$fileUM}{backupNum} = $backupNum;
- $m->{files}{$fileUM}{compress} = $compress;
- $m->{files}{$fileUM}{nlink} = $s[3];
- $m->{files}{$fileUM}{inode} = $s[1];
+ ($m->{files}{$fileUM}{relPath} = "$dir/$fileUM") =~ s{//+}{/}g;
+ ($m->{files}{$fileUM}{sharePathM} = "$sharePathM/$file")
+ =~ s{//+}{/}g;
+ ($m->{files}{$fileUM}{fullPath} = "$path/$file") =~ s{//+}{/}g;
+ $m->{files}{$fileUM}{backupNum} = $backupNum;
+ $m->{files}{$fileUM}{compress} = $compress;
+ $m->{files}{$fileUM}{nlink} = $s[3];
+ $m->{files}{$fileUM}{inode} = $s[1];
}
#
# Also include deleted files
}
}
}
- $files->{$fileUM}[$i]{relPath} = "$dir/$fileUM";
- $files->{$fileUM}[$i]{sharePathM} = "$sharePathM/$file";
- $files->{$fileUM}[$i]{fullPath} = "$path/$file";
- $files->{$fileUM}[$i]{backupNum} = $backupNum;
- $files->{$fileUM}[$i]{compress} = $compress;
- $files->{$fileUM}[$i]{nlink} = $s[3];
- $files->{$fileUM}[$i]{inode} = $s[1];
+ ($files->{$fileUM}[$i]{relPath} = "$dir/$fileUM") =~ s{//+}{/}g;
+ ($files->{$fileUM}[$i]{sharePathM} = "$sharePathM/$file")
+ =~ s{//+}{/}g;
+ ($files->{$fileUM}[$i]{fullPath} = "$path/$file") =~ s{//+}{/}g;
+ $files->{$fileUM}[$i]{backupNum} = $backupNum;
+ $files->{$fileUM}[$i]{compress} = $compress;
+ $files->{$fileUM}[$i]{nlink} = $s[3];
+ $files->{$fileUM}[$i]{inode} = $s[1];
}
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
# Note: also update configure.pl when this version number is changed!
#
- if ( $File::RsyncP::VERSION < 0.51 ) {
+ if ( $File::RsyncP::VERSION < 0.52 ) {
$RsyncLibOK = 0;
- $RsyncLibErr = "File::RsyncP module version too old: need 0.50";
+ $RsyncLibErr = "File::RsyncP module version"
+ . " ($File::RsyncP::VERSION) too old: need 0.52";
} else {
$RsyncLibOK = 1;
}
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 2.1.2, released 5 Sep 2005.
#
# See http://backuppc.sourceforge.net.
#
umask(0022);
-my $Version = "2.1.0pl1";
-my $ReleaseDate = "15 Aug 2004";
+my $Version = "2.1.2";
+my $ReleaseDate = "5 Sep 2005";
my $DistDir = "dist/BackupPC-$Version";
my @PerlSrc = qw(
}
if ( /__CONFIGPOD__/ ) {
print OUT $ConfPod;
- } elsif ( /^use lib ".*BackupPC\/lib";/
+ } elsif ( /^use lib ".*BackupPC[\d.]*\/lib";/
|| /^use lib "\/home\/pcbackup\/install\/lib";/ ) {
print OUT "use lib \"__INSTALLDIR__/lib\";\n";
} elsif ( $file =~ /Lib.pm/ && /(.*TopDir *=> .*)'.*',/ ) {
use File::Find;
use File::Path;
-my $BaseVersion = "2.1.0beta2";
+my $BaseVersion = "2.1.1";
my $PatchLevel = "pl1";
my $PatchVersion = "$BaseVersion$PatchLevel";
open(OUT, ">", "$TmpDir/$file")
|| die("Can't open $TmpDir/$file for output\n");
while ( <IN> ) {
- if ( /^use lib ".*BackupPC\/lib";/
+ if ( /^use lib ".*BackupPC[\d.]*\/lib";/
|| /^use lib "\/home\/pcbackup\/install\/lib";/ ) {
print OUT "use lib \"__INSTALLDIR__/lib\";\n";
} elsif ( $file =~ /Lib.pm/ && /(.*TopDir *=> .*)'.*',/ ) {