fbb0509d4164774cc318f8f8ea5801edbb51c911
[BackupPC.git] / conf / config.pl
1 #============================================================= -*-perl-*-
2 #
3 # Configuration file for BackupPC.
4 #
5 # DESCRIPTION
6 #
7 #   This is the main configuration file for BackupPC.
8 #
9 #   This file must be valid perl source, so make sure the punctuation,
10 #   quotes, and other syntax are valid.
11 #
12 #   This file is read by BackupPC at startup, when a HUP (-1) signal
13 #   is sent to BackupPC and also at each wakeup time whenever the
14 #   modification time of this file changes.
15 #
16 #   The configuration parameters are divided into four general groups.
17 #   The first group (general server configuration) provides general
18 #   configuration for BackupPC.  The next two groups describe what
19 #   to backup, when to do it, and how long to keep it.  The fourth
20 #   group are settings for the CGI http interface.
21 #
22 #   Configuration settings can also be specified on a per-PC basis.
23 #   Simply put the relevant settings in a config.pl file in the
24 #   PC's backup directory (ie: in __TOPDIR__/pc/hostName).
25 #   All configuration settings in the second, third and fourth
26 #   groups can be overridden by the per-PC config.pl file.
27 #
28 # AUTHOR
29 #   Craig Barratt  <cbarratt@users.sourceforge.net>
30 #
31 # COPYRIGHT
32 #   Copyright (C) 2001-2003  Craig Barratt
33 #
34 #   See http://backuppc.sourceforge.net.
35 #
36 #========================================================================
37
38 ###########################################################################
39 # General server configuration
40 ###########################################################################
41 #
42 # Host name on which the BackupPC server is running.
43 #
44 $Conf{ServerHost} = '';
45
46 #
47 # TCP port number on which the BackupPC server listens for and accepts
48 # connections.  Normally this should be disabled (set to -1).  The TCP
49 # port is only needed if apache runs on a different machine from BackupPC.
50 # In that case, set this to any spare port number over 1024 (eg: 2359).
51 # If you enable the TCP port, make sure you set $Conf{ServerMesgSecret}
52 # too!
53 #
54 $Conf{ServerPort} = -1;
55
56 #
57 # Shared secret to make the TCP port secure.  Set this to a hard to guess
58 # string if you enable the TCP port (ie: $Conf{ServerPort} > 0).
59 #
60 # To avoid possible attacks via the TCP socket interface, every client
61 # message is protected by an MD5 digest. The MD5 digest includes four
62 # items:
63 #   - a seed that is sent to the client when the connection opens
64 #   - a sequence number that increments for each message
65 #   - a shared secret that is stored in $Conf{ServerMesgSecret}
66 #   - the message itself.
67 #
68 # The message is sent in plain text preceded by the MD5 digest.  A
69 # snooper can see the plain-text seed sent by BackupPC and plain-text
70 # message from the client, but cannot construct a valid MD5 digest since
71 # the secret $Conf{ServerMesgSecret} is unknown.  A replay attack is
72 # not possible since the seed changes on a per-connection and
73 # per-message basis.
74 #
75 $Conf{ServerMesgSecret} = '';
76
77 #
78 # PATH setting for BackupPC.  An explicit value is necessary
79 # for taint mode.  Value shouldn't matter too much since
80 # all execs use explicit paths.  However, taint mode in perl
81 # will complain if this directory is world writable.
82 #
83 $Conf{MyPath} = '/bin';
84
85 #
86 # Permission mask for directories and files created by BackupPC.
87 # Default value prevents any access from group other, and prevents
88 # group write.
89 #
90 $Conf{UmaskMode} = 027;
91
92 #
93 # Times at which we wake up, check all the PCs, and schedule necessary
94 # backups.  Times are measured in hours since midnight.  Can be
95 # fractional if necessary (eg: 4.25 means 4:15am).
96 #
97 # If the hosts you are backing up are always connected to the network
98 # you might have only one or two wakeups each night.  This will keep
99 # the backup activity after hours.  On the other hand, if you are backing
100 # up laptops that are only intermittently connected to the network you
101 # will want to have frequent wakeups (eg: hourly) to maximized the chance
102 # that each laptop is backed up.
103 #
104 # Examples:
105 #     $Conf{WakeupSchedule} = [22.5];         # once per day at 10:30 pm.
106 #     $Conf{WakeupSchedule} = [1..23];        # every hour except midnight
107 #     $Conf{WakeupSchedule} = [2,4,6,8,10,12,14,16,18,20,22];  # every 2 hours
108 #
109 # The default value is every hour except midnight.
110 #
111 $Conf{WakeupSchedule} = [1..23];
112
113 #
114 # Maximum number of simultaneous backups to run.  If there
115 # are no user backup requests then this is the maximum number
116 # of simultaneous backups.
117 #
118 $Conf{MaxBackups} = 4;
119
120 #
121 # Additional number of simultaneous backups that users can run.
122 # As many as $Conf{MaxBackups} + $Conf{MaxUserBackups} requests can
123 # run at the same time.
124 #
125 $Conf{MaxUserBackups} = 4;
126
127 #
128 # Maximum number of pending link commands. New backups will only be
129 # started if there are no more than $Conf{MaxPendingCmds} plus
130 # $Conf{MaxBackups} number of pending link commands, plus running jobs.
131 # This limit is to make sure BackupPC doesn't fall too far behind in
132 # running BackupPC_link commands.
133 #
134 $Conf{MaxPendingCmds} = 10;
135
136 #
137 # Maximum number of log files we keep around in log directory.
138 # These files are aged nightly.  A setting of 14 means the log
139 # directory will contain about 2 weeks of old log files, in
140 # particular at most the files LOG, LOG.0, LOG.1, ... LOG.13
141 # (except today's LOG, these files will have a .z extension if
142 # compression is on).
143 #
144 # If you decrease this number after BackupPC has been running for a
145 # while you will have to manually remove the older log files.
146 #
147 $Conf{MaxOldLogFiles} = 14;
148
149 #
150 # Full path to the df command.  Security caution: normal users
151 # should not allowed to write to this file or directory.
152 #
153 $Conf{DfPath} = '/bin/df';
154
155 #
156 # Command to run df.  Several variables are substituted at run-time:
157 #
158 #   $dfPath      path to df ($Conf{DfPath})
159 #   $topDir      top-level BackupPC data directory
160 #
161 $Conf{DfCmd} = '$dfPath $topDir';
162
163 #
164 # Maximum threshold for disk utilization on the __TOPDIR__ filesystem.
165 # If the output from $Conf{DfPath} reports a percentage larger than
166 # this number then no new regularly scheduled backups will be run.
167 # However, user requested backups (which are usually incremental and
168 # tend to be small) are still performed, independent of disk usage.
169 # Also, currently running backups will not be terminated when the disk
170 # usage exceeds this number.
171 #
172 $Conf{DfMaxUsagePct} = 95;
173
174 #
175 # How long BackupPC_trashClean sleeps in seconds between each check
176 # of the trash directory.  Once every 5 minutes should be reasonable.
177 #
178 $Conf{TrashCleanSleepSec} = 300;
179
180 #
181 # List of DHCP address ranges we search looking for PCs to backup.
182 # This is an array of hashes for each class C address range.
183 #
184 # Examples:
185 #    # to specify 192.10.10.20 to 192.10.10.250 as the DHCP address pool
186 #    $Conf{DHCPAddressRanges} = [
187 #        {
188 #            ipAddrBase => '192.10.10',
189 #            first => 20,
190 #            last  => 250,
191 #        },
192 #    ];
193 #    # to specify two pools (192.10.10.20-250 and 192.10.11.10-50)
194 #    $Conf{DHCPAddressRanges} = [
195 #        {
196 #            ipAddrBase => '192.10.10',
197 #            first => 20,
198 #            last  => 250,
199 #        },
200 #        {
201 #            ipAddrBase => '192.10.11',
202 #            first => 10,
203 #            last  => 50,
204 #        },
205 #    ];
206 #
207 $Conf{DHCPAddressRanges} = [];
208
209 #
210 # These configuration settings aren't used by BackupPC, but simply
211 # remember a few settings used by configure.pl during installation.
212 # These are used by configure.pl when upgrading to new versions of
213 # BackupPC.
214 #
215 $Conf{BackupPCUser} = '';
216 $Conf{CgiDir}       = '';
217 $Conf{InstallDir}   = '';
218
219 #
220 # Whether BackupPC and the CGI script BackupPC_Admin verify that they
221 # are really running as user $Conf{BackupPCUser}.  If this flag is set
222 # and the effective user id (euid) differs from $Conf{BackupPCUser}
223 # then both scripts exit with an error.  This catches cases where
224 # BackupPC might be accidently started as root or the wrong user,
225 # or if the CGI script is not installed correctly.
226 #
227 $Conf{BackupPCUserVerify} = 1;
228
229 ###########################################################################
230 # What to backup and when to do it
231 # (can be overridden in the per-PC config.pl)
232 ###########################################################################
233 #
234 # Name of the host share that is backed up when using SMB.  This can be a
235 # string or an array of strings if there are multiple shares per host.
236 # Examples:
237 #
238 #   $Conf{SmbShareName} = 'c';          # backup 'c' share
239 #   $Conf{SmbShareName} = ['c', 'd'];   # backup 'c' and 'd' shares
240 #
241 # This setting only matters if $Conf{XferMethod} = 'smb'.
242 #
243 $Conf{SmbShareName} = 'C$';
244
245 #
246 # Smbclient share user name.  This is passed to smbclient's -U argument.
247 #
248 # This setting only matters if $Conf{XferMethod} = 'smb'.
249 #
250 $Conf{SmbShareUserName} = '';
251
252 #
253 # Smbclient share password.  This is passed to smbclient via the PASSWD
254 # environment variable.  There are several ways you can tell BackupPC
255 # the smb share password.  In each case you should be very careful about
256 # security.  If you put the password here, make sure that this file is
257 # not readable by regular users!  See the "Setting up config.pl" section
258 # in the documentation for more information.
259 #
260 # This setting only matters if $Conf{XferMethod} = 'smb'.
261 #
262 $Conf{SmbSharePasswd} = '';
263
264 #
265 # Which host directories to backup when using tar transport.  This can be a
266 # string or an array of strings if there are multiple directories to
267 # backup per host.  Examples:
268 #
269 #   $Conf{TarShareName} = '/';                  # backup everything
270 #   $Conf{TarShareName} = '/home';              # only backup /home
271 #   $Conf{TarShareName} = ['/home', '/src'];    # backup /home and /src
272 #
273 # The fact this parameter is called 'TarShareName' is for historical
274 # consistency with the Smb transport options.  You can use any valid
275 # directory on the client: there is no need for it to correspond to
276 # any Smb share or device mount point.
277 #
278 # Note also that you can also use $Conf{BackupFilesOnly} to specify
279 # a specific list of directories to backup.  It's more efficient to
280 # use this option instead of $Conf{TarShareName} since a new tar is
281 # run for each entry in $Conf{TarShareName}.
282 #
283 # This setting only matters if $Conf{XferMethod} = 'tar'.
284 #
285 $Conf{TarShareName} = '/';
286
287 #
288 # Minimum period in days between full backups. A full dump will only be
289 # done if at least this much time has elapsed since the last full dump,
290 # and at least $Conf{IncrPeriod} days has elapsed since the last
291 # successful dump.
292 #
293 # Typically this is set slightly less than an integer number of days. The
294 # time taken for the backup, plus the granularity of $Conf{WakeupSchedule}
295 # will make the actual backup interval a bit longer.
296 #
297 $Conf{FullPeriod} = 6.97;
298
299 #
300 # Minimum period in days between incremental backups (a user requested
301 # incremental backup will be done anytime on demand).
302 #
303 # Typically this is set slightly less than an integer number of days. The
304 # time taken for the backup, plus the granularity of $Conf{WakeupSchedule}
305 # will make the actual backup interval a bit longer.
306 #
307 $Conf{IncrPeriod} = 0.97;
308
309 #
310 # Number of full backups to keep.  Must be >= 1.
311 #
312 # In the steady state, each time a full backup completes successfully
313 # the oldest one is removed.  If this number is decreased, the
314 # extra old backups will be removed.
315 #
316 # If filling of incremental dumps is off the oldest backup always
317 # has to be a full (ie: filled) dump.  This might mean an extra full
318 # dump is kept until the second oldest (incremental) dump expires.
319 #
320 $Conf{FullKeepCnt} = 1;
321
322 #
323 # Very old full backups are removed after $Conf{FullAgeMax} days.  However,
324 # we keep at least $Conf{FullKeepCntMin} full backups no matter how old
325 # they are.
326 #
327 $Conf{FullKeepCntMin} = 1;
328 $Conf{FullAgeMax}     = 60;
329
330 #
331 # Number of incremental backups to keep.  Must be >= 1.
332 #
333 # In the steady state, each time an incr backup completes successfully
334 # the oldest one is removed.  If this number is decreased, the
335 # extra old backups will be removed.
336 #
337 $Conf{IncrKeepCnt} = 6;
338
339 #
340 # Very old incremental backups are removed after $Conf{IncrAgeMax} days.
341 # However, we keep at least $Conf{IncrKeepCntMin} incremental backups no
342 # matter how old they are.
343 #
344 $Conf{IncrKeepCntMin} = 1;
345 $Conf{IncrAgeMax}     = 30;
346
347 #
348 # Whether incremental backups are filled.  "Filling" means that the
349 # most recent full (or filled) dump is merged into the new incremental
350 # dump using hardlinks.  This makes an incremental dump look like a
351 # full dump.  Prior to v1.03 all incremental backups were filled.
352 # In v1.4.0 and later the default is off.
353 #
354 # BackupPC, and the cgi interface in particular, do the right thing on
355 # un-filled incremental backups.  It will correctly display the merged
356 # incremental backup with the most recent filled backup, giving the
357 # un-filled incremental backups a filled appearance.  That means it
358 # invisible to the user whether incremental dumps are filled or not.
359 #
360 # Filling backups takes a little extra disk space, and it does cost
361 # some extra disk activity for filling, and later removal.  Filling
362 # is no longer useful, since file mangling and compression doesn't
363 # make a filled backup very useful. It's likely the filling option
364 # will be removed from future versions: filling will be delegated to
365 # the display and extraction of backup data.
366 #
367 # If filling is off, BackupPC makes sure that the oldest backup is
368 # a full, otherwise the following incremental backups will be
369 # incomplete.  This might mean an extra full backup has to be
370 # kept until the following incremental backups expire.
371 #
372 # The default is off.  You can turn this on or off at any
373 # time without affecting existing backups.
374 #
375 $Conf{IncrFill} = 0;
376
377 #
378 # Number of restore logs to keep.  BackupPC remembers information about
379 # each restore request.  This number per client will be kept around before
380 # the oldest ones are pruned.
381 #
382 # Note: files/dirs delivered via Zip or Tar downloads don't count as
383 # restores.  Only the first restore option (where the files and dirs
384 # are written to the host) count as restores that are logged.
385 #
386 $Conf{RestoreInfoKeepCnt} = 10;
387
388 #
389 # List of directories or files to backup.  If this is defined, only these
390 # directories or files will be backed up.
391 #
392 # For Smb, only one of $Conf{BackupFilesExclude} and $Conf{BackupFilesOnly}
393 # can be specified per share. If both are set for a particular share, then
394 # $Conf{BackupFilesOnly} takes precedence and $Conf{BackupFilesExclude}
395 # is ignored.
396 #
397 # This can be set to a string, an array of strings, or, in the case
398 # of multiple shares, a hash of strings or arrays.  A hash is used
399 # to give a list of directories or files to backup for each share
400 # (the share name is the key).  If this is set to just a string or
401 # array, and $Conf{SmbShareName} contains multiple share names, then
402 # the setting is assumed to apply to only the first share name.
403 #
404 # Examples:
405 #    $Conf{BackupFilesOnly} = '/myFiles';
406 #    $Conf{BackupFilesOnly} = ['/myFiles'];     # same as first example
407 #    $Conf{BackupFilesOnly} = ['/myFiles', '/important'];
408 #    $Conf{BackupFilesOnly} = {
409 #       'c' => ['/myFiles', '/important'],      # these are for 'c' share
410 #       'd' => ['/moreFiles', '/archive'],      # these are for 'd' share
411 #    }
412 #
413 $Conf{BackupFilesOnly} = undef;
414
415 #
416 # List of directories or files to exclude from the backup.  For Smb,
417 # only one of $Conf{BackupFilesExclude} and $Conf{BackupFilesOnly}
418 # can be specified per share.  If both are set for a particular share,
419 # then $Conf{BackupFilesOnly} takes precedence and
420 # $Conf{BackupFilesExclude} is ignored.
421 #
422 # This can be set to a string, an array of strings, or, in the case
423 # of multiple shares, a hash of strings or arrays.  A hash is used
424 # to give a list of directories or files to exclude for each share
425 # (the share name is the key).  If this is set to just a string or
426 # array, and $Conf{SmbShareName} contains multiple share names, then
427 # the setting is assumed to apply to only the first share name.
428 #
429 # The exact behavior is determined by the underlying transport program,
430 # smbclient or tar.  For smbclient the exlclude file list is passed into
431 # the X option.  Simple shell wild-cards using "*" or "?" are allowed.
432 #
433 # For tar, if the exclude file contains a "/" it is assumed to be anchored
434 # at the start of the string.  Since all the tar paths start with "./",
435 # BackupPC prepends a "." if the exclude file starts with a "/".  Note
436 # that GNU tar version >= 1.3.7 is required for the exclude option to
437 # work correctly.  For linux or unix machines it is recommended to add
438 # "/proc" to $Conf{BackupFilesExclude}.
439 #
440 # Examples:
441 #    $Conf{BackupFilesExclude} = '/temp';
442 #    $Conf{BackupFilesExclude} = ['/temp'];     # same as first example
443 #    $Conf{BackupFilesExclude} = ['/temp', '/winnt/tmp'];
444 #    $Conf{BackupFilesExclude} = {
445 #       'c' => ['/temp', '/winnt/tmp'],         # these are for 'c' share
446 #       'd' => ['/junk', '/dont_back_this_up'], # these are for 'd' share
447 #    }
448 #
449 $Conf{BackupFilesExclude} = undef;
450
451 #
452 # PCs that are always or often on the network can be backed up after
453 # hours, to reduce PC, network and server load during working hours. For
454 # each PC a count of consecutive good pings is maintained. Once a PC has
455 # at least $Conf{BlackoutGoodCnt} consecutive good pings it is subject
456 # to "blackout" and not backed up during hours and days specified by
457 # $Conf{BlackoutWeekDays}, $Conf{BlackoutHourBegin} and
458 # $Conf{BlackoutHourEnd}.
459 #
460 # To allow for periodic rebooting of a PC or other brief periods when a
461 # PC is not on the network, a number of consecutive bad pings is allowed
462 # before the good ping count is reset. This parameter is
463 # $Conf{BlackoutBadPingLimit}.
464 #
465 # Note that bad and good pings don't occur with the same interval. If a
466 # machine is always on the network, it will only be pinged roughly once
467 # every $Conf{IncrPeriod} (eg: once per day). So a setting for
468 # $Conf{BlackoutGoodCnt} of 7 means it will take around 7 days for a
469 # machine to be subject to blackout. On the other hand, if a ping is
470 # failed, it will be retried roughly every time BackupPC wakes up, eg,
471 # every one or two hours. So a setting for $Conf{BlackoutBadPingLimit} of
472 # 3 means that the PC will lose its blackout status after 3-6 hours of
473 # unavailability.
474 #
475 # To disable the blackout feature set $Conf{BlackoutGoodCnt} to a negative
476 # value.  A value of 0 will make all machines subject to blackout.  But
477 # if you don't want to do any backups during the day it would be easier
478 # to just set $Conf{WakeupSchedule} to a restricted schedule.
479 #
480 $Conf{BlackoutBadPingLimit} = 3;
481 $Conf{BlackoutGoodCnt}      = 7;
482
483 #
484 # The default settings specify the blackout period from 7:00am to
485 # 7:30pm local time on Mon-Fri.  For $Conf{BlackoutWeekDays},
486 # 0 is Sunday, 1 is Monday etc.
487 #
488 $Conf{BlackoutHourBegin}    = 7.0;
489 $Conf{BlackoutHourEnd}      = 19.5;
490 $Conf{BlackoutWeekDays}     = [1, 2, 3, 4, 5];
491
492 ###########################################################################
493 # General per-PC configuration settings
494 # (can be overridden in the per-PC config.pl)
495 ###########################################################################
496 #
497 # What transport method to use to backup each host.  If you have
498 # a mixed set of WinXX and linux/unix hosts you will need to override
499 # this in the per-PC config.pl.
500 #
501 # The valid values are:
502 #
503 #   - 'smb':    backup and restore via smbclient and the SMB protocol.
504 #               Best choice for WinXX.
505 #
506 #   - 'rsync':  backup and restore via rsync (via rsh or ssh).
507 #               Best choice for linux/unix.  Can also work on WinXX.
508 #
509 #   - 'rsyncd': backup and restre via rsync daemon on the client.
510 #               Best choice for linux/unix if you have rsyncd running on
511 #               the client.  Can also work on WinXX.
512 #
513 #   - 'tar':    backup and restore via tar, tar over ssh, rsh or nfs.
514 #               Good choice for linux/unix.
515 #
516 # A future version should support 'rsync' as a transport method for
517 # more efficient backup of linux/unix machines (and perhaps WinXX??).
518 #
519 $Conf{XferMethod} = 'smb';
520
521 #
522 # Full path for smbclient. Security caution: normal users should not
523 # allowed to write to this file or directory.
524 #
525 # smbclient is from the Samba distribution. smbclient is used to
526 # actually extract the incremental or full dump of the share filesystem
527 # from the PC.
528 #
529 # This setting only matters if $Conf{XferMethod} = 'smb'.
530 #
531 $Conf{SmbClientPath} = '/usr/bin/smbclient';
532
533 #
534 # Additional optional arguments to smbclient.
535 #
536 # Some users have reported that the -b option can be used to improve
537 # performance of smbclient.  The default value is 4096, and if you
538 # find smbclient has low throughput you might try a value of 2048, eg:
539 #
540 #     $Conf{SmbClientArgs} = '-b 2048';
541 #
542 # This setting only matters if $Conf{XferMethod} = 'smb'.
543 #
544 $Conf{SmbClientArgs} = '';
545
546 #
547 # Full command to run tar on the client.  GNU tar is required.  You will
548 # need to fill in the correct paths for ssh2 on the local host (server)
549 # and GNU tar on the client.  Security caution: normal users should not
550 # allowed to write to these executable files or directories.
551 #
552 # See the documentation for more information about setting up ssh2 keys.
553 #
554 # If you plan to use NFS then tar just runs locally and ssh2 is not needed.
555 # For example, assuming the client filesystem is mounted below /mnt/hostName,
556 # you could use something like:
557 #
558 #    $Conf{TarClientCmd} = '$tarPath -c -v -f - -C /mnt/$host/$shareName'
559 #                        . ' --totals';
560 #
561 # In the case of NFS or rsh you need to make sure BackupPC's privileges
562 # are sufficient to read all the files you want to backup.  Also, you
563 # will probably want to add "/proc" to $Conf{BackupFilesExclude}.
564 #
565 # Several variables are substituted at run-time.  The following variables
566 # are substituted at run-time:
567 #
568 #   $host        host name
569 #   $hostIP      host's IP address
570 #   $incrDate    newer-than date for incremental backups
571 #   $shareName   share name to backup (ie: top-level directory path)
572 #   $fileList    specific files to backup or exclude
573 #   $tarPath     same as $Conf{TarClientPath}
574 #   $sshPath     same as $Conf{SshPath}
575 #
576 # If a variable is followed by a "+" it is shell escaped.  This is
577 # necessary for the command part of ssh or rsh, since it ends up
578 # getting passed through the shell.
579 #
580 # This setting only matters if $Conf{XferMethod} = 'tar'.
581 #
582 $Conf{TarClientCmd} = '$sshPath -q -n -l root $host'
583                     . ' $tarPath -c -v -f - -C $shareName+'
584                     . ' --totals';
585
586 #
587 # Extra tar arguments for full backups.  Several variables are substituted at
588 # run-time.  See $Conf{TarClientCmd} for the list of variable substitutions.
589 #
590 # This setting only matters if $Conf{XferMethod} = 'tar'.
591 #
592 $Conf{TarFullArgs} = '$fileList+';
593
594 #
595 # Extra tar arguments for incr backups.  Several variables are substituted at
596 # run-time.  See $Conf{TarClientCmd} for the list of variable substitutions.
597 #
598 # Note that GNU tar has several methods for specifying incremental backups,
599 # including:
600 #
601 #   --newer-mtime $incrDate+
602 #          This causes a file to be included if the modification time is
603 #          later than $incrDate (meaning its contents might have changed).
604 #          But changes in the ownership or modes will not qualify the
605 #          file to be included in an incremental.
606 #
607 #   --newer=$incrDate+
608 #          This causes the file to be included if any attribute of the
609 #          file is later than $incrDate, meaning either attributes or
610 #          the modification time.  This is the default method.  Do
611 #          not use --atime-preserve in $Conf{TarClientCmd} above,
612 #          otherwise resetting the atime (access time) counts as an
613 #          attribute change, meaning the file will always be included
614 #          in each new incremental dump.
615 #
616 # This setting only matters if $Conf{XferMethod} = 'tar'.
617 #
618 $Conf{TarIncrArgs} = '--newer=$incrDate+ $fileList+';
619
620 #
621 # Full command to run tar for restore on the client.  GNU tar is required.
622 # This can be the same as $Conf{TarClientCmd}, with tar's -c replaced by -x
623 # and ssh's -n removed.
624 #
625 # See $Conf{TarClientCmd} for full details.
626 #
627 # This setting only matters if $Conf{XferMethod} = "tar".
628 #
629 $Conf{TarClientRestoreCmd} = '$sshPath -q -l root $host'
630                    . ' $tarPath -x -p --numeric-owner --same-owner'
631                    . ' -v -f - -C $shareName+';
632
633 #
634 # Full path for tar on the client. Security caution: normal users should not
635 # allowed to write to this file or directory.
636 #
637 # This setting only matters if $Conf{XferMethod} = 'tar'.
638 #
639 $Conf{TarClientPath} = '/bin/tar';
640
641 #
642 # Path to rsync executable on the client
643 #
644 $Conf{RsyncClientPath} = '/bin/rsync';
645
646 #
647 # Full command to run rsync on the client machine.  The following variables
648 # are substituted at run-time:
649 #
650 #        $host           host name being backed up
651 #        $hostIP         host's IP address
652 #        $shareName      share name to backup (ie: top-level directory path)
653 #        $rsyncPath      same as $Conf{RsyncClientPath}
654 #        $sshPath        same as $Conf{SshPath}
655 #        $argList        argument list, built from $Conf{RsyncArgs},
656 #                        $shareName, $Conf{BackupFilesExclude} and
657 #                        $Conf{BackupFilesOnly}
658 #
659 # This setting only matters if $Conf{XferMethod} = 'rsync'.
660 #
661 $Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList';
662
663 #
664 # Full command to run rsync for restore on the client.  The following
665 # variables are substituted at run-time:
666 #
667 #        $host           host name being backed up
668 #        $hostIP         host's IP address
669 #        $shareName      share name to backup (ie: top-level directory path)
670 #        $rsyncPath      same as $Conf{RsyncClientPath}
671 #        $sshPath        same as $Conf{SshPath}
672 #        $argList        argument list, built from $Conf{RsyncArgs},
673 #                        $shareName, $Conf{BackupFilesExclude} and
674 #                        $Conf{BackupFilesOnly}
675 #
676 # This setting only matters if $Conf{XferMethod} = 'rsync'.
677 #
678 $Conf{RsyncClientRestoreCmd} = '$sshPath -l root $host $rsyncPath $argList';
679
680 #
681 # Share name to backup.  For $Conf{XferMethod} = "rsync" this should
682 # be a directory name, eg '/' or '/home'.  For $Conf{XferMethod} = "rsyncd"
683 # this should be the name of the module to backup (ie: the name from
684 # /etc/rsynd.conf).
685 #
686 $Conf{RsyncShareName} = '/';
687
688 #
689 # Rsync daemon port on the client, for $Conf{XferMethod} = "rsyncd".
690 #
691 $Conf{RsyncdClientPort} = 873;
692
693 #
694 # Rsync daemon user name on client, for $Conf{XferMethod} = "rsyncd".
695 # The user name and password are stored on the client in whatever file
696 # the "secrets file" parameter in rsyncd.conf points to
697 # (eg: /etc/rsyncd.secrets).
698 #
699 $Conf{RsyncdUserName} = '';
700
701 #
702 # Rsync daemon user name on client, for $Conf{XferMethod} = "rsyncd".
703 # The user name and password are stored on the client in whatever file
704 # the "secrets file" parameter in rsyncd.conf points to
705 # (eg: /etc/rsyncd.secrets).
706 #
707 $Conf{RsyncdPasswd} = '';
708
709 #
710 # Whether authentication is mandatory when connecting to the client's
711 # rsyncd.  By default this is on, ensuring that BackupPC will refuse to
712 # connect to an rsyncd on the client that is not password protected.
713 # Turn off at your own risk.
714 #
715 $Conf{RsyncdAuthRequired} = 1;
716
717 #
718 # Arguments to rsync for backup.  Do not edit the first set unless you
719 # have a thorough understanding of how File::RsyncP works.
720 #
721 # Examples of additional arguments that should work are --exclude/--include,
722 # eg:
723 #
724 #     $Conf{RsyncArgs} = [
725 #           # original arguments here
726 #           '-v',
727 #           '--exclude', '/proc',
728 #           '--exclude', '*.tmp',
729 #     ];
730 #
731 $Conf{RsyncArgs} = [
732             #
733             # Do not edit these!
734             #
735             '--numeric-ids',
736             '--perms',
737             '--owner',
738             '--group',
739             '--devices',
740             '--links',
741             '--times',
742             '--block-size=2048',
743             '--recursive',
744             #
745             # Add additional arguments here
746             #
747 ];
748
749 #
750 # Arguments to rsync for restore.  Do not edit the first set unless you
751 # have a thorough understanding of how File::RsyncP works.
752 #
753 #
754 $Conf{RsyncRestoreArgs} = [
755             #
756             # Do not edit these!
757             #
758             "--numeric-ids",
759             "--perms",
760             "--owner",
761             "--group",
762             "--devices",
763             "--links",
764             "--times",
765             "--block-size=2048",
766             "--relative",
767             "--ignore-times",
768             "--recursive",
769             #
770             # Add additional arguments here
771             #
772 ];
773
774 #
775 # Amount of verbosity in Rsync Xfer log files.  0 means be quiet,
776 # 1 will give will give one line per file, 2 will also show skipped
777 # files on incrementals, higher values give more output.  10 will
778 # include byte dumps of all data read/written, which will make the
779 # log files huge.
780 #
781 $Conf{RsyncLogLevel} = 1;
782
783 #
784 # Full path for ssh. Security caution: normal users should not
785 # allowed to write to this file or directory.
786 #
787 $Conf{SshPath} = '/usr/bin/ssh';
788
789 #
790 # Full path for nmblookup. Security caution: normal users should not
791 # allowed to write to this file or directory.
792 #
793 # nmblookup is from the Samba distribution. nmblookup is used to get the
794 # netbios name, necessary for DHCP hosts.
795 #
796 $Conf{NmbLookupPath} = '/usr/bin/nmblookup';
797
798 #
799 # NmbLookup command.  Several variables are substituted at run-time:
800 #
801 #   $nmbLookupPath      path to nmblookup ($Conf{NmbLookupPath})
802 #   $host               host name
803 #
804 $Conf{NmbLookupCmd} = '$nmbLookupPath -A $host';
805
806 #
807 # For fixed IP address hosts, BackupPC_dump can also verify the netbios
808 # name to ensure it matches the host name.  An error is generated if
809 # they do not match.  Typically this flag is off.  But if you are going
810 # to transition a bunch of machines from fixed host addresses to DHCP,
811 # setting this flag is a great way to verify that the machines have
812 # their netbios name set correctly before turning on DCHP.
813 #
814 $Conf{FixedIPNetBiosNameCheck} = 0;
815
816 #
817 # Full path to the ping command.  Security caution: normal users
818 # should not be allowed to write to this file or directory.
819 #
820 # If you want to disable ping checking, set this to some program
821 # that exits with 0 status, eg:
822 #
823 #     $Conf{PingPath} = '/bin/echo';
824 #
825 $Conf{PingPath} = '/bin/ping';
826
827 #
828 # Ping command.  Several variables are substituted at run-time:
829 #
830 #   $pingPath      path to ping ($Conf{PingPath})
831 #   $host          host name
832 #
833 $Conf{PingCmd} = '$pingPath -c 1 $host';
834
835 #
836 # Compression level to use on files.  0 means no compression.  Compression
837 # levels can be from 1 (least cpu time, slightly worse compression) to
838 # 9 (most cpu time, slightly better compression).  The recommended value
839 # is 3.  Changing to 5, for example, will take maybe 20% more cpu time
840 # and will get another 2-3% additional compression. See the zlib
841 # documentation for more information about compression levels.
842 #
843 # Changing compression on or off after backups have already been done
844 # will require both compressed and uncompressed pool files to be stored.
845 # This will increase the pool storage requirements, at least until all
846 # the old backups expire and are deleted.
847 #
848 # It is ok to change the compression value (from one non-zero value to
849 # another non-zero value) after dumps are already done.  Since BackupPC
850 # matches pool files by comparing the uncompressed versions, it will still
851 # correctly match new incoming files against existing pool files.  The
852 # new compression level will take effect only for new files that are
853 # newly compressed and added to the pool.
854 #
855 # If compression was off and you are enabling compression for the first
856 # time you can use the BackupPC_compressPool utility to compress the
857 # pool.  This avoids having the pool grow to accommodate both compressed
858 # and uncompressed backups.  See the documentation for more information.
859 #
860 # Note: compression needs the Compress::Zlib perl library.  If the
861 # Compress::Zlib library can't be found then $Conf{CompressLevel} is
862 # forced to 0 (compression off).
863 #
864 $Conf{CompressLevel} = 0;
865
866 #
867 # Maximum round-trip ping time in milliseconds.  This threshold is set
868 # to avoid backing up PCs that are remotely connected through WAN or
869 # dialup connections.  The output from ping -s (assuming it is supported
870 # on your system) is used to check the round-trip packet time.  On your
871 # local LAN round-trip times should be much less than 20msec.  On most
872 # WAN or dialup connections the round-trip time will be typically more
873 # than 20msec.  Tune if necessary.
874 #
875 $Conf{PingMaxMsec} = 20;
876
877 #
878 # Timeout in seconds when listening for the transport program's
879 # (smbclient, tar etc) stdout. If no output is received during this
880 # time, then it is assumed that something has wedged during a backup,
881 # and the backup is terminated.
882 #
883 # Note that stdout buffering combined with huge files being backed up
884 # could cause longish delays in the output from smbclient that
885 # BackupPC_dump sees, so in rare cases you might want to increase
886 # this value.
887 #
888 # Despite the name, this parameter sets the timeout for all transport
889 # methods (tar, smb etc).
890 #
891 $Conf{ClientTimeout} = 7200;
892
893 #
894 # Maximum number of log files we keep around in each PC's directory
895 # (ie: pc/$host).  These files are aged monthly.  A setting of 12
896 # means there will be at most the files LOG, LOG.0, LOG.1, ... LOG.11
897 # in the pc/$host directory (ie: about a years worth).  (Except this
898 # month's LOG, these files will have a .z extension if compression
899 # is on).
900 #
901 # If you decrease this number after BackupPC has been running for a
902 # while you will have to manually remove the older log files.
903 #
904 $Conf{MaxOldPerPCLogFiles} = 12;
905
906 #
907 # Optional commands to run before and after dumps and restores.
908 # Stdout from these commands will be written to the Xfer (or Restore)
909 # log file.  One example of using these commands would be to
910 # shut down and restart a database server, or to dump a database
911 # to files for backup.  Example:
912 #
913 #    $Conf{DumpPreUserCmd} = '$sshPath -l root $host /usr/bin/dumpMysql';
914 #
915 # Various variable substitutions are available; see BackupPC_dump
916 # or BackupPC_restore for the details.
917 #
918 $Conf{DumpPreUserCmd}     = undef;
919 $Conf{DumpPostUserCmd}    = undef;
920 $Conf{RestorePreUserCmd}  = undef;
921 $Conf{RestorePostUserCmd} = undef;
922
923 #
924 # Advanced option for asking BackupPC to load additional perl modules.
925 # Can be a list (array ref) of module names to load at startup.
926 #
927 $Conf{PerlModuleLoad}     = undef;
928
929 ###########################################################################
930 # Email reminders, status and messages
931 # (can be overridden in the per-PC config.pl)
932 ###########################################################################
933 #
934 # Full path to the sendmail command.  Security caution: normal users
935 # should not allowed to write to this file or directory.
936 #
937 $Conf{SendmailPath} = '/usr/sbin/sendmail';
938
939 #
940 # Minimum period between consecutive emails to a single user.
941 # This tries to keep annoying email to users to a reasonable
942 # level.  Email checks are done nightly, so this number is effectively
943 # rounded up (ie: 2.5 means a user will never receive email more
944 # than once every 3 days).
945 #
946 $Conf{EMailNotifyMinDays} = 2.5;
947
948 #
949 # Name to use as the "from" name for email.  Depending upon your mail
950 # handler this is either a plain name (eg: "admin") or a fully-qualified
951 # name (eg: "admin@mydomain.com").
952 #
953 $Conf{EMailFromUserName} = '';
954
955 #
956 # Destination address to an administrative user who will receive a
957 # nightly email with warnings and errors.  If there are no warnings
958 # or errors then no email will be sent.  Depending upon your mail
959 # handler this is either a plain name (eg: "admin") or a fully-qualified
960 # name (eg: "admin@mydomain.com").
961 #
962 $Conf{EMailAdminUserName} = '';
963
964 #
965 # This message is sent to a user if their PC has never been backed up.
966 # If your mailer needs a fully-qualified To name, then change "$user"
967 # to "$user@mydomain.com" in the template, eg:
968 #
969 #       To: $user@mydomain.com
970 #
971 $Conf{EMailNoBackupEverMesg} = <<'EOF';
972 To: $user
973 cc:
974 Subject: $subj
975
976 Dear $userName,
977
978 Your PC ($host) has never been successfully backed up by our
979 PC backup software.  PC backups should occur automatically
980 when your PC is connected to the network.  You should contact
981 computer support if:
982
983   - Your PC has been regularly connected to the network, meaning
984     there is some configuration or setup problem preventing
985     backups from occurring.
986
987   - You don't want your PC backed up and you want these email
988     messages to stop.
989
990 Otherwise, please make sure your PC is connected to the network
991 next time you are in the office.
992
993 Regards,
994 BackupPC Genie
995 http://backuppc.sourceforge.net
996 EOF
997
998 #
999 # How old the most recent backup has to be before notifying user.
1000 # When there have been no backups in this number of days the user
1001 # is sent an email.
1002 #
1003 $Conf{EMailNotifyOldBackupDays} = 7.0;
1004
1005 #
1006 # This message is sent to a user if their PC has not recently been
1007 # backed up (ie: more than $Conf{EMailNotifyOldBackupDays} days ago).
1008 #
1009 # If your mailer needs a fully-qualified To name, then change "$user"
1010 # to "$user@mydomain.com" in the template, eg:
1011 #
1012 #       To: $user@mydomain.com
1013 #
1014 $Conf{EMailNoBackupRecentMesg} = <<'EOF';
1015 To: $user
1016 cc:
1017 Subject: $subj
1018
1019 Dear $userName,
1020
1021 Your PC ($host) has not been successfully backed up for $days days.
1022 Your PC has been correctly backed up $numBackups times from $firstTime to $days days
1023 ago.  PC backups should occur automatically when your PC is connected
1024 to the network.
1025
1026 If your PC has been connected for more than a few hours to the
1027 network during the last $days days you should contact IS to find
1028 out why backups are not working.
1029
1030 Otherwise, if you are out of the office, there's not much you can
1031 do, other than manually copying especially critical files to other
1032 media.  You should be aware that any files you have created or
1033 changed in the last $days days (including all new email and
1034 attachments) cannot be restored if your PC disk crashes.
1035
1036 Regards,
1037 BackupPC Genie
1038 http://backuppc.sourceforge.net
1039 EOF
1040
1041 #
1042 # How old the most recent backup of Outlook files has to be before
1043 # notifying user.
1044 #
1045 $Conf{EMailNotifyOldOutlookDays} = 5.0;
1046
1047 #
1048 # This message is sent to a user if their Outlook files have not
1049 # recently been backed up (ie: more than $Conf{EMailNotifyOldOutlookDays}
1050 # days ago).
1051 #
1052 # If your mailer needs a fully-qualified To name, then change "$user"
1053 # to "$user@mydomain.com" in the template, eg:
1054 #
1055 #       To: $user@mydomain.com
1056 #
1057 $Conf{EMailOutlookBackupMesg} = <<'EOF';
1058 To: $user
1059 cc:
1060 Subject: $subj
1061
1062 Dear $userName,
1063
1064 The Outlook files on your PC have $howLong.
1065 These files contain all your email, attachments, contact and calendar
1066 information.  Your PC has been correctly backed up $numBackups times from
1067 $firstTime to $lastTime days ago.  However, Outlook locks all its files when
1068 it is running, preventing these files from being backed up.
1069
1070 It is recommended you backup the Outlook files when you are connected
1071 to the network by exiting Outlook and all other applications, and,
1072 using just your browser, go to this link:
1073
1074     http://myHost/cgi-bin/BackupPC_Admin?host=$host
1075
1076 Select "Start Incr Backup" twice to start a new incremental backup.
1077 You can select "Return to $host page" and then hit "reload" to check
1078 the status of the backup.  It should take just a few minutes to
1079 complete.
1080
1081 Regards,
1082 BackupPC Genie
1083 http://backuppc.sourceforge.net
1084 EOF
1085
1086 ###########################################################################
1087 # CGI user interface configuration settings
1088 # (can be overridden in the per-PC config.pl)
1089 ###########################################################################
1090 #
1091 # Normal users can only access information specific to their host.
1092 # They can start/stop/browse/restore backups.
1093 #
1094 # Administrative users have full access to all hosts, plus overall
1095 # status and log information.
1096 #
1097 # The administrative users are the union of the unix/linux group
1098 # $Conf{CgiAdminUserGroup} and the manual list of users, separated
1099 # by spaces, in $Conf{CgiAdminUsers}. If you don't want a group or
1100 # manual list of users set the corresponding configuration setting
1101 # to undef or an empty string.
1102 #
1103 # If you want every user to have admin privileges (careful!), set
1104 # $Conf{CgiAdminUsers} = '*'.
1105 #
1106 # Examples:
1107 #    $Conf{CgiAdminUserGroup} = 'admin';
1108 #    $Conf{CgiAdminUsers}     = 'craig celia';
1109 #    --> administrative users are the union of group admin, plus
1110 #      craig and celia.
1111 #
1112 #    $Conf{CgiAdminUserGroup} = '';
1113 #    $Conf{CgiAdminUsers}     = 'craig celia';
1114 #    --> administrative users are only craig and celia'.
1115 #
1116 $Conf{CgiAdminUserGroup} = '';
1117 $Conf{CgiAdminUsers}     = '';
1118
1119 #   
1120 # Language to use.  See lib/BackupPC/Lang for the list of supported
1121 # languages, which includes English (en) and French (fr).  Currently
1122 # this applies mainly to the CGI interface, but over time it might
1123 # also include log files and other text output.
1124 #
1125 $Conf{Language} = 'en';
1126
1127 #
1128 # User names that are rendered by the CGI interface can be turned
1129 # into links into their home page or other information about the
1130 # user.  To set this up you need to create two sprintf() strings,
1131 # that each contain a single '%s' that will be replaced by the user
1132 # name.  The default is a mailto: link.
1133 #
1134 # $Conf{CgiUserHomePageCheck} should be an absolute file path that
1135 # is used to check (via "-f") that the user has a valid home page.
1136 # Set this to undef or an empty string to turn off this check.
1137 #
1138 # $Conf{CgiUserUrlCreate} should be a full URL that points to the
1139 # user's home page.  Set this to undef or an empty string to turn
1140 # off generation of URLs for user names.
1141 #
1142 # Example:
1143 #    $Conf{CgiUserHomePageCheck} = '/var/www/html/users/%s.html';
1144 #    $Conf{CgiUserUrlCreate}     = 'http://myhost/users/%s.html';
1145 #    --> if /var/www/html/users/craig.html exists, then 'craig' will
1146 #      be rendered as a link to http://myhost/users/craig.html.
1147 #
1148 $Conf{CgiUserHomePageCheck} = '';
1149 $Conf{CgiUserUrlCreate}     = 'mailto:%s';
1150
1151 #
1152 # Date display format for CGI interface.  True for US-style dates (MM/DD)
1153 # and zero for international dates (DD/MM).
1154 #
1155 $Conf{CgiDateFormatMMDD} = 1;
1156
1157 #
1158 # If set, the complete list of hosts appears in the left navigation
1159 # bar for administrators.  Otherwise, just the hosts for which the
1160 # user is listed in the host file (as either the user or in moreUsers)
1161 # are displayed.
1162 #
1163 $Conf{CgiNavBarAdminAllHosts} = 0;
1164
1165 #
1166 # Header font and size for CGI interface
1167 #
1168 $Conf{CgiHeaderFontType} = 'arial';
1169 $Conf{CgiHeaderFontSize} = '3';
1170
1171 #
1172 # Color scheme for CGI interface.  Default values give a very light blue
1173 # for the background navigation color, green for the header background,
1174 # and white for the body background.  (You call tell I should stick to
1175 # programming and not graphical design.)
1176 #
1177 $Conf{CgiNavBarBgColor} = '#ddeeee';
1178 $Conf{CgiHeaderBgColor} = '#99cc33';
1179 $Conf{CgiBodyBgColor}   = '#ffffff';
1180
1181 #
1182 # Additional CGI header text.  For example, if you wanted each CGI page
1183 # to auto refresh every 900 seconds, you could add this text:
1184 #
1185 #       <meta http-equiv="refresh" content="900">
1186 #
1187 $Conf{CgiHeaders} = '<meta http-equiv="pragma" content="no-cache">';
1188
1189 #
1190 # Directory where images are stored.  This directory should be below
1191 # Apache's DocumentRoot.  This value isn't used by BackupPC but is
1192 # used by configure.pl when you upgrade BackupPC.
1193 #
1194 # Example:
1195 #     $Conf{CgiImageDir} = '/usr/local/apache/htdocs/BackupPC';
1196 #
1197 $Conf{CgiImageDir} = '';
1198
1199 #
1200 # Additional mappings of file name extenions to Content-Type for
1201 # individual file restore.  See $Ext2ContentType in BackupPC_Admin
1202 # for the default setting.  You can add additional settings here,
1203 # or override any default settings.  Example:
1204 #
1205 #     $Conf{CgiExt2ContentType} = {
1206 #                 'pl'  => 'text/plain',
1207 #          };
1208 #
1209 $Conf{CgiExt2ContentType} = { };
1210
1211 #
1212 # URL (without the leading http://host) for BackupPC's image directory.
1213 # The CGI script uses this value to serve up image files.
1214 #
1215 # Example:
1216 #     $Conf{CgiImageDirURL} = '/BackupPC';
1217 #
1218 $Conf{CgiImageDirURL} = '';