X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=conf%2Fconfig.pl;h=8c581400be13f5554393d29fd12bc31447ab7b76;hp=bd1cd474c9df2f4388d07cb34ef5afdcd3e5a665;hb=a7e968ce327855f2ba2624ca8517069a936c9b5b;hpb=0697368bbcef14908cd4684cf07744dc840464de diff --git a/conf/config.pl b/conf/config.pl index bd1cd47..8c58140 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 @@ -180,6 +190,8 @@ $Conf{TrashCleanSleepSec} = 300; # # List of DHCP address ranges we search looking for PCs to backup. # This is an array of hashes for each class C address range. +# This is only needed if hosts in the conf/hosts file have the +# dhcp flag set. # # Examples: # # to specify 192.10.10.20 to 192.10.10.250 as the DHCP address pool @@ -226,6 +238,17 @@ $Conf{InstallDir} = ''; # $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 +# 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 +# across all the backups. +# +$Conf{HardLinkMax} = 31999; + ########################################################################### # What to backup and when to do it # (can be overridden in the per-PC config.pl) @@ -250,7 +273,7 @@ $Conf{SmbShareName} = 'C$'; $Conf{SmbShareUserName} = ''; # -# Smbclient share password. This is passed to smbclient via the PASSWD +# Smbclient share password. This is passed to smbclient via its PASSWD # environment variable. There are several ways you can tell BackupPC # the smb share password. In each case you should be very careful about # security. If you put the password here, make sure that this file is @@ -280,6 +303,14 @@ $Conf{SmbSharePasswd} = ''; # use this option instead of $Conf{TarShareName} since a new tar is # run for each entry in $Conf{TarShareName}. # +# On the other hand, if you add --one-file-system to $Conf{TarClientCmd} +# you can backup each file system separately, which makes restoring one +# bad file system easier. In this case you would list all of the mount +# points here, since you can't get the same result with +# $Conf{BackupFilesOnly}: +# +# $Conf{TarShareName} = ['/', '/var', '/data', '/boot']; +# # This setting only matters if $Conf{XferMethod} = 'tar'. # $Conf{TarShareName} = '/'; @@ -294,6 +325,22 @@ $Conf{TarShareName} = '/'; # time taken for the backup, plus the granularity of $Conf{WakeupSchedule} # will make the actual backup interval a bit longer. # +# There are two special values for $Conf{FullPeriod}: +# +# -1 Don't do any regular backups on this machine. Manually +# requested backups (via the CGI interface) will still occur. +# +# -2 Don't do any backups on this machine. Manually requested +# backups (via the CGI interface) will be ignored. +# +# These special settings are useful for a client that is no longer +# being backed up (eg: a retired machine), but you wish to keep the +# last backups available for browsing or restoring to other machines. +# +# Also, you might create a virtual client (by setting $Conf{ClientNameAlias}) +# for restoring to a DVD or permanent media and you would set +# $Conf{FullPeriod} to -2 so that it is never backed up. +# $Conf{FullPeriod} = 6.97; # @@ -385,6 +432,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. @@ -408,7 +462,7 @@ $Conf{RestoreInfoKeepCnt} = 10; # $Conf{BackupFilesOnly} = { # 'c' => ['/myFiles', '/important'], # these are for 'c' share # 'd' => ['/moreFiles', '/archive'], # these are for 'd' share -# } +# }; # $Conf{BackupFilesOnly} = undef; @@ -433,9 +487,13 @@ $Conf{BackupFilesOnly} = undef; # For tar, if the exclude file contains a "/" it is assumed to be anchored # at the start of the string. Since all the tar paths start with "./", # BackupPC prepends a "." if the exclude file starts with a "/". Note -# that GNU tar version >= 1.3.7 is required for the exclude option to -# work correctly. For linux or unix machines it is recommended to add -# "/proc" to $Conf{BackupFilesExclude}. +# that GNU tar version >= 1.13.7 is required for the exclude option to +# work correctly. For linux or unix machines you should add +# "/proc" to $Conf{BackupFilesExclude} unless you have specified +# --one-file-system in $Conf{TarClientCmd} or --one-file-system in +# $Conf{RsyncArgs}. Also, for tar, do not use a trailing "/" in +# the directory name: a trailing "/" causes the name to not match +# and the directory will not be excluded. # # Examples: # $Conf{BackupFilesExclude} = '/temp'; @@ -444,7 +502,7 @@ $Conf{BackupFilesOnly} = undef; # $Conf{BackupFilesExclude} = { # 'c' => ['/temp', '/winnt/tmp'], # these are for 'c' share # 'd' => ['/junk', '/dont_back_this_up'], # these are for 'd' share -# } +# }; # $Conf{BackupFilesExclude} = undef; @@ -489,6 +547,14 @@ $Conf{BlackoutHourBegin} = 7.0; $Conf{BlackoutHourEnd} = 19.5; $Conf{BlackoutWeekDays} = [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{BackupZeroFilesIsFatal} = 1; + ########################################################################### # General per-PC configuration settings # (can be overridden in the per-PC config.pl) @@ -513,9 +579,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'; # @@ -534,7 +597,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 @@ -547,15 +610,15 @@ $Conf{SmbClientPath} = '/usr/bin/smbclient'; # $timeStampFile start time for incremental dump # $Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName' - . '$I_option -U $userName -E -N -d 1' + . ' $I_option -U $userName -E -N -d 1' . ' -c tarmode\\ full -Tc$X_option - $fileList'; $Conf{SmbClientIncrCmd} = '$smbClientPath \\\\$host\\$shareName' - . '$I_option -U $userName -E -N -d 1' + . ' $I_option -U $userName -E -N -d 1' . ' -c tarmode\\ full -TcN$X_option $timeStampFile - $fileList'; $Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName' - . '$I_option -U $userName -E -N -d 1' + . ' $I_option -U $userName -E -N -d 1' . ' -c tarmode\\ full -Tx -'; # @@ -577,8 +640,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 @@ -602,6 +664,9 @@ $Conf{TarClientCmd} = '$sshPath -q -n -l root $host' # Extra tar arguments for full backups. Several variables are substituted at # run-time. See $Conf{TarClientCmd} for the list of variable substitutions. # +# If you are running tar locally (ie: without rsh or ssh) then remove the +# "+" so that the argument is no longer shell escaped. +# # This setting only matters if $Conf{XferMethod} = 'tar'. # $Conf{TarFullArgs} = '$fileList+'; @@ -628,6 +693,9 @@ $Conf{TarFullArgs} = '$fileList+'; # attribute change, meaning the file will always be included # in each new incremental dump. # +# If you are running tar locally (ie: without rsh or ssh) then remove the +# "+" so that the argument is no longer shell escaped. +# # This setting only matters if $Conf{XferMethod} = 'tar'. # $Conf{TarIncrArgs} = '--newer=$incrDate+ $fileList+'; @@ -673,7 +741,7 @@ $Conf{RsyncClientPath} = '/bin/rsync'; # # This setting only matters if $Conf{XferMethod} = 'rsync'. # -$Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList'; +$Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList+'; # # Full command to run rsync for restore on the client. The following @@ -690,13 +758,22 @@ $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 -l root $host $rsyncPath $argList+'; # # Share name to backup. For $Conf{XferMethod} = "rsync" this should -# be a directory name, eg '/' or '/home'. For $Conf{XferMethod} = "rsyncd" -# this should be the name of the module to backup (ie: the name from -# /etc/rsynd.conf). +# be a file system path, eg '/' or '/home'. +# +# For $Conf{XferMethod} = "rsyncd" this should be the name of the module +# to backup (ie: the name from /etc/rsynd.conf). +# +# This can also be a list of multiple file system paths or modules. +# For example, by adding --one-file-system to $Conf{RsyncArgs} you +# can backup each file system separately, which makes restoring one +# bad file system easier. In this case you would list all of the mount +# points: +# +# $Conf{RsyncShareName} = ['/', '/var', '/data', '/boot']; # $Conf{RsyncShareName} = '/'; @@ -795,6 +872,69 @@ $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 +# 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_archivecd $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. @@ -811,13 +951,44 @@ $Conf{SshPath} = '/usr/bin/ssh'; $Conf{NmbLookupPath} = '/usr/bin/nmblookup'; # -# NmbLookup command. Several variables are substituted at run-time: +# NmbLookup command. Given an IP address, does an nmblookup on that +# IP address. The following variables are substituted at run-time: # # $nmbLookupPath path to nmblookup ($Conf{NmbLookupPath}) -# $host host name +# $host IP address +# +# This command is only used for DHCP hosts: given an IP address, this +# command should try to find its NetBios name. # $Conf{NmbLookupCmd} = '$nmbLookupPath -A $host'; +# +# NmbLookup command. Given a netbios name, finds that host by doing +# a NetBios lookup. Several variables are substituted at run-time: +# +# $nmbLookupPath path to nmblookup ($Conf{NmbLookupPath}) +# $host NetBios name +# +# In some cases you might need to change the broadcast address, for +# example if nmblookup uses 192.168.255.255 by default and you find +# that doesn't work, try 192.168.1.255 (or your equivalent class C +# address) using the -B option: +# +# $Conf{NmbLookupFindHostCmd} = '$nmbLookupPath -B 192.168.1.255 $host'; +# +# If you use a WINS server and your machines don't respond to +# multicast NetBios requests you can use this (replace 1.2.3.4 +# with the IP address of your WINS server): +# +# $Conf{NmbLookupFindHostCmd} = '$nmbLookupPath -R -U 1.2.3.4 $host'; +# +# This is preferred over multicast since it minimizes network traffic. +# +# Experiment manually for your site to see what form of nmblookup command +# works. +# +$Conf{NmbLookupFindHostCmd} = '$nmbLookupPath $host'; + # # For fixed IP address hosts, BackupPC_dump can also verify the netbios # name to ensure it matches the host name. An error is generated if @@ -840,13 +1011,36 @@ $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 # +# Wade Brown reports that on solaris 2.6 and 2.7 ping -s returns the wrong +# exit status (0 even on failure). Replace with "ping $host 1", which +# gets the correct exit status but we don't get the round-trip time. +# $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 -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 @@ -927,13 +1121,87 @@ $Conf{MaxOldPerPCLogFiles} = 12; # # $Conf{DumpPreUserCmd} = '$sshPath -l root $host /usr/bin/dumpMysql'; # -# Various variable substitutions are available; see BackupPC_dump -# or BackupPC_restore for the details. +# 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 +# to all refer to the same physical host. This should only be +# set in the per-PC config file and is only used by BackupPC at +# the last moment prior to generating the command used to backup +# that machine (ie: the value of $Conf{ClientNameAlias} is invisible +# everywhere else in BackupPC). The setting can be a host name or +# IP address, eg: +# +# $Conf{ClientNameAlias} = 'realHostName'; +# $Conf{ClientNameAlias} = '192.1.1.15'; +# +# will cause the relevant smb/tar/rsync backup/restore commands to be +# directed to realHostName, not the client name. +# +# Note: this setting doesn't work for hosts with DHCP set to 1. +# +$Conf{ClientNameAlias} = undef; # # Advanced option for asking BackupPC to load additional perl modules. @@ -1104,9 +1372,11 @@ $Conf{CgiURL} = undef; # # Language to use. See lib/BackupPC/Lang for the list of supported -# languages, which includes English (en) and French (fr). Currently -# this applies mainly to the CGI interface, but over time it might -# also include log files and other text output. +# languages, which include English (en), French (fr), Spanish (es), +# and German (de). +# +# Currently the Language setting applies to the CGI interface and email +# messages sent to users. Log files and other text is still in English. # $Conf{Language} = 'en'; @@ -1149,20 +1419,20 @@ $Conf{CgiDateFormatMMDD} = 1; $Conf{CgiNavBarAdminAllHosts} = 0; # -# Header font and size for CGI interface +# Color scheme for CGI interface. # -$Conf{CgiHeaderFontType} = 'arial'; -$Conf{CgiHeaderFontSize} = '3'; +$Conf{CgiHeaderBgColor} = '#99cc33'; # -# 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.) +# Hilight colors based on status that are used in the PC summary page. # -$Conf{CgiNavBarBgColor} = '#ddeeee'; -$Conf{CgiHeaderBgColor} = '#99cc33'; -$Conf{CgiBodyBgColor} = '#ffffff'; +$Conf{CgiStatusHilightColor} = { + Reason_backup_failed => '#ffcccc', + Reason_backup_done => '#ccffcc', + Reason_no_ping => '#ffff99', + Reason_backup_canceled_by_user => '#ff9900', + Status_backup_in_progress => '#66cc99', +}; # # Additional CGI header text. For example, if you wanted each CGI page @@ -1202,3 +1472,179 @@ $Conf{CgiExt2ContentType} = { }; # $Conf{CgiImageDirURL} = '/BackupPC'; # $Conf{CgiImageDirURL} = ''; + +# +# CSS stylesheet for the CGI interface. +# +$Conf{CSSstylesheet} = <<'EOF'; + +EOF