X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=conf%2Fconfig.pl;h=714f1d722c4e77bf80e0b71967b598450720518f;hp=8257ac1a2251d70f05acc4461c52c9189dc37c64;hb=bd6334a9c72e7fa75f13fd6426f5a8a8cd4ab8b1;hpb=74dc9d456332757127d5eda4ce32f29377133fa2 diff --git a/conf/config.pl b/conf/config.pl index 8257ac1..714f1d7 100644 --- a/conf/config.pl +++ b/conf/config.pl @@ -153,13 +153,23 @@ $Conf{MaxOldLogFiles} = 14; $Conf{DfPath} = '/bin/df'; # -# Command to run df. Several variables are substituted at run-time: +# Command to run df. The following variables are substituted at run-time: # # $dfPath path to df ($Conf{DfPath}) # $topDir top-level BackupPC data directory # $Conf{DfCmd} = '$dfPath $topDir'; +# +# Full path to various commands for archiving +# + +$Conf{SplitPath} = '/usr/bin/split'; +$Conf{ParPath} = '/usr/bin/par'; +$Conf{CatPath} = '/bin/cat'; +$Conf{GzipPath} = '/bin/gzip'; +$Conf{Bzip2Path} = '/usr/bin/bzip2'; + # # Maximum threshold for disk utilization on the __TOPDIR__ filesystem. # If the output from $Conf{DfPath} reports a percentage larger than @@ -231,7 +241,7 @@ $Conf{BackupPCUserVerify} = 1; # # Maximum number of hardlinks supported by the $TopDir file system # that BackupPC uses. Most linux or unix file systems should support -# at least 32000 hardlinks per file, or 64K in other cases. If a pool +# at least 32000 hardlinks per file, or 64000 in other cases. If a pool # file already has this number of hardlinks, a new pool file is created # so that new hardlinks can be accommodated. This limit will only # be hit if an identical file appears at least this number of times @@ -351,8 +361,74 @@ $Conf{IncrPeriod} = 0.97; # extra old backups will be removed. # # If filling of incremental dumps is off the oldest backup always -# has to be a full (ie: filled) dump. This might mean an extra full -# dump is kept until the second oldest (incremental) dump expires. +# has to be a full (ie: filled) dump. This might mean one or two +# extra full dumps are kept until the oldest incremental backups expire. +# +# Exponential backup expiry is also supported. This allows you to specify: +# +# - num fulls to keep at intervals of 1 * $Conf{FullPeriod}, followed by +# - num fulls to keep at intervals of 2 * $Conf{FullPeriod}, +# - num fulls to keep at intervals of 4 * $Conf{FullPeriod}, +# - num fulls to keep at intervals of 8 * $Conf{FullPeriod}, +# - num fulls to keep at intervals of 16 * $Conf{FullPeriod}, +# +# and so on. This works by deleting every other full as each expiry +# boundary is crossed. +# +# Exponential expiry is specified using an array for $Conf{FullKeepCnt}: +# +# $Conf{FullKeepCnt} = [4, 2, 3]; +# +# Entry #n specifies how many fulls to keep at an interval of +# 2^n * $Conf{FullPeriod} (ie: 1, 2, 4, 8, 16, 32, ...). +# +# The example above specifies keeping 4 of the most recent full backups +# (1 week interval) two full backups at 2 week intervals, and 3 full +# backups at 4 week intervals, eg: +# +# full 0 19 weeks old \ +# full 1 15 weeks old >--- 3 backups at 4 * $Conf{FullPeriod} +# full 2 11 weeks old / +# full 3 7 weeks old \____ 2 backups at 2 * $Conf{FullPeriod} +# full 4 5 weeks old / +# full 5 3 weeks old \ +# full 6 2 weeks old \___ 4 backups at 1 * $Conf{FullPeriod} +# full 7 1 week old / +# full 8 current / +# +# On a given week the spacing might be less than shown as each backup +# ages through each expiry period. For example, one week later, a +# new full is completed and the oldest is deleted, giving: +# +# full 0 16 weeks old \ +# full 1 12 weeks old >--- 3 backups at 4 * $Conf{FullPeriod} +# full 2 8 weeks old / +# full 3 6 weeks old \____ 2 backups at 2 * $Conf{FullPeriod} +# full 4 4 weeks old / +# full 5 3 weeks old \ +# full 6 2 weeks old \___ 4 backups at 1 * $Conf{FullPeriod} +# full 7 1 week old / +# full 8 current / +# +# You can specify 0 as a count (except in the first entry), and the +# array can be as long as you wish. For example: +# +# $Conf{FullKeepCnt} = [4, 0, 4, 0, 0, 2]; +# +# This will keep 10 full dumps, 4 most recent at 1 * $Conf{FullPeriod}, +# followed by 4 at an interval of 4 * $Conf{FullPeriod} (approx 1 month +# apart), and then 2 at an interval of 32 * $Conf{FullPeriod} (approx +# 7-8 months apart). +# +# Note that you will have to increase $Conf{FullAgeMax} if you want +# very old full backups to be kept. Full backups are removed according +# to both $Conf{FullKeepCnt} and $Conf{FullAgeMax}. +# +# Note also that these two settings are equivalent and both keep just +# the four most recent full dumps: +# +# $Conf{FullKeepCnt} = 4; +# $Conf{FullKeepCnt} = [4]; # $Conf{FullKeepCnt} = 1; @@ -362,7 +438,7 @@ $Conf{FullKeepCnt} = 1; # they are. # $Conf{FullKeepCntMin} = 1; -$Conf{FullAgeMax} = 60; +$Conf{FullAgeMax} = 90; # # Number of incremental backups to keep. Must be >= 1. @@ -422,6 +498,13 @@ $Conf{IncrFill} = 0; # $Conf{RestoreInfoKeepCnt} = 10; +# +# Number of archive logs to keep. BackupPC remembers information +# about each archive request. This number per archive client will +# be kept around before the oldest ones are pruned. +# +$Conf{ArchiveInfoKeepCnt} = 10; + # # List of directories or files to backup. If this is defined, only these # directories or files will be backed up. @@ -478,6 +561,9 @@ $Conf{BackupFilesOnly} = undef; # the directory name: a trailing "/" causes the name to not match # and the directory will not be excluded. # +# Users report that for smbclient you should specify a directory +# followed by "/*", eg: "/proc/*", instead of just "/proc". +# # Examples: # $Conf{BackupFilesExclude} = '/temp'; # $Conf{BackupFilesExclude} = ['/temp']; # same as first example @@ -495,8 +581,7 @@ $Conf{BackupFilesExclude} = undef; # each PC a count of consecutive good pings is maintained. Once a PC has # at least $Conf{BlackoutGoodCnt} consecutive good pings it is subject # to "blackout" and not backed up during hours and days specified by -# $Conf{BlackoutWeekDays}, $Conf{BlackoutHourBegin} and -# $Conf{BlackoutHourEnd}. +# $Conf{BlackoutPeriods}. # # To allow for periodic rebooting of a PC or other brief periods when a # PC is not on the network, a number of consecutive bad pings is allowed @@ -522,13 +607,60 @@ $Conf{BlackoutBadPingLimit} = 3; $Conf{BlackoutGoodCnt} = 7; # -# The default settings specify the blackout period from 7:00am to -# 7:30pm local time on Mon-Fri. For $Conf{BlackoutWeekDays}, -# 0 is Sunday, 1 is Monday etc. +# One or more blackout periods can be specified. If a client is +# subject to blackout then no regular (non-manual) backups will +# be started during any of these periods. hourBegin and hourEnd +# specify hours fro midnight and weekDays is a list of days of +# the week where 0 is Sunday, 1 is Monday etc. +# +# For example: +# +# $Conf{BlackoutPeriods} = [ +# { +# hourBegin => 7.0, +# hourEnd => 19.5, +# weekDays => [1, 2, 3, 4, 5], +# }, +# ]; +# +# specifies one blackout period from 7:00am to 7:30pm local time +# on Mon-Fri. +# +# The blackout period can also span midnight by setting +# hourBegin > hourEnd, eg: +# +# $Conf{BlackoutPeriods} = [ +# { +# hourBegin => 7.0, +# hourEnd => 19.5, +# weekDays => [1, 2, 3, 4, 5], +# }, +# { +# hourBegin => 23, +# hourEnd => 5, +# weekDays => [5, 6], +# }, +# ]; +# +# This specifies one blackout period from 7:00am to 7:30pm local time +# on Mon-Fri, and a second period from 11pm to 5am on Friday and +# Saturday night. +# +$Conf{BlackoutPeriods} = [ + { + hourBegin => 7.0, + hourEnd => 19.5, + weekDays => [1, 2, 3, 4, 5], + }, +]; + +# +# A backup of a share that has zero files is considered fatal. This is +# used to catch miscellaneous Xfer errors that result in no files being +# backed up. If you have shares that might be empty (and therefore an +# empty backup is valid) you should set this flag to 0. # -$Conf{BlackoutHourBegin} = 7.0; -$Conf{BlackoutHourEnd} = 19.5; -$Conf{BlackoutWeekDays} = [1, 2, 3, 4, 5]; +$Conf{BackupZeroFilesIsFatal} = 1; ########################################################################### # General per-PC configuration settings @@ -554,9 +686,6 @@ $Conf{BlackoutWeekDays} = [1, 2, 3, 4, 5]; # - 'tar': backup and restore via tar, tar over ssh, rsh or nfs. # Good choice for linux/unix. # -# A future version should support 'rsync' as a transport method for -# more efficient backup of linux/unix machines (and perhaps WinXX??). -# $Conf{XferMethod} = 'smb'; # @@ -575,7 +704,7 @@ $Conf{SmbClientPath} = '/usr/bin/smbclient'; # Commands to run smbclient for a full dump, incremental dump or a restore. # This setting only matters if $Conf{XferMethod} = 'smb'. # -# Several variables are substituted at run-time: +# The following variables are substituted at run-time: # # $smbClientPath same as $Conf{SmbClientPath} # $host host to backup/restore @@ -587,6 +716,10 @@ $Conf{SmbClientPath} = '/usr/bin/smbclient'; # $X_option exclude option (if $fileList is an exclude list) # $timeStampFile start time for incremental dump # +# If your smb share is read-only then direct restores will fail. +# You should set $Conf{SmbClientRestoreCmd} to undef and the +# corresponding CGI restore option will be removed. +# $Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName' . ' $I_option -U $userName -E -N -d 1' . ' -c tarmode\\ full -Tc$X_option - $fileList'; @@ -618,8 +751,7 @@ $Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName' # are sufficient to read all the files you want to backup. Also, you # will probably want to add "/proc" to $Conf{BackupFilesExclude}. # -# Several variables are substituted at run-time. The following variables -# are substituted at run-time: +# The following variables are substituted at run-time: # # $host host name # $hostIP host's IP address @@ -635,7 +767,7 @@ $Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName' # # This setting only matters if $Conf{XferMethod} = 'tar'. # -$Conf{TarClientCmd} = '$sshPath -q -n -l root $host' +$Conf{TarClientCmd} = '$sshPath -q -x -n -l root $host' . ' $tarPath -c -v -f - -C $shareName+' . ' --totals'; @@ -688,7 +820,11 @@ $Conf{TarIncrArgs} = '--newer=$incrDate+ $fileList+'; # # This setting only matters if $Conf{XferMethod} = "tar". # -$Conf{TarClientRestoreCmd} = '$sshPath -q -l root $host' +# If you want to disable direct restores using tar, you should set +# $Conf{TarClientRestoreCmd} to undef and the corresponding CGI +# restore option will be removed. +# +$Conf{TarClientRestoreCmd} = '$sshPath -q -x -l root $host' . ' $tarPath -x -p --numeric-owner --same-owner' . ' -v -f - -C $shareName+'; @@ -720,7 +856,7 @@ $Conf{RsyncClientPath} = '/bin/rsync'; # # This setting only matters if $Conf{XferMethod} = 'rsync'. # -$Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList+'; +$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+'; # # Full command to run rsync for restore on the client. The following @@ -737,7 +873,7 @@ $Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList+'; # # This setting only matters if $Conf{XferMethod} = 'rsync'. # -$Conf{RsyncClientRestoreCmd} = '$sshPath -l root $host $rsyncPath $argList+'; +$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+'; # # Share name to backup. For $Conf{XferMethod} = "rsync" this should @@ -821,6 +957,9 @@ $Conf{RsyncArgs} = [ # Arguments to rsync for restore. Do not edit the first set unless you # have a thorough understanding of how File::RsyncP works. # +# If you want to disable direct restores using rsync (eg: is the module +# is read-only), you should set $Conf{RsyncRestoreArgs} to undef and +# the corresponding CGI restore option will be removed. # $Conf{RsyncRestoreArgs} = [ # @@ -851,6 +990,71 @@ $Conf{RsyncRestoreArgs} = [ # $Conf{RsyncLogLevel} = 1; +# +# Archive Destination +# +# The Destination of the archive +# e.g. /tmp for file archive or /dev/nst0 for device archive +# +$Conf{ArchiveDest} = '/tmp'; + +# +# Archive Compression type +# +# The valid values are: +# +# - 'none': No Compression +# +# - 'gzip': Medium Compression. Recommended. +# +# - 'bzip2': High Compression but takes longer. +# +$Conf{ArchiveComp} = 'gzip'; + +# +# Archive Parity Files +# +# The number of Parity Files to generate. +# Uses the commandline par available from +# http://parchive.sourceforge.net +# +# Only useful for file dumps. +# +# Set to 0 to disable this feature. +# +$Conf{ArchivePar} = 0; + +# +# Archive Size Split +# +# 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. +# +$Conf{ArchiveSplit} = 650; + +# +# Archive Command +# +# This is the command that is called to actually run the archive process +# for each host. The following variables are substituted at run-time: +# +# $Installdir The installation directory of BackupPC +# $tarCreatePath The path to BackupPC_tarCreate +# $splitpath The path to the split program +# $parpath The path to the par program +# $host The host to archive +# $backupnumber The backup number of the host to archive +# $compression The path to the compression program +# $compext The extension assigned to the compression type +# $splitsize The number of bytes to split archives into +# $archiveloc The location to put the archive +# $parfile The number of par files to create +# +$Conf{ArchiveClientCmd} = '$Installdir/bin/BackupPC_archiveHost' + . ' $tarCreatePath $splitpath $parpath $host $backupnumber' + . ' $compression $compext $splitsize $archiveloc $parfile *'; + # # Full path for ssh. Security caution: normal users should not # allowed to write to this file or directory. @@ -868,7 +1072,7 @@ $Conf{NmbLookupPath} = '/usr/bin/nmblookup'; # # NmbLookup command. Given an IP address, does an nmblookup on that -# IP address. Several variables are substituted at run-time: +# IP address. The following variables are substituted at run-time: # # $nmbLookupPath path to nmblookup ($Conf{NmbLookupPath}) # $host IP address @@ -927,7 +1131,7 @@ $Conf{FixedIPNetBiosNameCheck} = 0; $Conf{PingPath} = '/bin/ping'; # -# Ping command. Several variables are substituted at run-time: +# Ping command. The following variables are substituted at run-time: # # $pingPath path to ping ($Conf{PingPath}) # $host host name @@ -938,6 +1142,25 @@ $Conf{PingPath} = '/bin/ping'; # $Conf{PingCmd} = '$pingPath -c 1 $host'; +# +# Path to init.d script and command to use that script to start the +# server from the CGI interface. The following variables are substituted +# at run-time: +# +# $sshPath path to ssh ($Conf{SshPath}) +# $serverHost same as $Conf{ServerHost} +# $serverInitdPath path to init.d script ($Conf{ServerInitdPath}) +# +# Example: +# +# $Conf{ServerInitdPath} = '/etc/init.d/backuppc'; +# $Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost' +# . ' $serverInitdPath start' +# . ' < /dev/null >& /dev/null'; +# +$Conf{ServerInitdPath} = ''; +$Conf{ServerInitdStartCmd} = ''; + # # Compression level to use on files. 0 means no compression. Compression # levels can be from 1 (least cpu time, slightly worse compression) to @@ -1016,15 +1239,70 @@ $Conf{MaxOldPerPCLogFiles} = 12; # shut down and restart a database server, or to dump a database # to files for backup. Example: # -# $Conf{DumpPreUserCmd} = '$sshPath -l root $host /usr/bin/dumpMysql'; -# -# Various variable substitutions are available; see BackupPC_dump -# or BackupPC_restore for the details. +# $Conf{DumpPreUserCmd} = '$sshPath -q -x -l root $host /usr/bin/dumpMysql'; +# +# The following variable substitutions are made at run time for +# $Conf{DumpPreUserCmd} and $Conf{DumpPostUserCmd}: +# +# $type type of dump (incr or full) +# $xferOK 1 if the dump succeeded, 0 if it didn't +# $client client name being backed up +# $host host name (could be different from client name if +# $Conf{ClientNameAlias} is set) +# $hostIP IP address of host +# $user user name from the hosts file +# $moreUsers list of additional users from the hosts file +# $share the first share name +# $shares list of all the share names +# $XferMethod value of $Conf{XferMethod} (eg: tar, rsync, smb) +# $sshPath value of $Conf{SshPath}, +# +# The following variable substitutions are made at run time for +# $Conf{RestorePreUserCmd} and $Conf{RestorePostUserCmd}: +# +# $client client name being backed up +# $xferOK 1 if the restore succeeded, 0 if it didn't +# $host host name (could be different from client name if +# $Conf{ClientNameAlias} is set) +# $hostIP IP address of host +# $user user name from the hosts file +# $moreUsers list of additional users from the hosts file +# $share the first share name +# $XferMethod value of $Conf{XferMethod} (eg: tar, rsync, smb) +# $sshPath value of $Conf{SshPath}, +# $type set to "restore" +# $bkupSrcHost host name of the restore source +# $bkupSrcShare share name of the restore source +# $bkupSrcNum backup number of the restore source +# $pathHdrSrc common starting path of restore source +# $pathHdrDest common starting path of destination +# $fileList list of files being restored +# +# The following variable substitutions are made at run time for +# $Conf{ArchivePreUserCmd} and $Conf{ArchivePostUserCmd}: +# +# $client client name being backed up +# $xferOK 1 if the archive succeeded, 0 if it didn't +# $host Name of the archive host +# $user user name from the hosts file +# $share the first share name +# $XferMethod value of $Conf{XferMethod} (eg: tar, rsync, smb) +# $HostList list of hosts being archived +# $BackupList list of backup numbers for the hosts being archived +# $archiveloc location where the archive is sent to +# $parfile number of par files being generated +# $compression compression program being used (eg: cat, gzip, bzip2) +# $compext extension used for compression type (eg: raw, gz, bz2) +# $splitsize size of the files that the archive creates +# $sshPath value of $Conf{SshPath}, +# $type set to "archive" # $Conf{DumpPreUserCmd} = undef; $Conf{DumpPostUserCmd} = undef; $Conf{RestorePreUserCmd} = undef; $Conf{RestorePostUserCmd} = undef; +$Conf{ArchivePreUserCmd} = undef; +$Conf{ArchivePostUserCmd} = undef; # # Override the client's host name. This allows multiple clients @@ -1215,10 +1493,10 @@ $Conf{CgiURL} = undef; # # Language to use. See lib/BackupPC/Lang for the list of supported # languages, which include English (en), French (fr), Spanish (es), -# and German (de). +# German (de), and Italian (it). # # Currently the Language setting applies to the CGI interface and email -# messages sent to users. Log files and other text is still in English. +# messages sent to users. Log files and other text are still in English. # $Conf{Language} = 'en'; @@ -1260,22 +1538,6 @@ $Conf{CgiDateFormatMMDD} = 1; # $Conf{CgiNavBarAdminAllHosts} = 0; -# -# Header font and size for CGI interface -# -$Conf{CgiHeaderFontType} = 'arial'; -$Conf{CgiHeaderFontSize} = '3'; - -# -# Color scheme for CGI interface. Default values give a very light blue -# for the background navigation color, green for the header background, -# and white for the body background. (You call tell I should stick to -# programming and not graphical design.) -# -$Conf{CgiNavBarBgColor} = '#ddeeee'; -$Conf{CgiHeaderBgColor} = '#99cc33'; -$Conf{CgiBodyBgColor} = '#ffffff'; - # # Hilight colors based on status that are used in the PC summary page. # @@ -1288,10 +1550,7 @@ $Conf{CgiStatusHilightColor} = { }; # -# Additional CGI header text. For example, if you wanted each CGI page -# to auto refresh every 900 seconds, you could add this text: -# -# +# Additional CGI header text. # $Conf{CgiHeaders} = ''; @@ -1325,3 +1584,173 @@ $Conf{CgiExt2ContentType} = { }; # $Conf{CgiImageDirURL} = '/BackupPC'; # $Conf{CgiImageDirURL} = ''; + +# +# CSS stylesheet for the CGI interface. +# +$Conf{CSSstylesheet} = <<'EOF'; + +EOF