From 8c30bb82b66f26ccf7e261e2c42711251d0d6ccd Mon Sep 17 00:00:00 2001 From: cbarratt Date: Mon, 7 Jun 2004 00:45:28 +0000 Subject: [PATCH] * Added Dutch translation * Applied changes in BackupPC-2.1.0beta2pl1.diff * Applied a few minor patches from Pete Wenzel --- ChangeLog | 31 + bin/BackupPC_zcat | 13 +- bin/BackupPC_zipCreate | 10 +- conf/config.pl | 9 +- doc-src/BackupPC.pod | 2 + lib/BackupPC/CGI/Archive.pm | 49 +- lib/BackupPC/CGI/Restore.pm | 10 +- lib/BackupPC/CGI/View.pm | 2 +- lib/BackupPC/FileZIO.pm | 2 +- lib/BackupPC/Lang/en.pm | 10 +- lib/BackupPC/Lang/nl.pm | 1320 ++++++++++++++++++++++++++++++ lib/BackupPC/Lib.pm | 24 +- lib/BackupPC/Xfer/RsyncDigest.pm | 8 +- makePatch | 97 +++ 14 files changed, 1538 insertions(+), 49 deletions(-) create mode 100644 lib/BackupPC/Lang/nl.pm create mode 100755 makePatch diff --git a/ChangeLog b/ChangeLog index cb4d6c6..41e5296 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,37 @@ # Version __VERSION__, __RELEASEDATE__ #------------------------------------------------------------------------ +* Added Dutch translation from Lieven Bridts, with tweaks from + Guus Houtzager. + +* Added PC-specific config file read in CGI/Archive.pm. Patch + from Pete Wenzel. + +* Added non-zero exit code to BackupPC_zcat when uncompress fails. + Patch from Pete Wenzel. + +* Cosmetic changes to PC Summary and Log file language strings from + Pete Wenzel. + +#------------------------------------------------------------------------ +# Version 2.1.0beta2pl1, 30 May 2004 +#------------------------------------------------------------------------ + +* Fixed bug in rsync checksum caching code in BackupPC::Xfer::RsyncDigest. + +* BackupPC_zipCreate now ensures the earliest mtime is 1/1/1980, + since zip file formats don't support earlier dates. Reported + by Dan Niles. + +* CGI restore via zip and tar now makes sure stderr is ignored + when BackupPC_tarCreate and BackupPC_zipCreate are run. + Previously any stderr output would get mixed in the archive, + corrupting it. Reported by Dan Niles. + +#------------------------------------------------------------------------ +# Version 2.1.0beta2, 23 May 2004 +#------------------------------------------------------------------------ + * $Conf{BackupFilesOnly} and $Conf{BackupFilesExclude} now apply to every share, rather than just the first, in the case where they are arrays and there are multiple shares. Suggested diff --git a/bin/BackupPC_zcat b/bin/BackupPC_zcat index caf5d99..32ceb37 100755 --- a/bin/BackupPC_zcat +++ b/bin/BackupPC_zcat @@ -48,28 +48,33 @@ use BackupPC::FileZIO; sub zcat { my($fh, $fileName) = @_; - my($data, $r); + my($data, $r, $ret); while ( ($r = $fh->read(\$data, 65536)) > 0 ) { print($data); } if ( $r < 0 ) { print(STDERR "$0: can't uncompress $fileName\n"); + $ret = 1; } $fh->close(); + return $ret; } +my $ret = 0; if ( @ARGV ) { while ( @ARGV ) { if ( defined(my $fh = BackupPC::FileZIO->open($ARGV[0], 0, 1)) ) { - zcat($fh, $ARGV[0]); + $ret ||= zcat($fh, $ARGV[0]); } else { print(STDERR "$0: can't open $ARGV[0]\n"); - exit(1); + $ret = 1; + last; } shift @ARGV; } } else { my $fh = BackupPC::FileZIO->open(*STDIN, 0, 1); - zcat($fh, "stdin"); + $ret ||= zcat($fh, "stdin"); } +exit($ret); diff --git a/bin/BackupPC_zipCreate b/bin/BackupPC_zipCreate index 973995e..e795592 100755 --- a/bin/BackupPC_zipCreate +++ b/bin/BackupPC_zipCreate @@ -271,8 +271,14 @@ sub ZipWriteFile } return if ( !$zipmember ); - # Set the attributes and permissions - $zipmember->setLastModFileDateTimeFromUnix($hdr->{mtime}); + # + # Set the attributes and permissions. The standard zip file + # header cannot handle dates prior to 1/1/1980, or 315561600 + # unix seconds, so we round up the mtime. + # + my $mtime = $hdr->{mtime}; + $mtime = 315561600 if ( $mtime < 315561600 ); + $zipmember->setLastModFileDateTimeFromUnix($mtime); $zipmember->unixFileAttributes($hdr->{mode}); # Zip files don't accept uid and gid, so we put them in the comment field. $zipmember->fileComment("uid=".$hdr->{uid}." gid=".$hdr->{gid}) diff --git a/conf/config.pl b/conf/config.pl index 47d7ac7..64ecd67 100644 --- a/conf/config.pl +++ b/conf/config.pl @@ -581,7 +581,7 @@ $Conf{ArchiveInfoKeepCnt} = 10; # to give a list of directories or files to backup for each share # (the share name is the key). If this is set to just a string or # array, and $Conf{SmbShareName} contains multiple share names, then -# the setting is assumed to apply to only the first share name. +# the setting is assumed to apply all shares. # # Examples: # $Conf{BackupFilesOnly} = '/myFiles'; @@ -606,7 +606,7 @@ $Conf{BackupFilesOnly} = undef; # to give a list of directories or files to exclude for each share # (the share name is the key). If this is set to just a string or # array, and $Conf{SmbShareName} contains multiple share names, then -# the setting is assumed to apply to only the first share name. +# the setting is assumed to apply to all shares. # # The exact behavior is determined by the underlying transport program, # smbclient or tar. For smbclient the exlclude file list is passed into @@ -1135,6 +1135,9 @@ $Conf{ArchivePar} = 0; # Only for file archives. Splits the output into # the specified size * 1,000,000. # e.g. to split into 650,000,000 bytes, specify 650 below. +# +# If the value is 0, or if $Conf{ArchiveDest} is an existing file or +# device (e.g. a streaming tape drive), this feature is disabled. # $Conf{ArchiveSplit} = 650; @@ -1598,7 +1601,7 @@ $Conf{CgiURL} = undef; # # Language to use. See lib/BackupPC/Lang for the list of supported # languages, which include English (en), French (fr), Spanish (es), -# German (de), and Italian (it). +# German (de), Italian (it) and Dutch (nl). # # Currently the Language setting applies to the CGI interface and email # messages sent to users. Log files and other text are still in English. diff --git a/doc-src/BackupPC.pod b/doc-src/BackupPC.pod index f4d0e4a..9ebfa71 100644 --- a/doc-src/BackupPC.pod +++ b/doc-src/BackupPC.pod @@ -3371,6 +3371,8 @@ Manfred continues to support de.pm updates for each new version. Lorenzo Cappelletti provided the Italian translation, it.pm for v2.1.0. +Lieven Bridts provided the Dutch translation, nl.pm, for v2.1.0. + Many people have reported bugs, made useful suggestions and helped with testing; see the ChangeLog and the mail lists. diff --git a/lib/BackupPC/CGI/Archive.pm b/lib/BackupPC/CGI/Archive.pm index e66babe..b235f9b 100644 --- a/lib/BackupPC/CGI/Archive.pm +++ b/lib/BackupPC/CGI/Archive.pm @@ -98,16 +98,23 @@ EOF } else { my(@HostList, @BackupList, $HostListStr, $hiddenStr, $pathHdr, $badFileCnt, $reply, $str); + + # + # Pick up the archive host's config file + # + $bpc->ConfigRead($archHost); + %Conf = $bpc->Conf(); + my $args = { - SplitPath => $bpc->{Conf}{SplitPath}, - ParPath => $bpc->{Conf}{ParPath}, - CatPath => $bpc->{Conf}{CatPath}, - GzipPath => $bpc->{Conf}{GzipPath}, - Bzip2Path => $bpc->{Conf}{Bzip2Path}, - ArchiveDest => $bpc->{Conf}{ArchiveDest}, - ArchiveComp => $bpc->{Conf}{ArchiveComp}, - ArchivePar => $bpc->{Conf}{ArchivePar}, - ArchiveSplit => $bpc->{Conf}{ArchiveSplit}, + SplitPath => $Conf{SplitPath}, + ParPath => $Conf{ParPath}, + CatPath => $Conf{CatPath}, + GzipPath => $Conf{GzipPath}, + Bzip2Path => $Conf{Bzip2Path}, + ArchiveDest => $Conf{ArchiveDest}, + ArchiveComp => $Conf{ArchiveComp}, + ArchivePar => $Conf{ArchivePar}, + ArchiveSplit => $Conf{ArchiveSplit}, topDir => $bpc->{TopDir}, }; @@ -136,42 +143,42 @@ EOF } my ($ArchiveDest, $ArchiveCompNone, $ArchiveCompGzip, $ArchiveCompBzip2, $ArchivePar, $ArchiveSplit); - $ArchiveDest = $bpc->{Conf}{ArchiveDest}; - if ( $bpc->{Conf}{ArchiveComp} eq "none" ) { + $ArchiveDest = $Conf{ArchiveDest}; + if ( $Conf{ArchiveComp} eq "none" ) { $ArchiveCompNone = "checked"; } else { $ArchiveCompNone = ""; } - if ( $bpc->{Conf}{ArchiveComp} eq "gzip" ) { + if ( $Conf{ArchiveComp} eq "gzip" ) { $ArchiveCompGzip = "checked"; } else { $ArchiveCompGzip = ""; } - if ( $bpc->{Conf}{ArchiveComp} eq "bzip2" ) { + if ( $Conf{ArchiveComp} eq "bzip2" ) { $ArchiveCompBzip2 = "checked"; } else { $ArchiveCompBzip2 = ""; } - $ArchivePar = $bpc->{Conf}{ArchivePar}; - $ArchiveSplit = $bpc->{Conf}{ArchiveSplit}; + $ArchivePar = $Conf{ArchivePar}; + $ArchiveSplit = $Conf{ArchiveSplit}; if ( $In{type} == 1 ) { # # Tell the user what options they have # my $paramStr = ""; - if ( $bpc->{Conf}{ArchiveClientCmd} =~ /\$archiveloc\b/ ) { + if ( $Conf{ArchiveClientCmd} =~ /\$archiveloc\b/ ) { $paramStr .= eval("qq{$Lang->{BackupPC_Archive2_location}}"); } - if ( $bpc->{Conf}{ArchiveClientCmd} =~ /\$compression\b/ ) { + if ( $Conf{ArchiveClientCmd} =~ /\$compression\b/ ) { $paramStr .= eval("qq{$Lang->{BackupPC_Archive2_compression}}"); } - if ( $bpc->{Conf}{ArchiveClientCmd} =~ /\$parfile\b/ - && -x $bpc->{Conf}{ParPath} ) { + if ( $Conf{ArchiveClientCmd} =~ /\$parfile\b/ + && -x $Conf{ParPath} ) { $paramStr .= eval("qq{$Lang->{BackupPC_Archive2_parity}}"); } - if ( $bpc->{Conf}{ArchiveClientCmd} =~ /\$splitsize\b/ - && -x $bpc->{Conf}{SplitPath} ) { + if ( $Conf{ArchiveClientCmd} =~ /\$splitsize\b/ + && -x $Conf{SplitPath} ) { $paramStr .= eval("qq{$Lang->{BackupPC_Archive2_split}}"); } my $content = eval("qq{$Lang->{BackupPC_Archive2}}"); diff --git a/lib/BackupPC/CGI/Restore.pm b/lib/BackupPC/CGI/Restore.pm index c627712..70c428b 100644 --- a/lib/BackupPC/CGI/Restore.pm +++ b/lib/BackupPC/CGI/Restore.pm @@ -181,14 +181,15 @@ EOF # This is necessary to ensure the output gets to the correct place # under mod_perl. # - $bpc->cmdSystemOrEval(["$BinDir/BackupPC_tarCreate", + $bpc->cmdSystemOrEvalLong(["$BinDir/BackupPC_tarCreate", "-h", $host, "-n", $num, "-s", $share, @pathOpts, @fileList ], - sub { print(@_); } + sub { print(@_); }, + 1, # ignore stderr ); } elsif ( $In{type} == 2 ) { # @@ -218,7 +219,7 @@ EOF # This is necessary to ensure the output gets to the correct place # under mod_perl. # - $bpc->cmdSystemOrEval(["$BinDir/BackupPC_zipCreate", + $bpc->cmdSystemOrEvalLong(["$BinDir/BackupPC_zipCreate", "-h", $host, "-n", $num, "-c", $In{compressLevel}, @@ -226,7 +227,8 @@ EOF @pathOpts, @fileList ], - sub { print(@_); } + sub { print(@_); }, + 1, # ignore stderr ); } elsif ( $In{type} == 3 ) { # diff --git a/lib/BackupPC/CGI/View.pm b/lib/BackupPC/CGI/View.pm index 378e31e..a17e240 100644 --- a/lib/BackupPC/CGI/View.pm +++ b/lib/BackupPC/CGI/View.pm @@ -216,7 +216,7 @@ sub action return $c; }; # - # Documentation a different header and no pre or post text, + # Documentation has a different header and no pre or post text, # so just handle it here # Header($Lang->{BackupPC__Documentation}, "", 0, $contentSub); diff --git a/lib/BackupPC/FileZIO.pm b/lib/BackupPC/FileZIO.pm index 2b6e70f..44a9aaf 100644 --- a/lib/BackupPC/FileZIO.pm +++ b/lib/BackupPC/FileZIO.pm @@ -177,7 +177,7 @@ sub read # the compressed file. Also seek the file so # it is positioned at the 0xb3. # - seek($self->{fh}, -length($self->{dataIn}), 1); + sysseek($self->{fh}, -length($self->{dataIn}), 1); $self->{eof} = 1; $self->{dataIn} = ""; ##print("Got 0xb3 block: considering eof\n"); diff --git a/lib/BackupPC/Lang/en.pm b/lib/BackupPC/Lang/en.pm index 1276dd0..e040cbf 100644 --- a/lib/BackupPC/Lang/en.pm +++ b/lib/BackupPC/Lang/en.pm @@ -117,7 +117,7 @@ $Lang{BackupPC_Server_Status} = < EOF # -------------------------------- $Lang{Contents_of_log_file} = <\$file, modified \$mtimeStr \$comment +Contents of file \$file, modified \$mtimeStr \$comment EOF # -------------------------------- @@ -1005,7 +1005,7 @@ $Lang{Archive_requested} = "Archive requested by \$User from \$ENV{REMOTE_ADDR}" # ------------------------------------------------- $Lang{Status} = "Status"; -$Lang{PC_Summary} = "PC Summary"; +$Lang{PC_Summary} = "Host Summary"; $Lang{LOG_file} = "LOG file"; $Lang{LOG_files} = "LOG files"; $Lang{Old_LOGs} = "Old LOGs"; diff --git a/lib/BackupPC/Lang/nl.pm b/lib/BackupPC/Lang/nl.pm new file mode 100644 index 0000000..3506433 --- /dev/null +++ b/lib/BackupPC/Lang/nl.pm @@ -0,0 +1,1320 @@ +#!/bin/perl + +#my %lang; +#use strict; +#File: nl.pm version 1.0.2 +# -------------------------------- + +$Lang{Start_Archive} = "Start Archivering"; +$Lang{Stop_Dequeue_Archive} = "Stop/Annuleer Archivering"; +$Lang{Start_Full_Backup} = "Start volledige backup"; +$Lang{Start_Incr_Backup} = "Start stapsgewijze backup"; +$Lang{Stop_Dequeue_Backup} = "Stop/Annuleer backup"; +$Lang{Restore} = "Terugplaatsen"; + +$Lang{Type_full} = "volledig"; +$Lang{Type_incr} = "incrementeel"; + +# ----- + +$Lang{Only_privileged_users_can_view_admin_options} = "Alleen gebruikers met bijzondere rechten kunnen admin.-opties bekijken."; +$Lang{H_Admin_Options} = "BackupPC Server: Admin Opties"; +$Lang{Admin_Options} = "Admin Opties"; +$Lang{Admin_Options_Page} = < +\${h2("Controle van de server")} +
+ + +
Herlaad de configuratie van de server: +
+
+ +EOF +$Lang{Unable_to_connect_to_BackupPC_server} = "Verbinding met de BackupPC server niet mogelijk", + "Dit CGI script (\$MyURL) kan geen verbinding maken met de BackupPC-server" + . " op \$Conf{ServerHost} poort \$Conf{ServerPort}." + . " De foutmelding was: \$err.", + "Mogelijk draait de BackupPC server niet of is er een " + . " configuratiefout. Gelieve dit te melden aan uw systeembeheerder."; +$Lang{Admin_Start_Server} = < +De BackupPC-server op \$Conf{ServerHost} poort \$Conf{ServerPort} +werkt momenteel niet (misschien hebt u hem juist gestopt, of nog niet gestart).
+Wilt u de server nu starten? + + + +EOF + +# ----- + +$Lang{H_BackupPC_Server_Status} = "Overzicht BackupPC Server"; + +$Lang{BackupPC_Server_Status_General_Info}= < +
  • De PID (procesidentificatie) van de server is \$Info{pid}, op machine \$Conf{ServerHost}, + versie \$Info{Version}, gestart op \$serverStartTime. +
  • Dit overzicht werd gemaakt op \$now. +
  • De configuratie werd het laatst ingelezen op \$configLoadTime. +
  • Volgende backupsessie start op \$nextWakeupTime. +
  • Andere informatie: +
      +
    • \$numBgQueue wachtende backupaanvragen sedert laatste geplande wakeup, +
    • \$numUserQueue wachtende backupaanvragen van gebruikers, +
    • \$numCmdQueue wachtende aanvragen op commando, + \$poolInfo +
    • De backupschijf werd het laatst aangevuld tot \$Info{DUlastValue}% + op (\$DUlastTime), het maximum van vandaag is \$Info{DUDailyMax}% (\$DUmaxTime) + en het maximum van gisteren was \$Info{DUDailyMaxPrev}%. +
    + +eof + +$Lang{BackupPC_Server_Status} = < +\$generalInfo + +\${h2("Momenteel lopende jobs")} +

    + + + + + + + + + +\$jobStr +
    Machine Type Gebruiker Starttijd Opdracht PID PID vd overdracht
    +

    + +\${h2("Mislukkingen die aandacht vragen")} +

    + + + + + + + + +\$statusStr +
    Machine Type Gebruiker Laatste poging Details Fouttijd Laaste fout (verschillend van 'geen ping')
    +EOF + +# -------------------------------- +$Lang{BackupPC__Server_Summary} = "BackupPC: Server overzicht"; +$Lang{BackupPC__Archive} = "BackupPC: Archivering"; +$Lang{BackupPC_Summary}=< +Dit overzicht dateert van \$now. +

    + +\${h2("Machine(s) met geslaagde backups")} +

    +Er zijn \$hostCntGood hosts gebackupt, wat een totaal geeft van: +

      +
    • \$fullTot volledige backups met een totale grootte van \${fullSizeTot}GB + (vóór definitief wegschrijven en compressie), +
    • \$incrTot oplopende backups met een totale grootte van \${incrSizeTot}GB + (vóór definitief wegschrijven en compressie). +
    +

    + + + + + + + + + + + +\$strGood +
    Machine Gebruiker Aantal Voll. Voll.Lftd/dagen Voll.Grootte/GB Snelheid MB/sec Aantal Incr. Incr.Lftd/dagen Status Laatste poging
    +

    +\${h2("Hosts zonder backups")} +

    +Er zijn \$hostCntNone hosts zonder backup. +

    + + + + + + + + + + + +\$strNone +
    Machine Gebruiker tal Voll. Voll.Lftd/dagen Voll.Grootte/GB Snelheid MB/sec tal Incr. Incr.Lftd/dagen Status Laatste poging
    +EOF + +$Lang{BackupPC_Archive} = < + + + +Er zijn \$hostCntGood machines gebackupt die een totale grootte vertegenwoordigen van \${fullSizeTot}GB +

    +

    + + + + + + + + +\$strGood +\$checkAllHosts +
    Machine Gebruiker grootte backup
    +
    +

    + +EOF + +$Lang{BackupPC_Archive2} = < +\$HostListStr + +

    +\$hiddenStr + + + + + +\$paramStr + + + + +
    +EOF + +$Lang{BackupPC_Archive2_location} = < + Plaats van archivering /device + + +EOF + +$Lang{BackupPC_Archive2_compression} = < + Compressie + + Geen
    + gzip
    + bzip2 + + +EOF + +$Lang{BackupPC_Archive2_parity} = < + Pariteitspercentage (0 = geen, 5 = standaard) + + +EOF + +$Lang{BackupPC_Archive2_split} = < + Opdelen (splitsen) in + Megabytes + +EOF + +# ----------------------------------- +$Lang{Pool_Stat} = <Gebruikte backupschijfruimte is \${poolSize}GB groot en bevat \$info->{"\${name}FileCnt"} bestanden + en \$info->{"\${name}DirCnt"} mappen (op \$poolTime), +
  • Schijfruimte bevat \$info->{"\${name}FileCntRep"} identieke + bestanden (langste reeks is \$info->{"\${name}FileRepMax"}, +
  • Nachtelijke opruiming verwijderde \$info->{"\${name}FileCntRm"} bestanden + met een grootte van \${poolRmSize}GB (ongeveer \$poolTime), +EOF + +# -------------------------------- +$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: backup aangevraagd van \$host"; +# -------------------------------- +$Lang{REPLY_FROM_SERVER} = < +Antwoord van server was: \$reply +

    +Terug naar \$host hoofdpagina. +EOF +# -------------------------------- +$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: Bevestiging start van de backup van \$host"; +# -------------------------------- +$Lang{Are_you_sure_start} = < +Met deze actie start u een \$type backup van machine \$host. + +

    + + + +Wilt u dat nu doen? + + +
    +EOF +# -------------------------------- +$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: Bevestiging de annulering van de backup van \$host"; +# -------------------------------- +$Lang{Are_you_sure_stop} = < +Met deze actie annuleert u de backup van pc \$host of haalt u de opdracht uit de wachtrij; + +
    + + +Start bovendien geen andere backup gedurende + uur/uren. +

    +Wilt u dit nu bevestigen? + + +

    + +EOF +# -------------------------------- +$Lang{Only_privileged_users_can_view_queues_} = "Enkel bevoorrechte gebruikers kunnen de wachtrij bekijken."; +# -------------------------------- +$Lang{Only_privileged_users_can_archive} = "Enkel bevoorechte gebruikers kunnen archiveren."; +# -------------------------------- +$Lang{BackupPC__Queue_Summary} = "BackupPC: overzicht wachtrij"; +# -------------------------------- +$Lang{Backup_Queue_Summary} = < +\${h2("Overzicht Wachtrij: Gebruikers")} +

    +Deze aanvragen van gebruikers staan momenteel in de wachtrij: +

    + + + + +\$strUser +
    Machine Aanvraagtijd Gebruiker
    +

    + +\${h2("Overzicht Wachtrij: in achtergrond")} +

    +Deze aanvragen voor backups in de achtergrond staan momenteel in de wachtrij: +

    + + + + +\$strBg +
    Machine Aanvraagtijd Gebruiker
    +

    +\${h2("Overzicht Wachtrij: Opdrachten")} +

    +Deze aanvragen via opdracht staan momenteel in de wachtrij: +

    + + + + + +\$strCmd +
    Machine Aanvraagtijd Gebruiker Opdracht
    +EOF + +# -------------------------------- +$Lang{Backup_PC__Log_File__file} = "BackupPC: Logbestand \$file"; +$Lang{Log_File__file__comment} = < +EOF +# -------------------------------- +$Lang{Contents_of_log_file} = <\$file, gewijzigd \$mtimeStr \$comment +EOF + +# -------------------------------- +$Lang{skipped__skipped_lines} = "[ \$skipped lijnen overgeslagen ]\n"; +# -------------------------------- +$Lang{_pre___Can_t_open_log_file__file} = "
    \nKan het logbestand \$file niet openen \n";
    +
    +# --------------------------------
    +$Lang{BackupPC__Log_File_History} = "BackupPC: Geschiedenis Logbestand";
    +$Lang{Log_File_History__hdr} = <
    +
    +
    +    
    +    
    +\$str
    +
    Bestand Grootte Laatste wijziging
    +EOF + +# ------------------------------- +$Lang{Recent_Email_Summary} = < + + + + + +\$str +
    Bestemming Machine Tijd Onderwerp
    +EOF + + +# ------------------------------ +$Lang{Browse_backup__num_for__host} = "BackupPC: Overzicht backup nummer \$num van pc \$host"; + +# ------------------------------ +$Lang{Restore_Options_for__host} = "BackupPC: Opties voor het terugplaatsen van bestanden van machine \$host"; +$Lang{Restore_Options_for__host2} = < +U hebt de volgende bestanden/mappen geselecteerd uit + \$share, backup nummer #\$num: +
      +\$fileListStr +
    +

    +Er zijn drie mogelijkheden om deze bestanden/mappen terug te plaatsen. +Gelieve een van de onderstaande mogelijkheden te kiezen. +

    +\${h2("Optie 1: Rechtstreeks terugplaatsen")} +

    +EOF + +$Lang{Restore_Options_for__host_Option1} = <

    +Waarschuwing: bestaande bestanden met dezelfde naam zullen +overschreven worden! +

    +
    + + + +\$hiddenStr + + + + + + + + + + + + + +
    Zet de bestanden terug naar de pc + + +
    Plaats de bestanden terug in de map (share)
    Plaats de bestanden onder de map
    (relatief tov share)
    +
    +EOF + +$Lang{Restore_Options_for__host_Option1_disabled} = < +\${h2("Optie 2: Download een Zip-bestand")} +

    +U kan een Zip-bestand downloaden dat al de bestanden/mappen bevat die u hebt +geselecteerd. U kan dan een applicatie op uw pc, zoals WinZip, +gebruiken om de bestanden te bekijken of uit te pakken. +

    +Waarschuwing: Afhankelijk van welke bestanden u geselecteerd hebt, +kan dit zip-bestand zeer zeer groot zijn. Het kan meerdere minuten duren +om dit bestand aan te maken en het te downloaden. Uw pc moet ook over voldoende +harde schijfruimte beschikken om het bestand te kunnen bevatten. +

    +
    + + + +\$hiddenStr + + Maak het zip-archief relatief +aan \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} +(in het andere geval zal het archiefbestand volledige padnamen bevatten). +
    +Compressie (0=uit, 1=snel,...,9=hoogst) + +
    + +
    +EOF + +# ------------------------------ + +$Lang{Option_2__Download_Zip_archive2} = < +\${h2("Optie 2: Download Zip-bestand")} +

    +Archive::Zip is niet geïnstalleerd op de backupPC-server en het is +dus niet mogelijk om een Zip-bestand te downloaden. +Gelieve aan uw systeembeheerder te vragen om Archive::Zip te downloaden van +www.cpan.org en te installeren. +

    +EOF + + +# ------------------------------ +$Lang{Option_3__Download_Zip_archive} = < +U kan een tar-bestand downloaden dat alle bestanden/mappen bevat die u +geselecteerd hebt. U kan dan een applicatie op uw pc, zoals tar of WinZip, +gebruiken om de bestanden te bekijken of uit te pakken. +

    +Waarschuwing: Afhankelijk van welke bestanden/mappen u geselecteerd hebt +kan dit bestand zeer, zeer groot worden. Het kan verscheidene minuten duren +om het tar-bestand de maken en te downloaden. Uw pc dient over voldoende vrije +schijfruimte te beschikken om het bestand op te slaan. +

    +
    + + + +\$hiddenStr + + Maak het tar-archief relatief +aan \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} +(anders zal het tar-archief volledige padnamen bevatten). +
    + +
    +EOF + + +# ------------------------------ +$Lang{Restore_Confirm_on__host} = "BackupPC: Bevestig terugplaatsen voor machine \$host"; + +$Lang{Are_you_sure} = < +U hebt gevraagd om bestanden rechtstreeks terug te zetten op de machine \$In{hostDest}. +De volgende bestanden zullen teruggeplaatst worden in share \$In{shareDest}, +uit backup nummer \$num: +

    + + +\$fileListStr +
    Oorspronkelijk bestand/mapzal teruggeplaatst worden in
    + +

    + + + + + + +\$hiddenStr +Is dit wat u wilt doen? Gelieve te bevestigen. + + +
    +EOF + + +# -------------------------- +$Lang{Restore_Requested_on__hostDest} = "BackupPC: Terugplaatsen gevraagd van machine \$hostDest"; +$Lang{Reply_from_server_was___reply} = < +Het antwoord van de server was: \$reply +

    +Ga terug naar \$hostDest homepagina. +EOF + +$Lang{BackupPC_Archive_Reply_from_server} = < +Het antwoord van de server was: \$reply +EOF + + +# ------------------------- +$Lang{Host__host_Backup_Summary} = "BackupPC: Overzicht backup van machine \$host"; + +$Lang{Host__host_Backup_Summary2} = < +\$warnStr +

      +\$statusStr +
    +

    +\${h2("Acties door de gebruiker")} +

    +

    + +\$startIncrStr + + +
    +

    +\${h2("Overzicht backup")} +

    +Klik op het backupnummer om de inhoud te bekijken of om bestanden terug te plaatsen. +

    + + + + + + + + + +\$str +
    backup nr. Type Aangevuld Startdatum Duurtijd in min. Lftd. in dagen Plaats op de server
    +

    + +\$restoreStr +

    +

    +\${h2("Overzicht van fouten tijdens overdracht")} +

    + + + + + + + + + +\$errStr +
    backup nr. Type Bekijken Aantal fouten Aantal foutieve bestanden Aantal foutieve \'shares\' Aantal tar-fouten
    +

    + +\${h2("Overzicht bestandsgrootte en hergebruik")} +

    +Bestaande bestanden zijn bestanden die reeds aanwezig waren op de backupschijf. +Nieuwe bestanden zijn bestanden die aan de schijf zijn toegevoegd. +Lege bestanden en SMB-fouten worden niet geteld in de aantallen \'hergebruik\' en \'nieuw\'. +

    + + + + + + + + + + + + + + + + + +\$sizeStr +
    Totalen Bestaande bestanden Nieuwe bestanden
    backup nr. Type Aantal best. Grootte in MB MB/sec Aantal best. Grootte in MB Aantal best. Grootte in MB
    +

    + +\${h2("Overzicht compressie")} +

    +Compressie van bestanden die reeds op schijf stonden en van nieuw +gecomprimeerde bestanden. +

    + + + + + + + + + + + + + + + +\$compStr +
    Bestaande bestanden Nieuwe bestanden
    backup nr. Type Comp.niveau Grootte in MB Comp.in MB Comp. Grootte in MB Comp.in MB Comp.
    +

    +EOF + +$Lang{Host__host_Archive_Summary} = "BackupPC: Overzicht archivering machine \$host"; +$Lang{Host__host_Archive_Summary2} = < +\$warnStr +
      +\$statusStr +
    + +\${h2("Acties van de gebruiker")} +

    +

    + + + + +
    + +\$ArchiveStr + +EOF + +# ------------------------- +$Lang{Error} = "BackupPC: Fout"; +$Lang{Error____head} = <\$mesg

    +EOF + +# ------------------------- +$Lang{NavSectionTitle_} = "Server"; + +# ------------------------- +$Lang{Backup_browse_for__host} = < + + + +
    + + + + +
      +
    • U bekijkt nu backup nummer \$num, die gestart werd rond \$backupTime + (\$backupAge dagen geleden), +\$filledBackup +
    • Ga naar map: +
    • Klik op een map hieronder om de inhoud van die map te bekijken, +
    • Klik op een bestand hieronder om dat bestand terug te zetten. +
    • U kan de backupgeschiedenis bekijken van de huidige map. +
    +
    + +\${h2("Inhoud van \${EscHTML(\$dirDisplay)}")} +
    + + + + + +
    + +
    +
    + \$dirStr +
    +
    + +
    + + \$fileHeader + \$topCheckAll + \$fileStr + \$checkAll +
    +
    +
    + +
    +EOF + +# ------------------------------ +$Lang{DirHistory_backup_for__host} = "BackupPC: Geschiedenis van een map van backup van \$host"; + +# +# These two strings are used to build the links for directories and +# file versions. Files are appended with a version number. +# +$Lang{DirHistory_dirLink} = "map"; +$Lang{DirHistory_fileLink} = "v"; + +$Lang{DirHistory_for__host} = < +Deze geschiedenis toont elke unieke versie van de bestanden over +alle backups heen: +
      +
    • Klik op een backupnummer om terug te keren naar het overzicht van de backup, +
    • Klik op een map-link (\$Lang->{DirHistory_dirLink}) om door + die map te bladeren, +
    • Klik op de versie-link van een bestand (\$Lang->{DirHistory_fileLink}0, + \$Lang->{DirHistory_fileLink}1, ...) om dat bestand te downloaden, +
    • Bestanden met dezelfde inhoud maar in verschillende backups hebben + hetzelfde versienummer, +
    • Bestanden of mappen die in een bepaalde backup niet aanwezig zijn hebben + een lege cel. +
    • Bestanden met hetzelfde versienummer kunnen wel verschillende attributen + (eigenaar,lees- of schrijfrechten) hebben.Selecteer het backupnummer om + de attributen van het bestand te bekijken. +
    + +\${h2("Geschiedenis van \${EscHTML(\$dirDisplay)}")} + +
    + +\$backupNumStr +\$backupTimeStr +\$fileStr +
    backup nummer
    backup moment
    +EOF +# ------------------------------ +$Lang{Restore___num_details_for__host} = "BackupPC: Details van herstel nr. #\$num van machine \$host"; + +$Lang{Restore___num_details_for__host2} = < + + + + + + + + + + + + + + + + + + + +
    Nummer \$Restores[\$i]{num}
    Aangevraagd door \$RestoreReq{user}
    Aanvraagtijd \$reqTime
    Resultaat \$Restores[\$i]{result}
    Foutmelding \$Restores[\$i]{errorMsg}
    Bronmachine \$RestoreReq{hostSrc}
    Bron backupnr. \$RestoreReq{num}
    Bron share \$RestoreReq{shareSrc}
    Bestemmingsmachine \$RestoreReq{hostDest}
    Bestemmingsshare \$RestoreReq{shareDest}
    Starttijd \$startTime
    Duur \$duration min
    Aantal bestanden \$Restores[\$i]{nFiles}
    Totale grootte \${MB} MB
    Overdrachtsratio \$MBperSec MB/sec
    TarCreate fouten \$Restores[\$i]{tarCreateErrs}
    Overdrachtsfouten \$Restores[\$i]{xferErrs}
    Logbestand overdracht +Bekijken, +Fouten +
    +

    +\${h1("Lijst bestanden/mappen")} +

    + + +\$fileListStr +
    Oorspronkelijk bestand/mapTeruggeplaatst naar
    +EOF + +# ----------------------------------- +$Lang{Archive___num_details_for__host} = "BackupPC: Details van archivering nr. \$num van \$host"; + +$Lang{Archive___num_details_for__host2 } = < + + + + + + + + + +
    Nummer \$Archives[\$i]{num}
    Aangevraagd door \$ArchiveReq{user}
    Aanvraagtijd \$reqTime
    Resultaat \$Archives[\$i]{result}
    Foutmelding \$Archives[\$i]{errorMsg}
    Starttijd \$startTime
    Duur \$duration min
    Logbestand overdracht +Bekijken, +Fouten +
    +

    +\${h1("Lijst machines")} +

    + + +\$HostListStr +
    Machinebackup nr.
    +EOF + +# ----------------------------------- +$Lang{Email_Summary} = "BackupPC: Overzicht E-mail"; + +# ----------------------------------- +# !! ERROR messages !! +# ----------------------------------- +$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new mislukt: controleer de apache error_log\n"; +$Lang{Wrong_user__my_userid_is___} = + "Foutieve gebruiker: mijn userid is \$>, in plaats van \$uid" + . "(\$Conf{BackupPCUser})\n"; +# $Lang{Only_privileged_users_can_view_PC_summaries} = "Enkel gebruikers met bijzondere rechten kunnen PC-overzichten bekijken."; +$Lang{Only_privileged_users_can_stop_or_start_backups} = + "Enkel gebruikers met bijzondere rechten kunnen backups stoppen of starten van machine" + . " \${EscHTML(\$host)}."; +$Lang{Invalid_number__num} = "Ongeldig of onjuist nummer \$num"; +$Lang{Unable_to_open__file__configuration_problem} = "Ik kan \$file niet openen: misschien problemen met de configuratie?"; +$Lang{Only_privileged_users_can_view_log_or_config_files} = "Enkel gebruikers met bijzondere rechten kunnen log- of configuratiebestanden bekijken."; +$Lang{Only_privileged_users_can_view_log_files} = "Enkel gebruikers met bijzondere rechten kunnen logbestanden bekijken."; +$Lang{Only_privileged_users_can_view_email_summaries} = "Enkel gebruikers met bijzondere rechten kunnen het e-mailoverzicht bekijken."; +$Lang{Only_privileged_users_can_browse_backup_files} = "Enkel gebruikers met bijzondere rechten kunnen de backup " + . "van machine \${EscHTML(\$In{host})} bekijken."; +$Lang{Empty_host_name} = "Geen of lege machinenaam."; +$Lang{Directory___EscHTML} = "Map \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}" + . " is leeg"; +$Lang{Can_t_browse_bad_directory_name2} = "Kan niet bladeren door foutieve mapnaam" + . " \${EscHTML(\$relDir)}"; +$Lang{Only_privileged_users_can_restore_backup_files} = "Enkel gebruikers met bijzondere rechten kunnen backupbestanden" + . " van machine \${EscHTML(\$In{host})} terugplaatsen."; +$Lang{Bad_host_name} = "Foutieve of ongeldige machinenaam \${EscHTML(\$host)}"; +$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "U hebt geen enkel bestand geselecteerd. Gelieve terug te gaan en" + . " selecteer een of meerdere bestanden."; +$Lang{You_haven_t_selected_any_hosts} = "U hebt geen machine geselecteerd. Gelieve terug te gaan om" + . " een machine te selecteren."; +$Lang{Nice_try__but_you_can_t_put} = "Goed geprobeerd, maar u kan geen \'..\' in de bestandsnamen plaatsen"; +$Lang{Host__doesn_t_exist} = "Machine \${EscHTML(\$In{hostDest})} bestaat niet."; +$Lang{You_don_t_have_permission_to_restore_onto_host} = "U beschikt niet over de juiste rechten om bestanden terug te plaatsen naar machine " + . " \${EscHTML(\$In{hostDest})}"; +$Lang{Can_t_open_create} = "Ik kan " + . "\${EscHTML(\"\$TopDir/pc/\$hostDest/\$reqFileName\")} niet openen of aanmaken"; +$Lang{Only_privileged_users_can_restore_backup_files2} = "Alleen gebruikers met bijzondere rechten kunnen bestanden terugplaatsen" + . " naar machine \${EscHTML(\$host)}."; +$Lang{Empty_host_name} = "Lege machinenaam"; +$Lang{Unknown_host_or_user} = "Onbekende machine of gebruiker \${EscHTML(\$host)}"; +$Lang{Only_privileged_users_can_view_information_about} = "Enkel gebruikers met bijzondere rechten kunnen informatie over" + . " machine \${EscHTML(\$host)} bekijken." ; +$Lang{Only_privileged_users_can_view_archive_information} = "Enkel gebruikers met bijzondere rechten kunnen archiveringsinformatie bekijken."; +$Lang{Only_privileged_users_can_view_restore_information} = "Enkel gebruikers met bijzondere rechten kunnen herstelinformatie bekijken."; +$Lang{Restore_number__num_for_host__does_not_exist} = "Terugplaatsing nr.\$num van machine \${EscHTML(\$host)}" + . " bestaat niet."; +$Lang{Archive_number__num_for_host__does_not_exist} = "Archiveringsnr. \$num van machine \${EscHTML(\$host)}" + . " bestaat niet."; +$Lang{Can_t_find_IP_address_for} = "Ik kan het IP-nummer van \${EscHTML(\$host)} niet vinden."; +$Lang{host_is_a_DHCP_host} = < +In afwachting dat ik machine \$host op een welbepaald DHCP-adres terugvind, kan u +deze aanvraag enkel doen vanaf die machine zelf. +EOF + +# ------------------------------------ +# !! Server Mesg !! +# ------------------------------------ + +$Lang{Backup_requested_on_DHCP__host} = "backup aangevraagd van DHCP \$host (\$In{hostIP}) door" + . " \$User vanaf \$ENV{REMOTE_ADDR}"; +$Lang{Backup_requested_on__host_by__User} = "backup aangevraagd van \$host door \$User"; +$Lang{Backup_stopped_dequeued_on__host_by__User} = "backup geannuleerd van \$host door \$User"; +$Lang{Restore_requested_to_host__hostDest__backup___num} = "Terugplaatsing aangevraagd naar machine \$hostDest, backup nr.\$num," + . " door \$User vanaf \$ENV{REMOTE_ADDR}"; +$Lang{Archive_requested} = "Archivering aangevraagd door \$User vanaf \$ENV{REMOTE_ADDR}"; + +# ------------------------------------------------- +# ------- Stuff that was forgotten ---------------- +# ------------------------------------------------- + +$Lang{Status} = "Status"; +$Lang{PC_Summary} = "PC overzicht"; +$Lang{LOG_file} = "LOG-bestand"; +$Lang{LOG_files} = "LOG-bestanden"; +$Lang{Old_LOGs} = "Oude LOGs"; +$Lang{Email_summary} = "E-mailoverzicht"; +$Lang{Config_file} = "Configuratiebest."; +$Lang{Hosts_file} = "Hosts-bestand"; +$Lang{Current_queues} = "Huidige wachtrij"; +$Lang{Documentation} = "Documentatie"; + +#$Lang{Host_or_User_name} = "Machine of gebruikersnaam:"; +$Lang{Go} = "Start"; +$Lang{Hosts} = "Machines"; +$Lang{Select_a_host} = "Selecteer een machine..."; + +$Lang{There_have_been_no_archives} = "

    Er waren (nog) geen archiveringen

    \n"; +$Lang{This_PC_has_never_been_backed_up} = "

    Deze PC werd (nog) nooit gebackupt !!

    \n"; +$Lang{This_PC_is_used_by} = "
  • Deze PC wordt gebruikt door \${UserLink(\$user)}"; + +$Lang{Extracting_only_Errors} = "(Enkel de foutmeldingen)"; +$Lang{XferLOG} = "OverdrachtsLOG"; +$Lang{Errors} = "Foutmeldingen"; + +# ------------ +$Lang{Last_email_sent_to__was_at___subject} = <Meest recente e-mail die gezonden werd naar \${UserLink(\$user)} was op \$mailTime, onderwerp: "\$subj". +EOF +# ------------ +$Lang{The_command_cmd_is_currently_running_for_started} = <De opdracht \$cmd loopt momenteel voor machine \$host sedert \$startTime. +EOF + +# ----------- +$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <Machine \$host staat klaar in de wachtrij \'achtergrond\' (backup zal weldra starten). +EOF + +# ---------- +$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <Machine \$host staat in de gebruikers-wachtrij (backup zal weldra starten). +EOF + +# --------- +$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <Een opdracht voor machine \$host staat in de opdrachtenwachtrij (opdracht zal weldra starten). +EOF + +# -------- +$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <Meest recente status is \"\$Lang->{\$StatusHost{state}}\"\$reason sedert \$startTime. +EOF + +# -------- +$Lang{Last_error_is____EscHTML_StatusHost_error} = <Meest recente foutmelding was \"\${EscHTML(\$StatusHost{error})}\". +EOF + +# ------ +$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <Pings naar machine \$host zijn \$StatusHost{deadCnt} opeenvolgende keren mislukt. +EOF + +# ----- +$Lang{Prior_to_that__pings} = "Daarvoor, pings"; + +# ----- +$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <\$priorStr naar machine \$host zijn \$StatusHost{aliveCnt} opeenvolgende keren geslaagd. + +EOF + +$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <Omdat machine \$host op het netwerk was gedurende minstens \$Conf{BlackoutGoodCnt} +opeenvolgende keren, zal hij niet gebackupt worden van \$blackoutStr +EOF + +$Lang{__time0_to__time1_on__days} = "\$t0 tot \$t1 op \$days."; + +$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <backups zijn \$hours uren uitgesteld +(Wijzig dit aantal). +EOF + +$Lang{tryIP} = " en \$StatusHost{dhcpHostIP}"; + +# $Lang{Host_Inhost} = "Machine \$In{host}"; + +$Lang{checkAll} = < + Selecteer alles + + + +EOF + +$Lang{checkAllHosts} = < + Selecteer alles + + + +EOF + +$Lang{fileHeader} = < Naam + Type + Mode + Nr. + Grootte + Wijziging + +EOF + +$Lang{Home} = "Home"; +$Lang{Browse} = "Bekijke backups"; +$Lang{Last_bad_XferLOG} = "Laaste overdr.LOG met fouten"; +$Lang{Last_bad_XferLOG_errors_only} = "Laaste overdr.LOG (enkel foutmeldingen)"; + +$Lang{This_display_is_merged_with_backup} = < Dit overzicht is samengevoegd met backup #\$numF. +EOF + +$Lang{Visit_this_directory_in_backup} = < Selecteer de backup die u wil bekijken: +EOF + +$Lang{Restore_Summary} = < +Klik op het terugplaatsingsnummer voor meer details. + + + + + + + + + + +\$restoreStr +
    Terugplaatsing nr. Resultaat Startdatum Duur(min.) Aantal best. MB Aantal tar-fouten Aantal Overdr.fouten
    +

    +EOF + +$Lang{Archive_Summary} = < +Klik op het archiveringsnummer voor meer details. + + + + + + +\$ArchiveStr +
    Archiveringsnr. Resultaat Startdatum Duur/min
    +

    +EOF + +$Lang{BackupPC__Documentation} = "BackupPC: Documentatie"; + +$Lang{No} = "nee"; +$Lang{Yes} = "ja"; + +$Lang{The_directory_is_empty} = <De map/directory \${EscHTML(\$dirDisplay)} is leeg + +EOF + +#$Lang{on} = "aan"; +$Lang{off} = "uit"; + +$Lang{backupType_full} = "volledig"; +$Lang{backupType_incremental} = "incrementeel"; +$Lang{backupType_partial} = "gedeeltelijk"; + +$Lang{failed} = "mislukt"; +$Lang{success} = "succesvol"; +$Lang{and} = "en"; + +# ------ +# Hosts states and reasons +$Lang{Status_idle} = "in rust"; +$Lang{Status_backup_starting} = "backup start"; +$Lang{Status_backup_in_progress} = "backup bezig"; +$Lang{Status_restore_starting} = "terugplaatsen start"; +$Lang{Status_restore_in_progress} = "terugplaatsen bezig"; +$Lang{Status_link_pending} = "wacht op linken"; +$Lang{Status_link_running} = "linken is bezig"; + +$Lang{Reason_backup_done} = "backup voltooid"; +$Lang{Reason_restore_done} = "terugplaatsen voltooid"; +$Lang{Reason_archive_done} = "archivering voltooid"; +$Lang{Reason_nothing_to_do} = "niets te doen"; +$Lang{Reason_backup_failed} = "backup mislukt"; +$Lang{Reason_restore_failed} = "terugplaatsen mislukt"; +$Lang{Reason_archive_failed} = "archivering mislukt"; +$Lang{Reason_no_ping} = "geen ping"; +$Lang{Reason_backup_canceled_by_user} = "backup geannuleerd door gebruiker"; +$Lang{Reason_restore_canceled_by_user} = "terugplaatsen geannuleerd door gebruiker"; +$Lang{Reason_archive_canceled_by_user} = "archivering geannuleerd door gebruiker"; + +# --------- +# Email messages + +# No backup ever +$Lang{EMailNoBackupEverSubj} = "BackupPC: Er werd (nog) geen backup gemaakt van pc \$host"; +$Lang{EMailNoBackupEverMesg} = <<'EOF'; +To: $user$domain +cc: +Subject: $subj + +Beste $userName, + +Uw pc ($host) is tot op heden nog nooit succesvol gebackupt door +onze PC backup software. PC backups zouden automatisch moeten gebeuren +als uw pc verbonden is met het netwerk. +U kan best contact opnemen met de systeembeheerder als: + + - Uw pc regelmatig en normaal verbonden was met het netwerk. + Mogelijk is er immers een configuratie of setupfout waardoor + backups niet mogelijk waren/zijn. + + - U helemaal geen backup wenst van deze pc en u wil dat er + hierover geen e-mail meer gezonden worden + +In andere gevallen dient u er voor te zorgen dat uw pc zo spoedig +mogelijk verbonden wordt met het netwerk. +In geval van twijfel of voor hulp kan u contact opnemen met de +systeembeheerder. + +Met vriendelijke groeten, +BackupPC Genie +http://backuppc.sourceforge.net +EOF + +# No recent backup +$Lang{EMailNoBackupRecentSubj} = "BackupPC: er zijn recentelijk geen backups (meer) gemaakt van pc \$host"; +$Lang{EMailNoBackupRecentMesg} = <<'EOF'; +To: $user$domain +cc: +Subject: $subj + +Beste $userName, + +Er is reeds gedurende $days dagen geen backup meer gemaakt van uw pc ($host). +Er zijn ondertussen van uw pc $numbackups gemaakt sinds $firstTime. +De laatste backup dateert van $days geleden. +PC backups zouden automatisch moeten gebeuren als uw pc verbonden +is met het netwerk. + +Als uw pc gedurende geruime tijd (meer dan een paar uur) verbonden +was met het netwerk gedurende de laatste $days dagen, kan u het beste +contact opnemen van uw systeembeheerder. Vraag hem of haar om uit te +zoeken waarom er geen backups meer genomen worden van uw pc. + +Anderzijds, als deze pc of notebook zich momenteel niet in het netwerk +bevindt dan kan u hieraan weinig doen behalve van belangrijke bestanden +handmatig een copy nemen op een ander medium (CD,diskette, tape,andere pc,...) +U dient te weten dat *geen enkel bestand* dat u aanmaakte of wijzigde in de +laatste $days dagen teruggeplaatst zal kunnen worden in geval de harde schijf +van uw pc zou crashen. Hierin zijn nieuwe e-mail en bijlagen inbegrepen. + + +Met vriendelijke groeten, +BackupPC Genie +http://backuppc.sourceforge.net +eof + +# Old Outlook files +$Lang{EMailOutlookBackupSubj} = "BackupPC: Outlookbestanden op pc \$host moeten gebackupt worden"; +$Lang{EMailOutlookBackupMesg} = <<'EOF'; +To: $user$domain +cc: +Subject: $subj + +Beste $userName, + +De Outlookbestanden van uw pc zijn $howlong. + +Deze bestanden bevatten al uw e-mail, bijlagen, contactadressen en agenda. + +Uw pc werd reeds $numBackups keer succesvol gebackupt sinds $firstTime +tot $lastTime dagen geleden. +Helaas, wanneer Outlook geopend is, worden al de bijhorende bestanden +ontoegankelijk gemaakt voor andere programma's, inclusief het programma backupPC. +Hierdoor kon van deze bestanden geen backup gemaakt worden. + +Als u nu verbonden bent met het netwerk, wordt U aangeraden om een +backup te maken van de Outlookbestanden. Dat kan op volgende manier: +- Sluit Outlook +- Sluit bij voorkeur ook alle andere toepassingen +- open uw browser en ga naar deze link: + + $CgiURL?host=$host + +- Kies dan voor "Start incrementele backup" tweemaal om zo een incrementele backup te starten. + +U kan klikken op de link "Terug naar $host pagina" en vervolgens op "vernieuwen" +om de status van de backup te bekijken. Het zou slechts enkele ogenblikken mogen +vragen vooraleer de backup volledig is. + +Met vriendelijke groeten, +BackupPC Genie +http://backuppc.sourceforge.net +EOF + +$Lang{howLong_not_been_backed_up} = "(nog) niet succesvol gebackupt"; +$Lang{howLong_not_been_backed_up_for_days_days} = "reeds sedert \$days dagen niet gebackupt"; + +#end of lang_nl.pm + diff --git a/lib/BackupPC/Lib.pm b/lib/BackupPC/Lib.pm index 560a680..22a73da 100644 --- a/lib/BackupPC/Lib.pm +++ b/lib/BackupPC/Lib.pm @@ -59,7 +59,7 @@ sub new TopDir => $topDir || '/data/BackupPC', BinDir => $installDir || '/usr/local/BackupPC', LibDir => $installDir || '/usr/local/BackupPC', - Version => '2.1.0beta2', + Version => '2.1.0beta2pl1', BackupFields => [qw( num type startTime endTime nFiles size nFilesExist sizeExist nFilesNew sizeNew @@ -1137,9 +1137,9 @@ sub cmdExecOrEval # # Also, $? should be set when the CHILD pipe is closed. # -sub cmdSystemOrEval +sub cmdSystemOrEvalLong { - my($bpc, $cmd, $stdoutCB, @args) = @_; + my($bpc, $cmd, $stdoutCB, $ignoreStderr, @args) = @_; my($pid, $out, $allOut); local(*CHILD); @@ -1173,7 +1173,11 @@ sub cmdSystemOrEval # This is the child # close(STDERR); - open(STDERR, ">&STDOUT"); + if ( $ignoreStderr ) { + open(STDERR, ">", "/dev/null"); + } else { + open(STDERR, ">&STDOUT"); + } alarm(0); $cmd = [map { m/(.*)/ } @$cmd]; # untaint # @@ -1200,6 +1204,18 @@ sub cmdSystemOrEval return $out; } +# +# The shorter version that sets $ignoreStderr = 0, ie: merges stdout +# and stderr together. +# +sub cmdSystemOrEval +{ + my($bpc, $cmd, $stdoutCB, @args) = @_; + + return $bpc->cmdSystemOrEvalLong($cmd, $stdoutCB, 0, @args); +} + + # # Promotes $conf->{BackupFilesOnly}, $conf->{BackupFilesExclude} # to hashes and $conf->{$shareName} to an array diff --git a/lib/BackupPC/Xfer/RsyncDigest.pm b/lib/BackupPC/Xfer/RsyncDigest.pm index fcb1bc0..7c358a0 100644 --- a/lib/BackupPC/Xfer/RsyncDigest.pm +++ b/lib/BackupPC/Xfer/RsyncDigest.pm @@ -150,7 +150,7 @@ sub digestAdd $digest->add($data); } $fileDigest = $digest->digest2; - my $eofPosn = tell($fh->{fh}); + my $eofPosn = sysseek($fh->{fh}, 0, 1); $fh->close; my $rsyncData = $blockDigest . $fileDigest; my $metaData = pack("VVVV", $blockSize, @@ -199,14 +199,14 @@ sub digestAdd # match our expected length. # return -111 if ( !defined(sysseek($fh2, 0, 2)) ); - if ( tell($fh2) != $eofPosn + length($data2) ) { + if ( sysseek($fh2, 0, 1) != $eofPosn + length($data2) ) { if ( !truncate($fh2, $eofPosn + length($data2)) ) { &$Log(sprintf("digestAdd: $file truncate from %d to %d failed", - tell($fh2), $eofPosn + length($data2))); + sysseek($fh2, 0, 1), $eofPosn + length($data2))); return -112; } else { &$Log(sprintf("digestAdd: $file truncated from %d to %d", - tell($fh2), $eofPosn + length($data2))); + sysseek($fh2, 0, 1), $eofPosn + length($data2))); } } } diff --git a/makePatch b/makePatch new file mode 100755 index 0000000..ab5913c --- /dev/null +++ b/makePatch @@ -0,0 +1,97 @@ +#!/bin/perl +# +# Script that generates a patch file for BackupPC. +# + +use strict; + +use File::Find; +use File::Path; + +my $BaseVersion = "2.1.0beta2"; +my $PatchLevel = "pl1"; +my $PatchVersion = "$BaseVersion$PatchLevel"; + +my $Base = "/home/craig/admin/packages/BackupPC-$BaseVersion"; +my $TmpDir = "patch.tmp"; +my $OutFile = "BackupPC-$PatchVersion.diff"; + +find({wanted => \&CopyFile, no_chdir => 1}, $Base); + +unlink($OutFile); + +open(OUT, ">", $OutFile) || die("can't open OutFile\n"); + +my $now = localtime; + +print OUT < ) { + next if ( /^Only/ || /^diff / ); + s/^--- \Q$Base\//--- /; + s/^\+\+\+ \Q$TmpDir\//+++ /; + print OUT; + } +} +rmtree($TmpDir, 0); + +sub CopyFile +{ + (my $file = $File::Find::name) =~ s{\Q$Base}{}; + (my $dir = $file) =~ s{(.*)/.*}{$1}; + $file =~ s{^/}{}; + + #print("Got dir = $TmpDir/$dir, file = $file\n"); + return if ( !-f $file ); + mkpath("$TmpDir/$dir", 0, 0755) if ( !-d "$TmpDir/$dir" ); + open(IN, "<", $file) + || die("Can't open $file for input\n"); + open(OUT, ">", "$TmpDir/$file") + || die("Can't open $TmpDir/$file for output\n"); + while ( ) { + if ( /^use lib ".*BackupPC\/lib";/ + || /^use lib "\/home\/pcbackup\/install\/lib";/ ) { + print OUT "use lib \"__INSTALLDIR__/lib\";\n"; + } elsif ( $file =~ /Lib.pm/ && /(.*TopDir *=> .*)'.*',/ ) { + print OUT "$1'__TOPDIR__',\n"; + } elsif ( $file =~ /Lib.pm/ && /(.*BinDir *=> .*)'.*',/ ) { + print OUT "$1'__INSTALLDIR__',\n"; + } elsif ( $file =~ /Lib.pm/ && /(.*LibDir *=> .*)'.*',/ ) { + print OUT "$1'__INSTALLDIR__',\n"; + } elsif ( $file =~ /Lib.pm/ && /(.*Version *=> .*)'.*',/ ) { + print OUT "$1'$PatchVersion',\n"; + } elsif ( $file =~ /BackupPC_Admin/ && /(my *\$installDir *= *)'.*'/ +) { + print OUT "$1'__INSTALLDIR__/lib';\n"; + } else { + print(OUT); + } + } + close(IN); + close(OUT); +} -- 2.20.1