From: Frank Brehm Date: Thu, 3 Jan 2013 12:24:07 +0000 (+0100) Subject: Current state after installation of BackupPC X-Git-Url: https://git.uhu-banane.de/?a=commitdiff_plain;h=896f1ca7d77dab265bdcaa4065dd18311a9d83ec;p=config%2Fbruni%2Fetc.git Current state after installation of BackupPC --- diff --git a/BackupPC/.keep_app-backup_backuppc-0 b/BackupPC/.keep_app-backup_backuppc-0 new file mode 100644 index 00000000..e69de29b diff --git a/BackupPC/config.pl b/BackupPC/config.pl new file mode 100644 index 00000000..556b946d --- /dev/null +++ b/BackupPC/config.pl @@ -0,0 +1,2279 @@ +#============================================================= -*-perl-*- +# +# Configuration file for BackupPC. +# +# DESCRIPTION +# +# This is the main configuration file for BackupPC. +# +# This file must be valid perl source, so make sure the punctuation, +# quotes, and other syntax are valid. +# +# This file is read by BackupPC at startup, when a HUP (-1) signal +# is sent to BackupPC and also at each wakeup time whenever the +# modification time of this file changes. +# +# The configuration parameters are divided into four general groups. +# The first group (general server configuration) provides general +# configuration for BackupPC. The next two groups describe what +# to backup, when to do it, and how long to keep it. The fourth +# group are settings for the CGI http interface. +# +# Configuration settings can also be specified on a per-PC basis. +# Simply put the relevant settings in a config.pl file in the +# PC's backup directory (ie: in __TOPDIR__/pc/hostName). +# All configuration settings in the second, third and fourth +# groups can be overridden by the per-PC config.pl file. +# +# AUTHOR +# Craig Barratt +# +# COPYRIGHT +# Copyright (C) 2001-2009 Craig Barratt +# +# See http://backuppc.sourceforge.net. +# +#======================================================================== + +########################################################################### +# General server configuration +########################################################################### +# +# Host name on which the BackupPC server is running. +# +$Conf{ServerHost} = 'bruni'; + +# +# TCP port number on which the BackupPC server listens for and accepts +# connections. Normally this should be disabled (set to -1). The TCP +# port is only needed if apache runs on a different machine from BackupPC. +# In that case, set this to any spare port number over 1024 (eg: 2359). +# If you enable the TCP port, make sure you set $Conf{ServerMesgSecret} +# too! +# +$Conf{ServerPort} = -1; + +# +# Shared secret to make the TCP port secure. Set this to a hard to guess +# string if you enable the TCP port (ie: $Conf{ServerPort} > 0). +# +# To avoid possible attacks via the TCP socket interface, every client +# message is protected by an MD5 digest. The MD5 digest includes four +# items: +# - a seed that is sent to the client when the connection opens +# - a sequence number that increments for each message +# - a shared secret that is stored in $Conf{ServerMesgSecret} +# - the message itself. +# +# The message is sent in plain text preceded by the MD5 digest. A +# snooper can see the plain-text seed sent by BackupPC and plain-text +# message from the client, but cannot construct a valid MD5 digest since +# the secret $Conf{ServerMesgSecret} is unknown. A replay attack is +# not possible since the seed changes on a per-connection and +# per-message basis. +# +$Conf{ServerMesgSecret} = ''; + +# +# PATH setting for BackupPC. An explicit value is necessary +# for taint mode. Value shouldn't matter too much since +# all execs use explicit paths. However, taint mode in perl +# will complain if this directory is world writable. +# +$Conf{MyPath} = '/bin'; + +# +# Permission mask for directories and files created by BackupPC. +# Default value prevents any access from group other, and prevents +# group write. +# +$Conf{UmaskMode} = 27; + +# +# Times at which we wake up, check all the PCs, and schedule necessary +# backups. Times are measured in hours since midnight. Can be +# fractional if necessary (eg: 4.25 means 4:15am). +# +# If the hosts you are backing up are always connected to the network +# you might have only one or two wakeups each night. This will keep +# the backup activity after hours. On the other hand, if you are backing +# up laptops that are only intermittently connected to the network you +# will want to have frequent wakeups (eg: hourly) to maximize the chance +# that each laptop is backed up. +# +# Examples: +# $Conf{WakeupSchedule} = [22.5]; # once per day at 10:30 pm. +# $Conf{WakeupSchedule} = [2,4,6,8,10,12,14,16,18,20,22]; # every 2 hours +# +# The default value is every hour except midnight. +# +# The first entry of $Conf{WakeupSchedule} is when BackupPC_nightly is run. +# You might want to re-arrange the entries in $Conf{WakeupSchedule} +# (they don't have to be ascending) so that the first entry is when +# you want BackupPC_nightly to run (eg: when you don't expect a lot +# of regular backups to run). +# +$Conf{WakeupSchedule} = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 +]; + +# +# Maximum number of simultaneous backups to run. If there +# are no user backup requests then this is the maximum number +# of simultaneous backups. +# +$Conf{MaxBackups} = 4; + +# +# Additional number of simultaneous backups that users can run. +# As many as $Conf{MaxBackups} + $Conf{MaxUserBackups} requests can +# run at the same time. +# +$Conf{MaxUserBackups} = 4; + +# +# Maximum number of pending link commands. New backups will only be +# started if there are no more than $Conf{MaxPendingCmds} plus +# $Conf{MaxBackups} number of pending link commands, plus running jobs. +# This limit is to make sure BackupPC doesn't fall too far behind in +# running BackupPC_link commands. +# +$Conf{MaxPendingCmds} = 15; + +# +# Nice level at which CmdQueue commands (eg: BackupPC_link and +# BackupPC_nightly) are run at. +# +$Conf{CmdQueueNice} = 10; + +# +# How many BackupPC_nightly processes to run in parallel. +# +# Each night, at the first wakeup listed in $Conf{WakeupSchedule}, +# BackupPC_nightly is run. Its job is to remove unneeded files +# in the pool, ie: files that only have one link. To avoid race +# conditions, BackupPC_nightly and BackupPC_link cannot run at +# the same time. Starting in v3.0.0, BackupPC_nightly can run +# concurrently with backups (BackupPC_dump). +# +# So to reduce the elapsed time, you might want to increase this +# setting to run several BackupPC_nightly processes in parallel +# (eg: 4, or even 8). +# +$Conf{MaxBackupPCNightlyJobs} = 2; + +# +# How many days (runs) it takes BackupPC_nightly to traverse the +# entire pool. Normally this is 1, which means every night it runs, +# it does traverse the entire pool removing unused pool files. +# +# Other valid values are 2, 4, 8, 16. This causes BackupPC_nightly to +# traverse 1/2, 1/4, 1/8 or 1/16th of the pool each night, meaning it +# takes 2, 4, 8 or 16 days to completely traverse the pool. The +# advantage is that each night the running time of BackupPC_nightly +# is reduced roughly in proportion, since the total job is split +# over multiple days. The disadvantage is that unused pool files +# take longer to get deleted, which will slightly increase disk +# usage. +# +# Note that even when $Conf{BackupPCNightlyPeriod} > 1, BackupPC_nightly +# still runs every night. It just does less work each time it runs. +# +# Examples: +# +# $Conf{BackupPCNightlyPeriod} = 1; # entire pool is checked every night +# +# $Conf{BackupPCNightlyPeriod} = 2; # two days to complete pool check +# # (different half each night) +# +# $Conf{BackupPCNightlyPeriod} = 4; # four days to complete pool check +# # (different quarter each night) +# +$Conf{BackupPCNightlyPeriod} = 1; + +# +# Maximum number of log files we keep around in log directory. +# These files are aged nightly. A setting of 14 means the log +# directory will contain about 2 weeks of old log files, in +# particular at most the files LOG, LOG.0, LOG.1, ... LOG.13 +# (except today's LOG, these files will have a .z extension if +# compression is on). +# +# If you decrease this number after BackupPC has been running for a +# while you will have to manually remove the older log files. +# +$Conf{MaxOldLogFiles} = 14; + +# +# Full path to the df command. Security caution: normal users +# should not allowed to write to this file or directory. +# +$Conf{DfPath} = '/bin/df'; + +# +# Command to run df. The following variables are substituted at run-time: +# +# $dfPath path to df ($Conf{DfPath}) +# $topDir top-level BackupPC data directory +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{DfCmd} = '$dfPath $topDir'; + +# +# Full path to various commands for archiving +# +$Conf{SplitPath} = '/usr/bin/split'; +$Conf{ParPath} = '/usr/bin/par2'; +$Conf{CatPath} = '/bin/cat'; +$Conf{GzipPath} = '/bin/gzip'; +$Conf{Bzip2Path} = '/bin/bzip2'; + +# +# Maximum threshold for disk utilization on the __TOPDIR__ filesystem. +# If the output from $Conf{DfPath} reports a percentage larger than +# this number then no new regularly scheduled backups will be run. +# However, user requested backups (which are usually incremental and +# tend to be small) are still performed, independent of disk usage. +# Also, currently running backups will not be terminated when the disk +# usage exceeds this number. +# +$Conf{DfMaxUsagePct} = 95; + +# +# How long BackupPC_trashClean sleeps in seconds between each check +# of the trash directory. Once every 5 minutes should be reasonable. +# +$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 +# $Conf{DHCPAddressRanges} = [ +# { +# ipAddrBase => '192.10.10', +# first => 20, +# last => 250, +# }, +# ]; +# # to specify two pools (192.10.10.20-250 and 192.10.11.10-50) +# $Conf{DHCPAddressRanges} = [ +# { +# ipAddrBase => '192.10.10', +# first => 20, +# last => 250, +# }, +# { +# ipAddrBase => '192.10.11', +# first => 10, +# last => 50, +# }, +# ]; +# +$Conf{DHCPAddressRanges} = []; + +# +# The BackupPC user. +# +$Conf{BackupPCUser} = 'backuppc'; + +# +# Important installation directories: +# +# TopDir - where all the backup data is stored +# ConfDir - where the main config and hosts files resides +# LogDir - where log files and other transient information +# InstallDir - where the bin, lib and doc installation dirs reside. +# Note: you cannot change this value since all the +# perl scripts include this path. You must reinstall +# with configure.pl to change InstallDir. +# CgiDir - Apache CGI directory for BackupPC_Admin +# +# Note: it is STRONGLY recommended that you don't change the +# values here. These are set at installation time and are here +# for reference and are used during upgrades. +# +# Instead of changing TopDir here it is recommended that you use +# a symbolic link to the new location, or mount the new BackupPC +# store at the existing $Conf{TopDir} setting. +# +#$Conf{TopDir} = '/var/lib/backuppc'; +$Conf{TopDir} = '/data/my_passport/backuppc'; +$Conf{ConfDir} = '/etc/BackupPC'; +$Conf{LogDir} = '/var/log/BackupPC'; +$Conf{InstallDir} = '/usr'; +$Conf{CgiDir} = '/usr/share/webapps/backuppc/3.2.1-r2/htdocs'; + +# +# Whether BackupPC and the CGI script BackupPC_Admin verify that they +# are really running as user $Conf{BackupPCUser}. If this flag is set +# and the effective user id (euid) differs from $Conf{BackupPCUser} +# then both scripts exit with an error. This catches cases where +# BackupPC might be accidently started as root or the wrong user, +# or if the CGI script is not installed correctly. +# +$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 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 +# across all the backups. +# +$Conf{HardLinkMax} = 31999; + +# +# Advanced option for asking BackupPC to load additional perl modules. +# Can be a list (array ref) of module names to load at startup. +# +$Conf{PerlModuleLoad} = undef; + +# +# 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'; +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{ServerInitdPath} = undef; +$Conf{ServerInitdStartCmd} = ''; + + +########################################################################### +# What to backup and when to do it +# (can be overridden in the per-PC config.pl) +########################################################################### +# +# Minimum period in days between full backups. A full dump will only be +# done if at least this much time has elapsed since the last full dump, +# and at least $Conf{IncrPeriod} days has elapsed since the last +# successful dump. +# +# Typically this is set slightly less than an integer number of days. The +# time taken for the backup, plus the granularity of $Conf{WakeupSchedule} +# will make the actual backup interval a bit longer. +# +$Conf{FullPeriod} = '6.97'; + +# +# Minimum period in days between incremental backups (a user requested +# incremental backup will be done anytime on demand). +# +# Typically this is set slightly less than an integer number of days. The +# time taken for the backup, plus the granularity of $Conf{WakeupSchedule} +# will make the actual backup interval a bit longer. +# +$Conf{IncrPeriod} = '0.97'; + +# +# Number of full backups to keep. Must be >= 1. +# +# In the steady state, each time a full backup completes successfully +# the oldest one is removed. If this number is decreased, the +# 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 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). +# +# Example: these two settings are equivalent and both keep just +# the four most recent full dumps: +# +# $Conf{FullKeepCnt} = 4; +# $Conf{FullKeepCnt} = [4]; +# +$Conf{FullKeepCnt} = [ + 1 +]; + +# +# Very old full backups are removed after $Conf{FullAgeMax} days. However, +# we keep at least $Conf{FullKeepCntMin} full backups no matter how old +# they are. +# +# Note that $Conf{FullAgeMax} will be increased to $Conf{FullKeepCnt} +# times $Conf{FullPeriod} if $Conf{FullKeepCnt} specifies enough +# full backups to exceed $Conf{FullAgeMax}. +# +$Conf{FullKeepCntMin} = 1; +$Conf{FullAgeMax} = 90; + +# +# Number of incremental backups to keep. Must be >= 1. +# +# In the steady state, each time an incr backup completes successfully +# the oldest one is removed. If this number is decreased, the +# extra old backups will be removed. +# +$Conf{IncrKeepCnt} = 6; + +# +# Very old incremental backups are removed after $Conf{IncrAgeMax} days. +# However, we keep at least $Conf{IncrKeepCntMin} incremental backups no +# matter how old they are. +# +$Conf{IncrKeepCntMin} = 1; +$Conf{IncrAgeMax} = 30; + +# +# Level of each incremental. "Level" follows the terminology +# of dump(1). A full backup has level 0. A new incremental +# of level N will backup all files that have changed since +# the most recent backup of a lower level. +# +# The entries of $Conf{IncrLevels} apply in order to each +# incremental after each full backup. It wraps around until +# the next full backup. For example, these two settings +# have the same effect: +# +# $Conf{IncrLevels} = [1, 2, 3]; +# $Conf{IncrLevels} = [1, 2, 3, 1, 2, 3]; +# +# This means the 1st and 4th incrementals (level 1) go all +# the way back to the full. The 2nd and 3rd (and 5th and +# 6th) backups just go back to the immediate preceeding +# incremental. +# +# Specifying a sequence of multi-level incrementals will +# usually mean more than $Conf{IncrKeepCnt} incrementals will +# need to be kept, since lower level incrementals are needed +# to merge a complete view of a backup. For example, with +# +# $Conf{FullPeriod} = 7; +# $Conf{IncrPeriod} = 1; +# $Conf{IncrKeepCnt} = 6; +# $Conf{IncrLevels} = [1, 2, 3, 4, 5, 6]; +# +# there will be up to 11 incrementals in this case: +# +# backup #0 (full, level 0, oldest) +# backup #1 (incr, level 1) +# backup #2 (incr, level 2) +# backup #3 (incr, level 3) +# backup #4 (incr, level 4) +# backup #5 (incr, level 5) +# backup #6 (incr, level 6) +# backup #7 (full, level 0) +# backup #8 (incr, level 1) +# backup #9 (incr, level 2) +# backup #10 (incr, level 3) +# backup #11 (incr, level 4) +# backup #12 (incr, level 5, newest) +# +# Backup #1 (the oldest level 1 incremental) can't be deleted +# since backups 2..6 depend on it. Those 6 incrementals can't +# all be deleted since that would only leave 5 (#8..12). +# When the next incremental happens (level 6), the complete +# set of 6 older incrementals (#1..6) will be deleted, since +# that maintains the required number ($Conf{IncrKeepCnt}) +# of incrementals. This situation is reduced if you set +# shorter chains of multi-level incrementals, eg: +# +# $Conf{IncrLevels} = [1, 2, 3]; +# +# would only have up to 2 extra incremenals before all 3 +# are deleted. +# +# BackupPC as usual merges the full and the sequence +# of incrementals together so each incremental can be +# browsed and restored as though it is a complete backup. +# If you specify a long chain of incrementals then more +# backups need to be merged when browsing, restoring, +# or getting the starting point for rsync backups. +# In the example above (levels 1..6), browing backup +# #6 requires 7 different backups (#0..6) to be merged. +# +# Because of this merging and the additional incrementals +# that need to be kept, it is recommended that some +# level 1 incrementals be included in $Conf{IncrLevels}. +# +# Prior to version 3.0 incrementals were always level 1, +# meaning each incremental backed up all the files that +# changed since the last full. +# +$Conf{IncrLevels} = [ + 1 +]; + +# +# Disable all full and incremental backups. These 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. +# +# There are three values for $Conf{BackupsDisable}: +# +# 0 Backups are enabled. +# +# 1 Don't do any regular backups on this client. Manually +# requested backups (via the CGI interface) will still occur. +# +# 2 Don't do any backups on this client. Manually requested +# backups (via the CGI interface) will be ignored. +# +# In versions prior to 3.0 Backups were disabled by setting +# $Conf{FullPeriod} to -1 or -2. +# +$Conf{BackupsDisable} = 0; + +# +# A failed full backup is saved as a partial backup. The rsync +# XferMethod can take advantage of the partial full when the next +# backup is run. This parameter sets the age of the partial full +# in days: if the partial backup is older than this number of +# days, then rsync will ignore (not use) the partial full when +# the next backup is run. If you set this to a negative value +# then no partials will be saved. If you set this to 0, partials +# will be saved, but will not be used by the next backup. +# +# The default setting of 3 days means that a partial older than +# 3 days is ignored when the next full backup is done. +# +$Conf{PartialAgeMax} = 3; + +# +# Whether incremental backups are filled. "Filling" means that the +# most recent full (or filled) dump is merged into the new incremental +# dump using hardlinks. This makes an incremental dump look like a +# full dump. Prior to v1.03 all incremental backups were filled. +# In v1.4.0 and later the default is off. +# +# BackupPC, and the cgi interface in particular, do the right thing on +# un-filled incremental backups. It will correctly display the merged +# incremental backup with the most recent filled backup, giving the +# un-filled incremental backups a filled appearance. That means it +# invisible to the user whether incremental dumps are filled or not. +# +# Filling backups takes a little extra disk space, and it does cost +# some extra disk activity for filling, and later removal. Filling +# is no longer useful, since file mangling and compression doesn't +# make a filled backup very useful. It's likely the filling option +# will be removed from future versions: filling will be delegated to +# the display and extraction of backup data. +# +# If filling is off, BackupPC makes sure that the oldest backup is +# a full, otherwise the following incremental backups will be +# incomplete. This might mean an extra full backup has to be +# kept until the following incremental backups expire. +# +# The default is off. You can turn this on or off at any +# time without affecting existing backups. +# +$Conf{IncrFill} = '0'; + +# +# Number of restore logs to keep. BackupPC remembers information about +# each restore request. This number per client will be kept around before +# the oldest ones are pruned. +# +# Note: files/dirs delivered via Zip or Tar downloads don't count as +# restores. Only the first restore option (where the files and dirs +# are written to the host) count as restores that are logged. +# +$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. +# +# For Smb, only one of $Conf{BackupFilesExclude} and $Conf{BackupFilesOnly} +# can be specified per share. If both are set for a particular share, then +# $Conf{BackupFilesOnly} takes precedence and $Conf{BackupFilesExclude} +# is ignored. +# +# This can be set to a string, an array of strings, or, in the case +# of multiple shares, a hash of strings or arrays. A hash is used +# 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 all shares. +# +# If a hash is used, a special key "*" means it applies to all +# shares that don't have a specific entry. +# +# Examples: +# $Conf{BackupFilesOnly} = '/myFiles'; +# $Conf{BackupFilesOnly} = ['/myFiles']; # same as first example +# $Conf{BackupFilesOnly} = ['/myFiles', '/important']; +# $Conf{BackupFilesOnly} = { +# 'c' => ['/myFiles', '/important'], # these are for 'c' share +# 'd' => ['/moreFiles', '/archive'], # these are for 'd' share +# }; +# $Conf{BackupFilesOnly} = { +# 'c' => ['/myFiles', '/important'], # these are for 'c' share +# '*' => ['/myFiles', '/important'], # these are other shares +# }; +# +$Conf{BackupFilesOnly} = {}; + +# +# List of directories or files to exclude from the backup. For Smb, +# only one of $Conf{BackupFilesExclude} and $Conf{BackupFilesOnly} +# can be specified per share. If both are set for a particular share, +# then $Conf{BackupFilesOnly} takes precedence and +# $Conf{BackupFilesExclude} is ignored. +# +# This can be set to a string, an array of strings, or, in the case +# of multiple shares, a hash of strings or arrays. A hash is used +# 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 all shares. +# +# The exact behavior is determined by the underlying transport program, +# smbclient or tar. For smbclient the exlclude file list is passed into +# the X option. Simple shell wild-cards using "*" or "?" are allowed. +# +# 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.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. +# +# Users report that for smbclient you should specify a directory +# followed by "/*", eg: "/proc/*", instead of just "/proc". +# +# FTP servers are traversed recursively so excluding directories will +# also exclude its contents. You can use the wildcard characters "*" +# and "?" to define files for inclusion and exclusion. Both +# attributes $Conf{BackupFilesOnly} and $Conf{BackupFilesExclude} can +# be defined for the same share. +# +# If a hash is used, a special key "*" means it applies to all +# shares that don't have a specific entry. +# +# Examples: +# $Conf{BackupFilesExclude} = '/temp'; +# $Conf{BackupFilesExclude} = ['/temp']; # same as first example +# $Conf{BackupFilesExclude} = ['/temp', '/winnt/tmp']; +# $Conf{BackupFilesExclude} = { +# 'c' => ['/temp', '/winnt/tmp'], # these are for 'c' share +# 'd' => ['/junk', '/dont_back_this_up'], # these are for 'd' share +# }; +# $Conf{BackupFilesExclude} = { +# 'c' => ['/temp', '/winnt/tmp'], # these are for 'c' share +# '*' => ['/junk', '/dont_back_this_up'], # these are for other shares +# }; +# +$Conf{BackupFilesExclude} = {}; + +# +# PCs that are always or often on the network can be backed up after +# hours, to reduce PC, network and server load during working hours. For +# 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{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 +# before the good ping count is reset. This parameter is +# $Conf{BlackoutBadPingLimit}. +# +# Note that bad and good pings don't occur with the same interval. If a +# machine is always on the network, it will only be pinged roughly once +# every $Conf{IncrPeriod} (eg: once per day). So a setting for +# $Conf{BlackoutGoodCnt} of 7 means it will take around 7 days for a +# machine to be subject to blackout. On the other hand, if a ping is +# failed, it will be retried roughly every time BackupPC wakes up, eg, +# every one or two hours. So a setting for $Conf{BlackoutBadPingLimit} of +# 3 means that the PC will lose its blackout status after 3-6 hours of +# unavailability. +# +# To disable the blackout feature set $Conf{BlackoutGoodCnt} to a negative +# value. A value of 0 will make all machines subject to blackout. But +# if you don't want to do any backups during the day it would be easier +# to just set $Conf{WakeupSchedule} to a restricted schedule. +# +$Conf{BlackoutBadPingLimit} = 3; +$Conf{BlackoutGoodCnt} = 7; + +# +# 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} = [ + { + 'hourEnd' => '19.5', + 'weekDays' => [ + 1, + 2, + 3, + 4, + 5 + ], + 'hourBegin' => 7 + } +]; + +# +# 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'; + +########################################################################### +# How to backup a client +# (can be overridden in the per-PC config.pl) +########################################################################### +# +# What transport method to use to backup each host. If you have +# a mixed set of WinXX and linux/unix hosts you will need to override +# this in the per-PC config.pl. +# +# The valid values are: +# +# - 'smb': backup and restore via smbclient and the SMB protocol. +# Easiest choice for WinXX. +# +# - 'rsync': backup and restore via rsync (via rsh or ssh). +# Best choice for linux/unix. Good choice also for WinXX. +# +# - 'rsyncd': backup and restore via rsync daemon on the client. +# Best choice for linux/unix if you have rsyncd running on +# the client. Good choice also for WinXX. +# +# - 'tar': backup and restore via tar, tar over ssh, rsh or nfs. +# Good choice for linux/unix. +# +# - 'archive': host is a special archive host. Backups are not done. +# An archive host is used to archive other host's backups +# to permanent media, such as tape, CDR or DVD. +# +# +$Conf{XferMethod} = 'smb'; + +# +# Level of verbosity in Xfer log files. 0 means be quiet, 1 will give +# will give one line per file, 2 will also show skipped files on +# incrementals, higher values give more output. +# +$Conf{XferLogLevel} = 1; + +# +# Filename charset encoding on the client. BackupPC uses utf8 +# on the server for filename encoding. If this is empty, then +# utf8 is assumed and client filenames will not be modified. +# If set to a different encoding then filenames will converted +# to/from utf8 automatically during backup and restore. +# +# If the file names displayed in the browser (eg: accents or special +# characters) don't look right then it is likely you haven't set +# $Conf{ClientCharset} correctly. +# +# If you are using smbclient on a WinXX machine, smbclient will convert +# to the "unix charset" setting in smb.conf. The default is utf8, +# in which case leave $Conf{ClientCharset} empty since smbclient does +# the right conversion. +# +# If you are using rsync on a WinXX machine then it does no conversion. +# A typical WinXX encoding for latin1/western europe is 'cp1252', +# so in this case set $Conf{ClientCharset} to 'cp1252'. +# +# On a linux or unix client, run "locale charmap" to see the client's +# charset. Set $Conf{ClientCharset} to this value. A typical value +# for english/US is 'ISO-8859-1'. +# +# Do "perldoc Encode::Supported" to see the list of possible charset +# values. The FAQ at http://www.cl.cam.ac.uk/~mgk25/unicode.html +# is excellent, and http://czyborra.com/charsets/iso8859.html +# provides more information on the iso-8859 charsets. +# +$Conf{ClientCharset} = ''; + +# +# Prior to 3.x no charset conversion was done by BackupPC. Backups were +# stored in what ever charset the XferMethod provided - typically utf8 +# for smbclient and the client's locale settings for rsync and tar (eg: +# cp1252 for rsync on WinXX and perhaps iso-8859-1 with rsync on linux). +# This setting tells BackupPC the charset that was used to store file +# names in old backups taken with BackupPC 2.x, so that non-ascii file +# names in old backups can be viewed and restored. +# +$Conf{ClientCharsetLegacy} = 'iso-8859-1'; + +########################################################################### +# Samba Configuration +# (can be overwritten in the per-PC log file) +########################################################################### +# +# Name of the host share that is backed up when using SMB. This can be a +# string or an array of strings if there are multiple shares per host. +# Examples: +# +# $Conf{SmbShareName} = 'c'; # backup 'c' share +# $Conf{SmbShareName} = ['c', 'd']; # backup 'c' and 'd' shares +# +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +$Conf{SmbShareName} = [ + 'C$' +]; + +# +# Smbclient share user name. This is passed to smbclient's -U argument. +# +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +$Conf{SmbShareUserName} = ''; + +# +# 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 +# not readable by regular users! See the "Setting up config.pl" section +# in the documentation for more information. +# +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +$Conf{SmbSharePasswd} = ''; + +# +# Full path for smbclient. Security caution: normal users should not +# allowed to write to this file or directory. +# +# smbclient is from the Samba distribution. smbclient is used to +# actually extract the incremental or full dump of the share filesystem +# from the PC. +# +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +$Conf{SmbClientPath} = '/usr/bin/smbclient'; + +# +# Command to run smbclient for a full dump. +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +# The following variables are substituted at run-time: +# +# $smbClientPath same as $Conf{SmbClientPath} +# $host host to backup/restore +# $hostIP host IP address +# $shareName share name +# $userName user name +# $fileList list of files to backup (based on exclude/include) +# $I_option optional -I option to smbclient +# $X_option exclude option (if $fileList is an exclude list) +# $timeStampFile start time for incremental dump +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -N -d 1 -c tarmode\\ full -Tc$X_option - $fileList'; + +# +# Command to run smbclient for an incremental dump. +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +# Same variable substitutions are applied as $Conf{SmbClientFullCmd}. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{SmbClientIncrCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -N -d 1 -c tarmode\\ full -TcN$X_option $timeStampFile - $fileList'; + +# +# Command to run smbclient for a restore. +# This setting only matters if $Conf{XferMethod} = 'smb'. +# +# Same variable substitutions are applied as $Conf{SmbClientFullCmd}. +# +# 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. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -N -d 1 -c tarmode\\ full -Tx -'; + +########################################################################### +# Tar Configuration +# (can be overwritten in the per-PC log file) +########################################################################### +# +# Which host directories to backup when using tar transport. This can be a +# string or an array of strings if there are multiple directories to +# backup per host. Examples: +# +# $Conf{TarShareName} = '/'; # backup everything +# $Conf{TarShareName} = '/home'; # only backup /home +# $Conf{TarShareName} = ['/home', '/src']; # backup /home and /src +# +# The fact this parameter is called 'TarShareName' is for historical +# consistency with the Smb transport options. You can use any valid +# directory on the client: there is no need for it to correspond to +# any Smb share or device mount point. +# +# Note also that you can also use $Conf{BackupFilesOnly} to specify +# a specific list of directories to backup. It's more efficient to +# 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} = [ + '/' +]; + +# +# Full command to run tar on the client. GNU tar is required. You will +# need to fill in the correct paths for ssh2 on the local host (server) +# and GNU tar on the client. Security caution: normal users should not +# allowed to write to these executable files or directories. +# +# See the documentation for more information about setting up ssh2 keys. +# +# If you plan to use NFS then tar just runs locally and ssh2 is not needed. +# For example, assuming the client filesystem is mounted below /mnt/hostName, +# you could use something like: +# +# $Conf{TarClientCmd} = '$tarPath -c -v -f - -C /mnt/$host/$shareName' +# . ' --totals'; +# +# In the case of NFS or rsh you need to make sure BackupPC's privileges +# are sufficient to read all the files you want to backup. Also, you +# will probably want to add "/proc" to $Conf{BackupFilesExclude}. +# +# The following variables are substituted at run-time: +# +# $host host name +# $hostIP host's IP address +# $incrDate newer-than date for incremental backups +# $shareName share name to backup (ie: top-level directory path) +# $fileList specific files to backup or exclude +# $tarPath same as $Conf{TarClientPath} +# $sshPath same as $Conf{SshPath} +# +# If a variable is followed by a "+" it is shell escaped. This is +# necessary for the command part of ssh or rsh, since it ends up +# getting passed through the shell. +# +# This setting only matters if $Conf{XferMethod} = 'tar'. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{TarClientCmd} = '$sshPath -q -x -n -l root $host env LC_ALL=C $tarPath -c -v -f - -C $shareName+ --totals'; + +# +# 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+'; + +# +# Extra tar arguments for incr backups. Several variables are substituted at +# run-time. See $Conf{TarClientCmd} for the list of variable substitutions. +# +# Note that GNU tar has several methods for specifying incremental backups, +# including: +# +# --newer-mtime $incrDate+ +# This causes a file to be included if the modification time is +# later than $incrDate (meaning its contents might have changed). +# But changes in the ownership or modes will not qualify the +# file to be included in an incremental. +# +# --newer=$incrDate+ +# This causes the file to be included if any attribute of the +# file is later than $incrDate, meaning either attributes or +# the modification time. This is the default method. Do +# not use --atime-preserve in $Conf{TarClientCmd} above, +# otherwise resetting the atime (access time) counts as an +# 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+'; + +# +# Full command to run tar for restore on the client. GNU tar is required. +# This can be the same as $Conf{TarClientCmd}, with tar's -c replaced by -x +# and ssh's -n removed. +# +# See $Conf{TarClientCmd} for full details. +# +# This setting only matters if $Conf{XferMethod} = "tar". +# +# 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. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{TarClientRestoreCmd} = '$sshPath -q -x -l root $host env LC_ALL=C $tarPath -x -p --numeric-owner --same-owner -v -f - -C $shareName+'; + +# +# Full path for tar on the client. Security caution: normal users should not +# allowed to write to this file or directory. +# +# This setting only matters if $Conf{XferMethod} = 'tar'. +# +$Conf{TarClientPath} = '/bin/tar'; + +########################################################################### +# Rsync/Rsyncd Configuration +# (can be overwritten in the per-PC log file) +########################################################################### +# +# Path to rsync executable on the client +# +$Conf{RsyncClientPath} = '/usr/bin/rsync'; + +# +# Full command to run rsync on the client machine. The following variables +# are substituted at run-time: +# +# $host host name being backed up +# $hostIP host's IP address +# $shareName share name to backup (ie: top-level directory path) +# $rsyncPath same as $Conf{RsyncClientPath} +# $sshPath same as $Conf{SshPath} +# $argList argument list, built from $Conf{RsyncArgs}, +# $shareName, $Conf{BackupFilesExclude} and +# $Conf{BackupFilesOnly} +# +# This setting only matters if $Conf{XferMethod} = 'rsync'. +# +$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+'; + +# +# Full command to run rsync for restore on the client. The following +# variables are substituted at run-time: +# +# $host host name being backed up +# $hostIP host's IP address +# $shareName share name to backup (ie: top-level directory path) +# $rsyncPath same as $Conf{RsyncClientPath} +# $sshPath same as $Conf{SshPath} +# $argList argument list, built from $Conf{RsyncArgs}, +# $shareName, $Conf{BackupFilesExclude} and +# $Conf{BackupFilesOnly} +# +# This setting only matters if $Conf{XferMethod} = 'rsync'. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+'; + +# +# Share name to backup. For $Conf{XferMethod} = "rsync" this should +# 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} = [ + '/' +]; + +# +# Rsync daemon port on the client, for $Conf{XferMethod} = "rsyncd". +# +$Conf{RsyncdClientPort} = 873; + +# +# Rsync daemon user name on client, for $Conf{XferMethod} = "rsyncd". +# The user name and password are stored on the client in whatever file +# the "secrets file" parameter in rsyncd.conf points to +# (eg: /etc/rsyncd.secrets). +# +$Conf{RsyncdUserName} = ''; + +# +# Rsync daemon user name on client, for $Conf{XferMethod} = "rsyncd". +# The user name and password are stored on the client in whatever file +# the "secrets file" parameter in rsyncd.conf points to +# (eg: /etc/rsyncd.secrets). +# +$Conf{RsyncdPasswd} = ''; + +# +# Whether authentication is mandatory when connecting to the client's +# rsyncd. By default this is on, ensuring that BackupPC will refuse to +# connect to an rsyncd on the client that is not password protected. +# Turn off at your own risk. +# +$Conf{RsyncdAuthRequired} = '1'; + +# +# When rsync checksum caching is enabled (by adding the +# --checksum-seed=32761 option to $Conf{RsyncArgs}), the cached +# checksums can be occasionally verified to make sure the file +# contents matches the cached checksums. This is to avoid the +# risk that disk problems might cause the pool file contents to +# get corrupted, but the cached checksums would make BackupPC +# think that the file still matches the client. +# +# This setting is the probability (0 means never and 1 means always) +# that a file will be rechecked. Setting it to 0 means the checksums +# will not be rechecked (unless there is a phase 0 failure). Setting +# it to 1 (ie: 100%) means all files will be checked, but that is +# not a desirable setting since you are better off simply turning +# caching off (ie: remove the --checksum-seed option). +# +# The default of 0.01 means 1% (on average) of the files during a full +# backup will have their cached checksum re-checked. +# +# This setting has no effect unless checksum caching is turned on. +# +$Conf{RsyncCsumCacheVerifyProb} = '0.01'; + +# +# Arguments to rsync for backup. Do not edit the first set unless you +# have a thorough understanding of how File::RsyncP works. +# +$Conf{RsyncArgs} = [ + '--numeric-ids', + '--perms', + '--owner', + '--group', + '-D', + '--links', + '--hard-links', + '--times', + '--block-size=2048', + '--recursive', + '--specials', + '--checksum-seed=32761', +]; + +# +# Additional arguments added to RsyncArgs. This can be used in +# conbination with $Conf{RsyncArgs} to allow customization of +# the rsync arguments on a part-client basis. The standard +# arguments go in $Conf{RsyncArgs} and $Conf{RsyncArgsExtra} +# can be set on a per-client basis. +# +# Examples of additional arguments that should work are --exclude/--include, +# eg: +# +# $Conf{RsyncArgsExtra} = [ +# '--exclude', '/proc', +# '--exclude', '*.tmp', +# ]; +# +# Both $Conf{RsyncArgs} and $Conf{RsyncArgsExtra} are subject +# to the following variable substitutions: +# +# $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 +# $confDir configuration directory path +# +# This allows settings of the form: +# +# $Conf{RsyncArgsExtra} = [ +# '--exclude-from=$confDir/pc/$host.exclude', +# ]; +# +$Conf{RsyncArgsExtra} = []; + +# +# 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} is subject to the following variable +# substitutions: +# +# $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 +# $confDir configuration directory path +# +# Note: $Conf{RsyncArgsExtra} doesn't apply to $Conf{RsyncRestoreArgs}. +# +$Conf{RsyncRestoreArgs} = [ + '--numeric-ids', + '--perms', + '--owner', + '--group', + '-D', + '--links', + '--hard-links', + '--times', + '--block-size=2048', + '--relative', + '--ignore-times', + '--recursive', + '--specials', + '--checksum-seed=32761', +]; + +########################################################################### +# FTP Configuration +# (can be overwritten in the per-PC log file) +########################################################################## +# +# Which host directories to backup when using FTP. This can be a +# string or an array of strings if there are multiple shares per host. +# +# This value must be specified in one of two ways: either as a +# subdirectory of the 'share root' on the server, or as the absolute +# path of the directory. +# +# In the following example, if the directory /home/username is the +# root share of the ftp server with the given username, the following +# two values will back up the same directory: +# +# $Conf{FtpShareName} = 'www'; # www directory +# $Conf{FtpShareName} = '/home/username/www'; # same directory +# +# Path resolution is not supported; i.e.; you may not have an ftp +# share path defined as '../otheruser' or '~/games'. +# +# Multiple shares may also be specified, as with other protocols: +# +# $Conf{FtpShareName} = [ 'www', +# 'bin', +# 'config' ]; +# +# Note also that you can also use $Conf{BackupFilesOnly} to specify +# a specific list of directories to backup. It's more efficient to +# use this option instead of $Conf{FtpShareName} since a new tar is +# run for each entry in $Conf{FtpShareName}. +# +# This setting only matters if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpShareName} = ''; + +# +# FTP user name. This is used to log into the server. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpUserName} = ''; + +# +# FTP user password. This is used to log into the server. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpPasswd} = ''; + +# +# Whether passive mode is used. The correct setting depends upon +# whether local or remote ports are accessible from the other machine, +# which is affected by any firewall or routers between the FTP server +# on the client and the BackupPC server. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpPassive} = 1; + +# +# Transfer block size. This sets the size of the amounts of data in +# each frame. While undefined, this value takes the default value. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpBlockSize} = 10240; + +# +# The port of the ftp server. If undefined, 21 is used. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpPort} = 21; + +# +# Connection timeout for FTP. When undefined, the default is 120 seconds. +# +# This setting is used only if $Conf{XferMethod} = 'ftp'. +# +$Conf{FtpTimeout} = 120; + +# +# Behaviour when BackupPC encounters symlinks on the FTP share. +# +# Symlinks cannot be restored via FTP, so the desired behaviour will +# be different depending on the setup of the share. The default for +# this behavor is 1. Directory shares with more complicated directory +# structures should consider other protocols. +# +$Conf{FtpFollowSymlinks} = 0; + +########################################################################### +# Archive Configuration +# (can be overwritten in the per-PC log file) +########################################################################### +# +# 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 amount of Parity data to generate, as a percentage +# of the archive size. +# Uses the commandline par2 (par2cmdline) 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. +# +# 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} = 0; + +# +# 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 par2 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 amount of parity data to create (percentage) +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$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. +# +$Conf{SshPath} = '/usr/bin/ssh'; + +# +# Full path for nmblookup. Security caution: normal users should not +# allowed to write to this file or directory. +# +# nmblookup is from the Samba distribution. nmblookup is used to get the +# netbios name, necessary for DHCP hosts. +# +$Conf{NmbLookupPath} = '/usr/bin/nmblookup'; + +# +# 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 IP address +# +# This command is only used for DHCP hosts: given an IP address, this +# command should try to find its NetBios name. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$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. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$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 +# they do not match. Typically this flag is off. But if you are going +# to transition a bunch of machines from fixed host addresses to DHCP, +# setting this flag is a great way to verify that the machines have +# their netbios name set correctly before turning on DCHP. +# +$Conf{FixedIPNetBiosNameCheck} = '0'; + +# +# Full path to the ping command. Security caution: normal users +# should not be allowed to write to this file or directory. +# +# If you want to disable ping checking, set this to some program +# that exits with 0 status, eg: +# +# $Conf{PingPath} = '/bin/echo'; +# +$Conf{PingPath} = '/bin/ping'; + +# +# 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. +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{PingCmd} = '$pingPath -c 1 -w 3 $host'; + +# +# Maximum round-trip ping time in milliseconds. This threshold is set +# to avoid backing up PCs that are remotely connected through WAN or +# dialup connections. The output from ping -s (assuming it is supported +# on your system) is used to check the round-trip packet time. On your +# local LAN round-trip times should be much less than 20msec. On most +# WAN or dialup connections the round-trip time will be typically more +# than 20msec. Tune if necessary. +# +$Conf{PingMaxMsec} = 20; + +# +# Compression level to use on files. 0 means no compression. Compression +# levels can be from 1 (least cpu time, slightly worse compression) to +# 9 (most cpu time, slightly better compression). The recommended value +# is 3. Changing to 5, for example, will take maybe 20% more cpu time +# and will get another 2-3% additional compression. See the zlib +# documentation for more information about compression levels. +# +# Changing compression on or off after backups have already been done +# will require both compressed and uncompressed pool files to be stored. +# This will increase the pool storage requirements, at least until all +# the old backups expire and are deleted. +# +# It is ok to change the compression value (from one non-zero value to +# another non-zero value) after dumps are already done. Since BackupPC +# matches pool files by comparing the uncompressed versions, it will still +# correctly match new incoming files against existing pool files. The +# new compression level will take effect only for new files that are +# newly compressed and added to the pool. +# +# If compression was off and you are enabling compression for the first +# time you can use the BackupPC_compressPool utility to compress the +# pool. This avoids having the pool grow to accommodate both compressed +# and uncompressed backups. See the documentation for more information. +# +# Note: compression needs the Compress::Zlib perl library. If the +# Compress::Zlib library can't be found then $Conf{CompressLevel} is +# forced to 0 (compression off). +# +$Conf{CompressLevel} = 3; + +# +# Timeout in seconds when listening for the transport program's +# (smbclient, tar etc) stdout. If no output is received during this +# time, then it is assumed that something has wedged during a backup, +# and the backup is terminated. +# +# Note that stdout buffering combined with huge files being backed up +# could cause longish delays in the output from smbclient that +# BackupPC_dump sees, so in rare cases you might want to increase +# this value. +# +# Despite the name, this parameter sets the timeout for all transport +# methods (tar, smb etc). +# +$Conf{ClientTimeout} = 72000; + +# +# Maximum number of log files we keep around in each PC's directory +# (ie: pc/$host). These files are aged monthly. A setting of 12 +# means there will be at most the files LOG, LOG.0, LOG.1, ... LOG.11 +# in the pc/$host directory (ie: about a years worth). (Except this +# month's LOG, these files will have a .z extension if compression +# is on). +# +# If you decrease this number after BackupPC has been running for a +# while you will have to manually remove the older log files. +# +$Conf{MaxOldPerPCLogFiles} = 12; + +# +# Optional commands to run before and after dumps and restores, +# and also before and after each share of a dump. +# +# Stdout from these commands will be written to the Xfer (or Restore) +# log file. One example of using these commands would be to +# shut down and restart a database server, dump a database +# to files for backup, or doing a snapshot of a share prior +# to a backup. Example: +# +# $Conf{DumpPreUserCmd} = '$sshPath -q -x -l root $host /usr/bin/dumpMysql'; +# +# The following variable substitutions are made at run time for +# $Conf{DumpPreUserCmd}, $Conf{DumpPostUserCmd}, $Conf{DumpPreShareCmd} +# and $Conf{DumpPostShareCmd}: +# +# $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 (or current share for +# $Conf{DumpPreShareCmd} and $Conf{DumpPostShareCmd}) +# $shares list of all the share names +# $XferMethod value of $Conf{XferMethod} (eg: tar, rsync, smb) +# $sshPath value of $Conf{SshPath}, +# $cmdType set to DumpPreUserCmd or DumpPostUserCmd +# +# 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 +# $cmdType set to RestorePreUserCmd or RestorePostUserCmd +# +# 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 amount of parity data being generated (percentage) +# $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" +# $cmdType set to ArchivePreUserCmd or ArchivePostUserCmd +# +# Note: all Cmds are executed directly without a shell, so the prog name +# needs to be a full path and you can't include shell syntax like +# redirection and pipes; put that in a script if you need it. +# +$Conf{DumpPreUserCmd} = undef; +$Conf{DumpPostUserCmd} = undef; +$Conf{DumpPreShareCmd} = undef; +$Conf{DumpPostShareCmd} = undef; +$Conf{RestorePreUserCmd} = undef; +$Conf{RestorePostUserCmd} = undef; +$Conf{ArchivePreUserCmd} = undef; +$Conf{ArchivePostUserCmd} = undef; + +# +# Whether the exit status of each PreUserCmd and +# PostUserCmd is checked. +# +# If set and the Dump/Restore/Archive Pre/Post UserCmd +# returns a non-zero exit status then the dump/restore/archive +# is aborted. To maintain backward compatibility (where +# the exit status in early versions was always ignored), +# this flag defaults to 0. +# +# If this flag is set and the Dump/Restore/Archive PreUserCmd +# fails then the matching Dump/Restore/Archive PostUserCmd is +# not executed. If DumpPreShareCmd returns a non-exit status, +# then DumpPostShareCmd is not executed, but the DumpPostUserCmd +# is still run (since DumpPreUserCmd must have previously +# succeeded). +# +# An example of a DumpPreUserCmd that might fail is a script +# that snapshots or dumps a database which fails because +# of some database error. +# +$Conf{UserCmdCheckStatus} = '0'; + +# +# 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; + +########################################################################### +# Email reminders, status and messages +# (can be overridden in the per-PC config.pl) +########################################################################### +# +# Full path to the sendmail command. Security caution: normal users +# should not allowed to write to this file or directory. +# +$Conf{SendmailPath} = '/usr/sbin/sendmail'; + +# +# Minimum period between consecutive emails to a single user. +# This tries to keep annoying email to users to a reasonable +# level. Email checks are done nightly, so this number is effectively +# rounded up (ie: 2.5 means a user will never receive email more +# than once every 3 days). +# +$Conf{EMailNotifyMinDays} = '2.5'; + +# +# Name to use as the "from" name for email. Depending upon your mail +# handler this is either a plain name (eg: "admin") or a fully-qualified +# name (eg: "admin@mydomain.com"). +# +$Conf{EMailFromUserName} = 'backuppc'; + +# +# Destination address to an administrative user who will receive a +# nightly email with warnings and errors. If there are no warnings +# or errors then no email will be sent. Depending upon your mail +# handler this is either a plain name (eg: "admin") or a fully-qualified +# name (eg: "admin@mydomain.com"). +# +$Conf{EMailAdminUserName} = 'backuppc'; + +# +# Destination domain name for email sent to users. By default +# this is empty, meaning email is sent to plain, unqualified +# addresses. Otherwise, set it to the destintation domain, eg: +# +# $Cong{EMailUserDestDomain} = '@mydomain.com'; +# +# With this setting user email will be set to 'user@mydomain.com'. +# +$Conf{EMailUserDestDomain} = ''; + +# +# This subject and message is sent to a user if their PC has never been +# backed up. +# +# These values are language-dependent. The default versions can be +# found in the language file (eg: lib/BackupPC/Lang/en.pm). If you +# need to change the message, copy it here and edit it, eg: +# +# $Conf{EMailNoBackupEverMesg} = <<'EOF'; +# To: $user$domain +# cc: +# Subject: $subj +# +# Dear $userName, +# +# This is a site-specific email message. +# EOF +# +$Conf{EMailNoBackupEverSubj} = undef; +$Conf{EMailNoBackupEverMesg} = undef; + +# +# How old the most recent backup has to be before notifying user. +# When there have been no backups in this number of days the user +# is sent an email. +# +$Conf{EMailNotifyOldBackupDays} = 7; + +# +# This subject and message is sent to a user if their PC has not recently +# been backed up (ie: more than $Conf{EMailNotifyOldBackupDays} days ago). +# +# These values are language-dependent. The default versions can be +# found in the language file (eg: lib/BackupPC/Lang/en.pm). If you +# need to change the message, copy it here and edit it, eg: +# +# $Conf{EMailNoBackupRecentMesg} = <<'EOF'; +# To: $user$domain +# cc: +# Subject: $subj +# +# Dear $userName, +# +# This is a site-specific email message. +# EOF +# +$Conf{EMailNoBackupRecentSubj} = undef; +$Conf{EMailNoBackupRecentMesg} = undef; + +# +# How old the most recent backup of Outlook files has to be before +# notifying user. +# +$Conf{EMailNotifyOldOutlookDays} = 5; + +# +# This subject and message is sent to a user if their Outlook files have +# not recently been backed up (ie: more than $Conf{EMailNotifyOldOutlookDays} +# days ago). +# +# These values are language-dependent. The default versions can be +# found in the language file (eg: lib/BackupPC/Lang/en.pm). If you +# need to change the message, copy it here and edit it, eg: +# +# $Conf{EMailOutlookBackupMesg} = <<'EOF'; +# To: $user$domain +# cc: +# Subject: $subj +# +# Dear $userName, +# +# This is a site-specific email message. +# EOF +# +$Conf{EMailOutlookBackupSubj} = undef; +$Conf{EMailOutlookBackupMesg} = undef; + +# +# Additional email headers. This sets to charset to +# utf8. +# +$Conf{EMailHeaders} = 'MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +'; + +########################################################################### +# CGI user interface configuration settings +# (can be overridden in the per-PC config.pl) +########################################################################### +# +# Normal users can only access information specific to their host. +# They can start/stop/browse/restore backups. +# +# Administrative users have full access to all hosts, plus overall +# status and log information. +# +# The administrative users are the union of the unix/linux group +# $Conf{CgiAdminUserGroup} and the manual list of users, separated +# by spaces, in $Conf{CgiAdminUsers}. If you don't want a group or +# manual list of users set the corresponding configuration setting +# to undef or an empty string. +# +# If you want every user to have admin privileges (careful!), set +# $Conf{CgiAdminUsers} = '*'. +# +# Examples: +# $Conf{CgiAdminUserGroup} = 'admin'; +# $Conf{CgiAdminUsers} = 'craig celia'; +# --> administrative users are the union of group admin, plus +# craig and celia. +# +# $Conf{CgiAdminUserGroup} = ''; +# $Conf{CgiAdminUsers} = 'craig celia'; +# --> administrative users are only craig and celia'. +# +$Conf{CgiAdminUserGroup} = ''; +$Conf{CgiAdminUsers} = 'backuppc'; + +# +# URL of the BackupPC_Admin CGI script. Used for email messages. +# +$Conf{CgiURL} = 'http://bruni/BackupPC_Admin'; + +# +# Language to use. See lib/BackupPC/Lang for the list of supported +# languages, which include English (en), French (fr), Spanish (es), +# German (de), Italian (it), Dutch (nl), Polish (pl), Portuguese +# Brazillian (pt_br) and Chinese (zh_CH). +# +# Currently the Language setting applies to the CGI interface and email +# messages sent to users. Log files and other text are still in English. +# +$Conf{Language} = 'en'; + +# +# User names that are rendered by the CGI interface can be turned +# into links into their home page or other information about the +# user. To set this up you need to create two sprintf() strings, +# that each contain a single '%s' that will be replaced by the user +# name. The default is a mailto: link. +# +# $Conf{CgiUserHomePageCheck} should be an absolute file path that +# is used to check (via "-f") that the user has a valid home page. +# Set this to undef or an empty string to turn off this check. +# +# $Conf{CgiUserUrlCreate} should be a full URL that points to the +# user's home page. Set this to undef or an empty string to turn +# off generation of URLs for user names. +# +# Example: +# $Conf{CgiUserHomePageCheck} = '/var/www/html/users/%s.html'; +# $Conf{CgiUserUrlCreate} = 'http://myhost/users/%s.html'; +# --> if /var/www/html/users/craig.html exists, then 'craig' will +# be rendered as a link to http://myhost/users/craig.html. +# +$Conf{CgiUserHomePageCheck} = ''; +$Conf{CgiUserUrlCreate} = 'mailto:%s'; + +# +# Date display format for CGI interface. A value of 1 uses US-style +# dates (MM/DD), a value of 2 uses full YYYY-MM-DD format, and zero +# for international dates (DD/MM). +# +$Conf{CgiDateFormatMMDD} = 2; + +# +# If set, the complete list of hosts appears in the left navigation +# bar pull-down for administrators. Otherwise, just the hosts for which +# the user is listed in the host file (as either the user or in moreUsers) +# are displayed. +# +$Conf{CgiNavBarAdminAllHosts} = '1'; + +# +# Enable/disable the search box in the navigation bar. +# +$Conf{CgiSearchBoxEnable} = '1'; + +# +# Additional navigation bar links. These appear for both regular users +# and administrators. This is a list of hashes giving the link (URL) +# and the text (name) for the link. Specifying lname instead of name +# uses the language specific string (ie: $Lang->{lname}) instead of +# just literally displaying name. +# +$Conf{CgiNavBarLinks} = [ + { + 'link' => '?action=view&type=docs', + 'lname' => 'Documentation', + 'name' => undef + }, + { + 'link' => 'http://backuppc.wiki.sourceforge.net', + 'lname' => undef, + 'name' => 'Wiki' + }, + { + 'link' => 'http://backuppc.sourceforge.net', + 'lname' => undef, + 'name' => 'SourceForge' + } +]; + +# +# Hilight colors based on status that are used in the PC summary page. +# +$Conf{CgiStatusHilightColor} = { + 'Reason_backup_failed' => '#ffcccc', + 'Reason_backup_done' => '#ccffcc', + 'Reason_backup_canceled_by_user' => '#ff9900', + 'Reason_no_ping' => '#ffff99', + 'Disabled_OnlyManualBackups' => '#d1d1d1', + 'Status_backup_in_progress' => '#66cc99', + 'Disabled_AllBackupsDisabled' => '#d1d1d1' +}; + +# +# Additional CGI header text. +# +$Conf{CgiHeaders} = ''; + +# +# Directory where images are stored. This directory should be below +# Apache's DocumentRoot. This value isn't used by BackupPC but is +# used by configure.pl when you upgrade BackupPC. +# +# Example: +# $Conf{CgiImageDir} = '/var/www/htdocs/BackupPC'; +# +$Conf{CgiImageDir} = '/usr/share/webapps/backuppc/3.2.1-r2/htdocs/image'; + +# +# Additional mappings of file name extenions to Content-Type for +# individual file restore. See $Ext2ContentType in BackupPC_Admin +# for the default setting. You can add additional settings here, +# or override any default settings. Example: +# +# $Conf{CgiExt2ContentType} = { +# 'pl' => 'text/plain', +# }; +# +$Conf{CgiExt2ContentType} = {}; + +# +# URL (without the leading http://host) for BackupPC's image directory. +# The CGI script uses this value to serve up image files. +# +# Example: +# $Conf{CgiImageDirURL} = '/BackupPC'; +# +$Conf{CgiImageDirURL} = '/image'; + +# +# CSS stylesheet "skin" for the CGI interface. It is stored +# in the $Conf{CgiImageDir} directory and accessed via the +# $Conf{CgiImageDirURL} URL. +# +# For BackupPC v3.x several color, layout and font changes were made. +# The previous v2.x version is available as BackupPC_stnd_orig.css, so +# if you prefer the old skin, change this to BackupPC_stnd_orig.css. +# +$Conf{CgiCSSFile} = 'BackupPC_stnd.css'; + +# +# Whether the user is allowed to edit their per-PC config. +# +$Conf{CgiUserConfigEditEnable} = '1'; + +# +# Which per-host config variables a non-admin user is allowed +# to edit. Admin users can edit all per-host config variables, +# even if disabled in this list. +# +# SECURITY WARNING: Do not let users edit any of the Cmd +# config variables! That's because a user could set a +# Cmd to a shell script of their choice and it will be +# run as the BackupPC user. That script could do all +# sorts of bad things. +# +$Conf{CgiUserConfigEdit} = { + FullPeriod => 1, + IncrPeriod => 1, + FullKeepCnt => 1, + FullKeepCntMin => 1, + FullAgeMax => 1, + IncrKeepCnt => 1, + IncrKeepCntMin => 1, + IncrAgeMax => 1, + IncrLevels => 1, + IncrFill => 1, + PartialAgeMax => 1, + RestoreInfoKeepCnt => 1, + ArchiveInfoKeepCnt => 1, + BackupFilesOnly => 1, + BackupFilesExclude => 1, + BackupsDisable => 1, + BlackoutBadPingLimit => 1, + BlackoutGoodCnt => 1, + BlackoutPeriods => 1, + BackupZeroFilesIsFatal => 1, + ClientCharset => 1, + ClientCharsetLegacy => 1, + XferMethod => 1, + XferLogLevel => 1, + SmbShareName => 1, + SmbShareUserName => 1, + SmbSharePasswd => 1, + SmbClientFullCmd => 0, + SmbClientIncrCmd => 0, + SmbClientRestoreCmd => 0, + TarShareName => 1, + TarFullArgs => 1, + TarIncrArgs => 1, + TarClientCmd => 0, + TarClientRestoreCmd => 0, + TarClientPath => 0, + RsyncShareName => 1, + RsyncdClientPort => 1, + RsyncdPasswd => 1, + RsyncdUserName => 1, + RsyncdAuthRequired => 1, + RsyncCsumCacheVerifyProb => 1, + RsyncArgs => 1, + RsyncArgsExtra => 1, + RsyncRestoreArgs => 1, + RsyncClientCmd => 0, + RsyncClientRestoreCmd => 0, + RsyncClientPath => 0, + FtpShareName => 1, + FtpUserName => 1, + FtpPasswd => 1, + FtpBlockSize => 1, + FtpPort => 1, + FtpTimeout => 1, + FtpFollowSymlinks => 1, + FtpRestoreEnabled => 1, + ArchiveDest => 1, + ArchiveComp => 1, + ArchivePar => 1, + ArchiveSplit => 1, + ArchiveClientCmd => 0, + FixedIPNetBiosNameCheck => 1, + NmbLookupCmd => 0, + NmbLookupFindHostCmd => 0, + PingMaxMsec => 1, + PingCmd => 0, + ClientTimeout => 1, + MaxOldPerPCLogFiles => 1, + CompressLevel => 1, + ClientNameAlias => 0, + DumpPreUserCmd => 0, + DumpPostUserCmd => 0, + RestorePreUserCmd => 0, + RestorePostUserCmd => 0, + ArchivePreUserCmd => 0, + ArchivePostUserCmd => 0, + DumpPostShareCmd => 0, + DumpPreShareCmd => 0, + UserCmdCheckStatus => 0, + EMailNotifyMinDays => 1, + EMailFromUserName => 1, + EMailAdminUserName => 1, + EMailUserDestDomain => 1, + EMailNoBackupEverSubj => 1, + EMailNoBackupEverMesg => 1, + EMailNotifyOldBackupDays => 1, + EMailNoBackupRecentSubj => 1, + EMailNoBackupRecentMesg => 1, + EMailNotifyOldOutlookDays => 1, + EMailOutlookBackupSubj => 1, + EMailOutlookBackupMesg => 1, + EMailHeaders => 1, +}; diff --git a/BackupPC/hosts b/BackupPC/hosts new file mode 100644 index 00000000..debf9d1a --- /dev/null +++ b/BackupPC/hosts @@ -0,0 +1,58 @@ +#============================================================= -*-perl-*- +# +# Host file list for BackupPC. +# +# DESCRIPTION +# +# This file lists all the hosts that should be backed up by +# BackupPC. +# +# Each line in the hosts file contains three fields, separated +# by white space: +# +# - The host name. If this host is a static IP address this +# must the machine's IP host name (ie: something that can +# be looked up using nslookup or DNS). If this is a DHCP +# host then the host name must be the netbios name of the +# machine. It is possible to have a host name that contains +# spaces, but that is discouraged. Escape a space with "\", eg: +# +# craigs\ pc +# +# - DHCP flag. Set to 0 if this is a static IP address host +# or if the machine can be found using nmblookup. Otherwise, +# if the client can only be found by looking through the DHCP +# pool then set this to 1. +# +# - User name (unix login/email name) of the user who "owns" +# or uses this machine. This is the user who will be sent +# email about this machine, and this user will have permission +# to stop/start/browse/restore backups for this host. This +# user name must match the name the user authenticates with +# via apache. +# +# - Optional additional user names (comma separated, no white space) of +# users who are also allowed to stop/start/browse/restore backups +# for this client via the CGI interface. These users are not sent +# email. These do not need to be valid email names; they simply +# need to match the name the user authenticates with via apache. +# +# AUTHOR +# Craig Barratt +# +# COPYRIGHT +# Copyright (C) 2001-2009 Craig Barratt +# +# See http://backuppc.sourceforge.net. +# +#======================================================================== + +# +# The first non-comment non-empty line gives the field names and should +# not be edited!! +# +host dhcp user moreUsers # <--- do not edit this line +#farside 0 craig jill,jeff # <--- example static IP host entry +#larson 1 bill # <--- example DHCP host entry +bruni 0 frank + diff --git a/BackupPC/httpd.conf b/BackupPC/httpd.conf new file mode 100644 index 00000000..6da4d91e --- /dev/null +++ b/BackupPC/httpd.conf @@ -0,0 +1,332 @@ +# This is a modification of the default Apache 2.2 configuration file +# for Gentoo Linux. +# +# Support: +# http://www.gentoo.org/main/en/lists.xml [mailing lists] +# http://forums.gentoo.org/ [web forums] +# irc://irc.freenode.net#gentoo-apache [irc chat] +# +# Bug Reports: +# http://bugs.gentoo.org [gentoo related bugs] +# http://httpd.apache.org/bug_report.html [apache httpd related bugs] +# +# +# This is the main Apache HTTP server configuration file. It contains the +# configuration directives that give the server its instructions. +# See for detailed information. +# In particular, see +# +# for a discussion of each configuration directive. +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# +# Configuration and logfile names: If the filenames you specify for many +# of the server's control files begin with "/" (or "drive:/" for Win32), the +# server will use that explicit path. If the filenames do *not* begin +# with "/", the value of ServerRoot is prepended -- so "var/log/apache2/foo_log" +# with ServerRoot set to "/usr" will be interpreted by the +# server as "/usr/var/log/apache2/foo.log". + +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# Do not add a slash at the end of the directory path. If you point +# ServerRoot at a non-local disk, be sure to point the LockFile directive +# at a local disk. If you wish to share the same ServerRoot for multiple +# httpd daemons, you will need to change at least LockFile and PidFile. +ServerRoot "/usr/lib/apache2" + +# Dynamic Shared Object (DSO) Support +# +# To be able to use the functionality of a module which was built as a DSO you +# have to place corresponding `LoadModule' lines at this location so the +# directives contained in it are actually available _before_ they are used. +# Statically compiled modules (those listed by `httpd -l') do not need +# to be loaded here. +# +# Example: +# LoadModule foo_module modules/mod_foo.so +# +# GENTOO: Automatically defined based on APACHE2_MODULES USE_EXPAND variable. +# Do not change manually, it will be overwritten on upgrade. +# +# The following modules are considered as the default configuration. +# If you wish to disable one of them, you may have to alter other +# configuration directives. +# +# Change these at your own risk! + +LoadModule actions_module modules/mod_actions.so +LoadModule alias_module modules/mod_alias.so +LoadModule auth_basic_module modules/mod_auth_basic.so + +LoadModule auth_digest_module modules/mod_auth_digest.so + +LoadModule authn_anon_module modules/mod_authn_anon.so +LoadModule authn_dbm_module modules/mod_authn_dbm.so +LoadModule authn_default_module modules/mod_authn_default.so +LoadModule authn_file_module modules/mod_authn_file.so +LoadModule authz_dbm_module modules/mod_authz_dbm.so +LoadModule authz_default_module modules/mod_authz_default.so +LoadModule authz_groupfile_module modules/mod_authz_groupfile.so +LoadModule authz_host_module modules/mod_authz_host.so +LoadModule authz_owner_module modules/mod_authz_owner.so +LoadModule authz_user_module modules/mod_authz_user.so +LoadModule autoindex_module modules/mod_autoindex.so + +LoadModule cache_module modules/mod_cache.so + +LoadModule cgid_module modules/mod_cgid.so +LoadModule deflate_module modules/mod_deflate.so +LoadModule dir_module modules/mod_dir.so + +LoadModule disk_cache_module modules/mod_disk_cache.so + +LoadModule env_module modules/mod_env.so +LoadModule expires_module modules/mod_expires.so +LoadModule ext_filter_module modules/mod_ext_filter.so + +LoadModule file_cache_module modules/mod_file_cache.so + +LoadModule filter_module modules/mod_filter.so +LoadModule headers_module modules/mod_headers.so +LoadModule include_module modules/mod_include.so + +LoadModule info_module modules/mod_info.so + +LoadModule log_config_module modules/mod_log_config.so +LoadModule logio_module modules/mod_logio.so + +LoadModule mem_cache_module modules/mod_mem_cache.so + +LoadModule mime_module modules/mod_mime.so +LoadModule mime_magic_module modules/mod_mime_magic.so +LoadModule negotiation_module modules/mod_negotiation.so + +LoadModule proxy_module modules/mod_proxy.so + + +LoadModule proxy_ajp_module modules/mod_proxy_ajp.so + + +LoadModule proxy_balancer_module modules/mod_proxy_balancer.so + + +LoadModule proxy_connect_module modules/mod_proxy_connect.so + + +LoadModule proxy_http_module modules/mod_proxy_http.so + +LoadModule rewrite_module modules/mod_rewrite.so +LoadModule setenvif_module modules/mod_setenvif.so +LoadModule speling_module modules/mod_speling.so + +LoadModule ssl_module modules/mod_ssl.so + + +LoadModule status_module modules/mod_status.so + + +LoadModule suexec_module modules/mod_suexec.so + +LoadModule unique_id_module modules/mod_unique_id.so + +LoadModule userdir_module modules/mod_userdir.so + +LoadModule usertrack_module modules/mod_usertrack.so +LoadModule vhost_alias_module modules/mod_vhost_alias.so + +# +# HostnameLookups: Log the names of clients or just their IP addresses +# e.g., www.apache.org (on) or 204.62.129.132 (off). +# The default is off because it'd be overall better for the net if people +# had to knowingly turn this feature on, since enabling it means that +# each client request will result in AT LEAST one lookup request to the +# nameserver. +# +HostnameLookups Off + +# If you wish httpd to run as a different user or group, you must run +# httpd as root initially and it will switch. +# +# User/Group: The name (or #number) of the user/group to run httpd as. +# It is usually good practice to create a dedicated user and group for +# running httpd, as with most system services. +User backuppc +Group backuppc + +# Supplemental configuration +# +# Most of the configuration files in the /etc/apache2/modules.d/ directory can +# be turned on using APACHE2_OPTS in /etc/conf.d/apache2 to add extra features +# or to modify the default configuration of the server. +# +# To know which flag to add to APACHE2_OPTS, look at the first line of the +# the file, which will usually be an where OPTION is the +# flag to use. + +Include /etc/apache2/modules.d/*.conf + +# Unique lock file +LockFile /var/lock/apache-backuppc.lock + +# Very important for init script +# Unique process ID file +PidFile /var/run/apache-backuppc.pid + +# Unique scoreboard file +ScoreBoardFile /var/run/apache-backuppc.scoreboard + +# Common document root + + + +# Common document root +DocumentRoot /usr/share/webapps/backuppc/3.2.1-r2/htdocs +# see bug #178966 why this is in here + +# Listen: Allows you to bind Apache to specific IP addresses and/or +# ports, instead of the default. See also the +# directive. +# +# Change this to Listen on specific IP addresses as shown below to +# prevent Apache from glomming onto all bound IP addresses. +# +#Listen 12.34.56.78:80 +Listen 80 + +# Use name-based virtual hosting. +NameVirtualHost *:80 + +# When virtual hosts are enabled, the main host defined in the default +# httpd.conf configuration will go away. We redefine it here so that it is +# still available. +# +# If you disable this vhost by removing -D DEFAULT_VHOST from +# /etc/conf.d/apache2, the first defined virtual host elsewhere will be +# the default. + + ServerName backuppc + + # Redirect requests to "/" to the CGI script + RedirectMatch "^/$" /BackupPC_Admin + + + + RewriteEngine On + RewriteCond %{HTTPS} !=on + RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] + + ## SSL Engine Switch: + # Enable/Disable SSL for this virtual host. + SSLEngine on + SSLOptions +StrictRequire + + ## SSL Cipher Suite: + # List the ciphers that the client is permitted to negotiate. + # See the mod_ssl documentation for a complete list. + SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL + + ## Server Certificate: + # Point SSLCertificateFile at a PEM encoded certificate. If the certificate + # is encrypted, then you will be prompted for a pass phrase. Note that a + # kill -HUP will prompt again. Keep in mind that if you have both an RSA + # and a DSA certificate you can configure both in parallel (to also allow + # the use of DSA ciphers, etc.) + SSLCertificateFile /etc/ssl/apache2/server.crt + + ## Server Private Key: + # If the key is not combined with the certificate, use this directive to + # point at the key file. Keep in mind that if you've both a RSA and a DSA + # private key you can configure both in parallel (to also allow the use of + # DSA ciphers, etc.) + SSLCertificateKeyFile /etc/ssl/apache2/server.key + + SSLOptions +StdEnvVars + + + ## ssl-accurate-shutdown: + # This forces an accurate shutdown when the connection is closed, i.e. a + # SSL close notify alert is send and mod_ssl waits for the close notify + # alert of the client. This is 100% SSL/TLS standard compliant, but in + # practice often causes hanging connections with brain-dead browsers. Use + # this only for browsers where you know that their SSL implementation works + # correctly. + # Notice: Most problems of broken clients are also related to the HTTP + # keep-alive facility, so you usually additionally want to disable + # keep-alive for those clients, too. Use variable "nokeepalive" for this. + # Similarly, one has to force some clients to use HTTP/1.0 to workaround + # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and + # "force-response-1.0" for this. + + BrowserMatch ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + + + ## Per-Server Logging: + # The home of a custom SSL log file. Use this when you want a compact + # non-error SSL logfile on a virtual host basis. + + CustomLog /var/log/apache2/ssl_request_log \ + "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + + + + + + # Possible values for the Options directive are "None", "All", + # or any combination of: + # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews + # + # Note that "MultiViews" must be named *explicitly* --- "Options All" + # doesn't give it to you. + # + # The Options directive is both complicated and important. Please see + # http://httpd.apache.org/docs/2.2/mod/core.html#options + # for more information. + Options Indexes FollowSymLinks + + # AllowOverride controls what directives may be placed in .htaccess files. + # It can be "All", "None", or any combination of the keywords: + # Options FileInfo AuthConfig Limit + AllowOverride None + + + + SSLOptions +StdEnvVars + + + + SetHandler perl-script + PerlResponseHandler ModPerl::Registry + PerlOptions +ParseHeaders + Options +ExecCGI + + Order allow,deny + Allow from all + + AuthName "Backup Admin" + AuthType Basic + AuthUserFile /etc/BackupPC/users.htpasswd + Require valid-user + + + + SetHandler None + Options Indexes FollowSymLinks + Order allow,deny + Allow from all + + + + + ServerEnvironment backuppc backuppc + + + + + +# vim: ts=4 filetype=apache diff --git a/BackupPC/pc/.keep_app-backup_backuppc-0 b/BackupPC/pc/.keep_app-backup_backuppc-0 new file mode 100644 index 00000000..e69de29b diff --git a/BackupPC/users.htpasswd b/BackupPC/users.htpasswd new file mode 100644 index 00000000..de884150 --- /dev/null +++ b/BackupPC/users.htpasswd @@ -0,0 +1,2 @@ +backuppc:$apr1$zun.scJm$CkLiWjgB5ADoqngLXUHNc0 +frank:$apr1$YrlK9e.0$CF7ATg/OtG30s9snYf9O2. diff --git a/apache2/modules.d/75_mod_perl.conf b/apache2/modules.d/75_mod_perl.conf new file mode 100644 index 00000000..596d2cc7 --- /dev/null +++ b/apache2/modules.d/75_mod_perl.conf @@ -0,0 +1,50 @@ + +LoadModule perl_module modules/mod_perl.so + +#PerlTrace all +PerlRequire "/etc/apache2/modules.d/apache2-mod_perl-startup.pl" +PerlModule ModPerl::Registry + +# Provide two aliases to the same cgi-bin directory, to see the effects of the +# 2 different mod_perl modes for Apache2::Registry Mode +Alias /perl/ /var/www/localhost/perl/ +# for Apache2::Perlrun Mode +Alias /cgi-perl/ /var/www/localhost/perl/ + + + SetHandler perl-script + PerlResponseHandler Apache2::Status + Order deny,allow + Deny from all + Allow from 127.0.0.1 + + + + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + Options -Indexes ExecCGI + PerlOptions +ParseHeaders + + +# set Apache::Registry Mode for /perl Alias + + SetHandler perl-script + PerlResponseHandler ModPerl::Registry + Options -Indexes ExecCGI + PerlSendHeader On + Order allow,deny + Allow from all + + +# set Apache::PerlRun Mode for /cgi-perl Alias + + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + Options -Indexes ExecCGI + PerlSendHeader On + Order allow,deny + Allow from all + + + +# vim: ts=4 filetype=apache diff --git a/apache2/modules.d/apache2-mod_perl-startup.pl b/apache2/modules.d/apache2-mod_perl-startup.pl new file mode 100644 index 00000000..afc048ac --- /dev/null +++ b/apache2/modules.d/apache2-mod_perl-startup.pl @@ -0,0 +1,24 @@ +use lib qw(/home/httpd/perl); + +# enable if the mod_perl 1.0 compatibility is needed +#use Apache2::compat (); + +use ModPerl::Util (); #for CORE::GLOBAL::exit + +use Apache2::RequestRec (); +use Apache2::RequestIO (); +use Apache2::RequestUtil (); + +use Apache2::ServerRec (); +use Apache2::ServerUtil (); +use Apache2::Connection (); +use Apache2::Log (); + +use APR::Table (); + +use ModPerl::Registry (); + +use Apache2::Const -compile => ':common'; +use APR::Const -compile => ':common'; + +1; diff --git a/conf.d/apache2-backuppc b/conf.d/apache2-backuppc new file mode 100644 index 00000000..1c27c69b --- /dev/null +++ b/conf.d/apache2-backuppc @@ -0,0 +1,73 @@ +# /etc/conf.d/apache2: config file for /etc/init.d/apache2 + +# When you install a module it is easy to activate or deactivate the modules +# and other features of apache using the APACHE2_OPTS line. Every module should +# install a configuration in /etc/apache2/modules.d. In that file will have an +# directive where NNN is the option to enable that module. +# +# Here are the options available in the default configuration: +# +# AUTH_DIGEST Enables mod_auth_digest +# AUTHNZ_LDAP Enables authentication through mod_ldap (available if USE=ldap) +# CACHE Enables mod_cache +# DAV Enables mod_dav +# ERRORDOCS Enables default error documents for many languages. +# INFO Enables mod_info, a useful module for debugging +# LANGUAGE Enables content-negotiation based on language and charset. +# LDAP Enables mod_ldap (available if USE=ldap) +# MANUAL Enables /manual/ to be the apache manual (available if USE=docs) +# MEM_CACHE Enables default configuration mod_mem_cache +# PROXY Enables mod_proxy +# SSL Enables SSL (available if USE=ssl) +# SUEXEC Enables running CGI scripts (in USERDIR) through suexec. +# USERDIR Enables /~username mapping to /home/username/public_html +# +# +# The following two options provide the default virtual host for the HTTP and +# HTTPS protocol. YOU NEED TO ENABLE AT LEAST ONE OF THEM, otherwise apache +# will not listen for incomming connections on the approriate port. +# +# DEFAULT_VHOST Enables name-based virtual hosts, with the default +# virtual host being in /var/www/localhost/htdocs +# SSL_DEFAULT_VHOST Enables default vhost for SSL (you should enable this +# when you enable SSL) +# +APACHE2_OPTS="-D LANGUAGE -D PERL -D BACKUPPC_VHOST" + +# Extended options for advanced uses of Apache ONLY +# You don't need to edit these unless you are doing crazy Apache stuff +# As not having them set correctly, or feeding in an incorrect configuration +# via them will result in Apache failing to start +# YOU HAVE BEEN WARNED. + +# PID file +PIDFILE=/var/run/apache-backuppc.pid + +# timeout for startup/shutdown checks +#TIMEOUT=10 + +# ServerRoot setting +SERVERROOT=/usr/lib/apache2 + +# Configuration file location +# - If this does NOT start with a '/', then it is treated relative to +# $SERVERROOT by Apache +CONFIGFILE=/etc/BackupPC/httpd.conf + +# Location to log startup errors to +# They are normally dumped to your terminal. +#STARTUPERRORLOG="/var/log/apache2/startuperror.log" + +# A command that outputs a formatted text version of the HTML at the URL +# of the command line. Designed for lynx, however other programs may work. +#LYNX="lynx -dump" + +# The URL to your server's mod_status status page. +# Required for status and fullstatus +#STATUSURL="http://localhost/server-status" + +# Method to use when reloading the server +# Valid options are 'restart' and 'graceful' +# See http://httpd.apache.org/docs/2.2/stopping.html for information on +# what they do and how they differ. +#RELOAD_TYPE="graceful" diff --git a/conf.d/backuppc b/conf.d/backuppc new file mode 100644 index 00000000..35e2bf38 --- /dev/null +++ b/conf.d/backuppc @@ -0,0 +1,6 @@ +CONF_FILE=/etc/BackupPC/config.pl +USER=backuppc +PID_FILE=/var/log/BackupPC/BackupPC.pid +EXEC=/usr/bin/BackupPC +EXEC_OPTIONS=-d +NICELEVEL=0 diff --git a/fstab b/fstab index c7d7d5d8..0dda87dd 100644 --- a/fstab +++ b/fstab @@ -24,6 +24,8 @@ /dev/vg1/distfiles /usr/portage/distfiles ext4 noatime 1 2 /dev/vg1/images /var/lib/images ext4 noatime 1 2 +UUID=47afb6ae-d9bc-4129-a382-c9cd06a4bee2 /data/my_passport ext4 noauto,noatime,acl,user_xattr 0 0 + # glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for # POSIX shared memory (shm_open, shm_unlink). # (tmpfs is a dynamically expandable/shrinkable ramdisk, and will diff --git a/group b/group index 66bf1e63..c0e60e9a 100644 --- a/group +++ b/group @@ -65,3 +65,4 @@ realtime:x:990: vboxusers:x:989:frank dropbox:x:988: polkitd:x:987: +backuppc:x:986: diff --git a/group- b/group- index cda87577..66bf1e63 100644 --- a/group- +++ b/group- @@ -64,3 +64,4 @@ postgres:x:70: realtime:x:990: vboxusers:x:989:frank dropbox:x:988: +polkitd:x:987: diff --git a/gshadow b/gshadow index 031a9bde..75b34b2d 100644 --- a/gshadow +++ b/gshadow @@ -63,3 +63,4 @@ realtime:!:: vboxusers:!:: dropbox:!:: polkitd:!:: +backuppc:!:: diff --git a/gshadow- b/gshadow- index 8f99cfd5..031a9bde 100644 --- a/gshadow- +++ b/gshadow- @@ -62,3 +62,4 @@ postgres:!:: realtime:!:: vboxusers:!:: dropbox:!:: +polkitd:!:: diff --git a/init.d/apache2-backuppc b/init.d/apache2-backuppc new file mode 100755 index 00000000..c3ce4e77 --- /dev/null +++ b/init.d/apache2-backuppc @@ -0,0 +1,182 @@ +#!/sbin/runscript +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_commands="configtest modules virtualhosts" +extra_started_commands="configdump fullstatus graceful gracefulstop reload" + +description_configdump="Dumps the configuration of the runing apache server. Requires server-info to be enabled and www-client/lynx." +description_configtest="Run syntax tests for configuration files." +description_fullstatus="Gives the full status of the server. Requires lynx and server-status to be enabled." +description_graceful="A graceful restart advises the children to exit after the current request and reloads the configuration." +description_gracefulstop="A graceful stop advises the children to exit after the current request and stops the server." +description_modules="Dump a list of loaded Static and Shared Modules." +description_reload="Kills all children and reloads the configuration." +description_virtualhosts="Show the settings as parsed from the config file (currently only shows the virtualhost settings)." +description_stop="Kills all children and stops the server." + +depend() { + need net + use mysql dns logger netmount postgresql + after sshd +} + +configtest() { + ebegin "Checking ${SVCNAME} configuration" + checkconfig + eend $? +} + +checkconfd() { + if [ ! -f /etc/init.d/sysfs ]; then + eerror "This init script works only with openrc (baselayout-2)." + eerror "If you still need baselayout-1.x, please, use" + eerror "apache2.initd-baselayout-1 from /usr/share/doc/apache2-*/" + fi + + PIDFILE="${PIDFILE:-/var/run/apache2.pid}" + TIMEOUT=${TIMEOUT:-15} + + SERVERROOT="${SERVERROOT:-/usr/lib64/apache2}" + if [ ! -d ${SERVERROOT} ]; then + eerror "SERVERROOT does not exist: ${SERVERROOT}" + return 1 + fi + + CONFIGFILE="${CONFIGFILE:-/etc/apache2/httpd.conf}" + [ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}" + if [ ! -r "${CONFIGFILE}" ]; then + eerror "Unable to read configuration file: ${CONFIGFILE}" + return 1 + fi + + APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}" + APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}" + [ -n "${STARTUPERRORLOG}" ] && APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}" + + APACHE2="/usr/sbin/apache2" +} + +checkconfig() { + checkconfd || return 1 + + ${APACHE2} ${APACHE2_OPTS} -t 1>/dev/null 2>&1 + ret=$? + if [ $ret -ne 0 ]; then + eerror "${SVCNAME} has detected an error in your setup:" + ${APACHE2} ${APACHE2_OPTS} -t + fi + + return $ret +} + +start() { + checkconfig || return 1 + + ebegin "Starting ${SVCNAME}" + # Use start stop daemon to apply system limits #347301 + start-stop-daemon --start -- ${APACHE2} ${APACHE2_OPTS} -k start + + i=0 + while [ ! -e "${PIDFILE}" ] && [ $i -lt ${TIMEOUT} ]; do + sleep 1 && i=$(expr $i + 1) + done + + eend $(test $i -lt ${TIMEOUT}) +} + +stop() { + if [ "${RC_CMD}" = "restart" ]; then + checkconfig || return 1 + else + checkconfd || return 1 + fi + + PID=$(cat "${PIDFILE}" 2>/dev/null) + if [ -z "${PID}" ]; then + einfo "${SVCNAME} not running (no pid file)" + return 0 + fi + + ebegin "Stopping ${SVCNAME}" + ${APACHE2} ${APACHE2_OPTS} -k stop + + i=0 + while ( test -f "${PIDFILE}" && pgrep -P ${PID} apache2 >/dev/null ) \ + && [ $i -lt ${TIMEOUT} ]; do + sleep 1 && i=$(expr $i + 1) + done + + eend $(test $i -lt ${TIMEOUT}) +} + +reload() { + RELOAD_TYPE="${RELOAD_TYPE:-graceful}" + + checkconfig || return 1 + + if [ "${RELOAD_TYPE}" = "restart" ]; then + ebegin "Restarting ${SVCNAME}" + ${APACHE2} ${APACHE2_OPTS} -k restart + eend $? + elif [ "${RELOAD_TYPE}" = "graceful" ]; then + ebegin "Gracefully restarting ${SVCNAME}" + ${APACHE2} ${APACHE2_OPTS} -k graceful + eend $? + else + eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/${SVCNAME}" + fi +} + +graceful() { + checkconfig || return 1 + ebegin "Gracefully restarting ${SVCNAME}" + ${APACHE2} ${APACHE2_OPTS} -k graceful + eend $? +} + +gracefulstop() { + checkconfig || return 1 + ebegin "Gracefully stopping ${SVCNAME}" + ${APACHE2} ${APACHE2_OPTS} -k graceful-stop + eend $? +} + +modules() { + checkconfig || return 1 + ${APACHE2} ${APACHE2_OPTS} -M 2>&1 +} + +fullstatus() { + LYNX="${LYNX:-lynx -dump}" + STATUSURL="${STATUSURL:-http://localhost/server-status}" + + if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then + eerror "lynx not found! you need to emerge www-client/lynx" + else + ${LYNX} ${STATUSURL} + fi +} + +virtualhosts() { + checkconfig || return 1 + ${APACHE2} ${APACHE2_OPTS} -S +} + +configdump() { + LYNX="${LYNX:-lynx -dump}" + INFOURL="${INFOURL:-http://localhost/server-info}" + + checkconfd || return 1 + + if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then + eerror "lynx not found! you need to emerge www-client/lynx" + else + echo "${APACHE2} started with '${APACHE2_OPTS}'" + for i in config server list; do + ${LYNX} "${INFOURL}/?${i}" | sed '/Apache Server Information/d;/^[[:space:]]\+[_]\+$/Q' + done + fi +} + +# vim: ts=4 filetype=gentoo-init-d diff --git a/init.d/backuppc b/init.d/backuppc new file mode 100755 index 00000000..18ea9e03 --- /dev/null +++ b/init.d/backuppc @@ -0,0 +1,46 @@ +#!/sbin/runscript +# +# DESCRIPTION +# +# Startup init script for BackupPC on Gentoo` linux. +# +# Distributed with BackupPC version 3.2.1, released 24 Apr 2011. +# +# description: Starts and stops the BackupPC server +# Copy to /etc/init.d and run 'rc-update add backuppc default' + +# get our configuration options +source /etc/conf.d/backuppc + +checkconfig() { + if [ ! -f ${CONF_FILE} ] ; then + eerror "No ${CONF_FILE} exists!" + fi +} + +start() { + checkconfig || return 1 + ebegin "Starting BackupPC" + start-stop-daemon --start --user ${USER} --nicelevel ${NICELEVEL} --pidfile ${PID_FILE} --exec ${EXEC} -- ${EXEC_OPTIONS} + eend $? +} + +stop() { + ebegin "Stopping BackupPC" + start-stop-daemon --stop --pidfile ${PID_FILE} --name BackupPC + eend $? +} + +restart() { + ebegin "Restarting BackupPC" + svc_stop + sleep 1 + svc_start + eend $? "Failed to restart BackupPC" +} + +status() { + return + eend $? +} + diff --git a/passwd b/passwd index 13bc9d25..dea4f5aa 100644 --- a/passwd +++ b/passwd @@ -51,3 +51,4 @@ hsqldb:x:114:991:added by portage for hsqldb:/dev/null:/bin/sh postgres:x:70:70:added by portage for postgresql-server:/var/lib/postgresql:/bin/bash memcached:x:115:2:added by portage for memcached:/dev/null:/sbin/nologin polkitd:x:116:987:added by portage for polkit:/var/lib/polkit-1:/sbin/nologin +backuppc:x:117:986:added by portage for backuppc:/var/lib/backuppc:/bin/bash diff --git a/passwd- b/passwd- index d458e932..13bc9d25 100644 --- a/passwd- +++ b/passwd- @@ -50,3 +50,4 @@ postfix:x:207:207:added by portage for postfix:/var/spool/postfix:/sbin/nologin hsqldb:x:114:991:added by portage for hsqldb:/dev/null:/bin/sh postgres:x:70:70:added by portage for postgresql-server:/var/lib/postgresql:/bin/bash memcached:x:115:2:added by portage for memcached:/dev/null:/sbin/nologin +polkitd:x:116:987:added by portage for polkit:/var/lib/polkit-1:/sbin/nologin diff --git a/php/apache2-php5.3/ext-active/uuid.ini b/php/apache2-php5.3/ext-active/uuid.ini new file mode 120000 index 00000000..f851904b --- /dev/null +++ b/php/apache2-php5.3/ext-active/uuid.ini @@ -0,0 +1 @@ +/etc/php/apache2-php5.3/ext/uuid.ini \ No newline at end of file diff --git a/php/apache2-php5.3/ext/uuid.ini b/php/apache2-php5.3/ext/uuid.ini new file mode 100644 index 00000000..3d84187a --- /dev/null +++ b/php/apache2-php5.3/ext/uuid.ini @@ -0,0 +1 @@ +extension=uuid.so diff --git a/php/cgi-php5.3/ext-active/uuid.ini b/php/cgi-php5.3/ext-active/uuid.ini new file mode 120000 index 00000000..4c2ce794 --- /dev/null +++ b/php/cgi-php5.3/ext-active/uuid.ini @@ -0,0 +1 @@ +/etc/php/cgi-php5.3/ext/uuid.ini \ No newline at end of file diff --git a/php/cgi-php5.3/ext/uuid.ini b/php/cgi-php5.3/ext/uuid.ini new file mode 100644 index 00000000..3d84187a --- /dev/null +++ b/php/cgi-php5.3/ext/uuid.ini @@ -0,0 +1 @@ +extension=uuid.so diff --git a/php/cli-php5.3/ext-active/uuid.ini b/php/cli-php5.3/ext-active/uuid.ini new file mode 120000 index 00000000..0c39d675 --- /dev/null +++ b/php/cli-php5.3/ext-active/uuid.ini @@ -0,0 +1 @@ +/etc/php/cli-php5.3/ext/uuid.ini \ No newline at end of file diff --git a/php/cli-php5.3/ext/uuid.ini b/php/cli-php5.3/ext/uuid.ini new file mode 100644 index 00000000..3d84187a --- /dev/null +++ b/php/cli-php5.3/ext/uuid.ini @@ -0,0 +1 @@ +extension=uuid.so diff --git a/php/embed-php5.3/ext-active/uuid.ini b/php/embed-php5.3/ext-active/uuid.ini new file mode 120000 index 00000000..ae123acd --- /dev/null +++ b/php/embed-php5.3/ext-active/uuid.ini @@ -0,0 +1 @@ +/etc/php/embed-php5.3/ext/uuid.ini \ No newline at end of file diff --git a/php/embed-php5.3/ext/uuid.ini b/php/embed-php5.3/ext/uuid.ini new file mode 100644 index 00000000..3d84187a --- /dev/null +++ b/php/embed-php5.3/ext/uuid.ini @@ -0,0 +1 @@ +extension=uuid.so diff --git a/php/fpm-php5.3/ext-active/uuid.ini b/php/fpm-php5.3/ext-active/uuid.ini new file mode 120000 index 00000000..f081ab14 --- /dev/null +++ b/php/fpm-php5.3/ext-active/uuid.ini @@ -0,0 +1 @@ +/etc/php/fpm-php5.3/ext/uuid.ini \ No newline at end of file diff --git a/php/fpm-php5.3/ext/uuid.ini b/php/fpm-php5.3/ext/uuid.ini new file mode 100644 index 00000000..3d84187a --- /dev/null +++ b/php/fpm-php5.3/ext/uuid.ini @@ -0,0 +1 @@ +extension=uuid.so diff --git a/portage/package.use b/portage/package.use index e02aa6fb..317e25c8 100644 --- a/portage/package.use +++ b/portage/package.use @@ -54,7 +54,7 @@ dev-java/log4j javamail dev-java/sun-jdk -doc jce dev-lang/perl ithreads perlsuid -dev-lang/php bcmath cgi embed filter force-cgi-redirect enchant fpm gd hash intl json -ldap-sasl mysqlnd -oci8 -recode reflection sharedext suhosin -threads tokenizer xmlreader xmlwriter -xpm zip +dev-lang/php bcmath cgi embed filter force-cgi-redirect enchant fpm gd hash intl json -ldap-sasl mysqlnd -oci8 pdo -recode reflection sharedext suhosin -threads tokenizer xmlreader xmlwriter -xpm zip dev-lang/python berkdb tk dev-libs/boost tools @@ -277,6 +277,7 @@ sys-process/daemontools-scripts withsamplescripts virtual/ffmpeg vaapi www-apps/bugzilla extras +www-apps/egroupware gallery www-apps/syscp aps autoresponder billing bind domainkey fcgid mailquota www-client/elinks finger gopher -ruby diff --git a/shadow b/shadow index 3edfa87e..93025fe6 100644 --- a/shadow +++ b/shadow @@ -50,3 +50,4 @@ hsqldb:!:15356:::::: postgres:!:15371:::::: memcached:!:15566:::::: polkitd:!:15634:::::: +backuppc:!:15706:::::: diff --git a/shadow- b/shadow- index 13b3d805..3edfa87e 100644 --- a/shadow- +++ b/shadow- @@ -49,3 +49,4 @@ postfix:!:15356:::::: hsqldb:!:15356:::::: postgres:!:15371:::::: memcached:!:15566:::::: +polkitd:!:15634:::::: diff --git a/sudoers b/sudoers index 35c422c1..15ae4fb6 100644 --- a/sudoers +++ b/sudoers @@ -82,6 +82,8 @@ root ALL=(ALL) ALL frank ALL=(ALL) NOPASSWD: ALL +backuppc ALL = NOPASSWD: /bin/tar + ## Uncomment to allow any user to run sudo if they know the password ## of the user they are running the command as (root by default). # Defaults targetpw # Ask for the password of the target user