diff --git a/Metadata/groups.xml b/Metadata/groups.xml
index cd10e2d..93c5c33 100644
--- a/Metadata/groups.xml
+++ b/Metadata/groups.xml
@@ -35,23 +35,23 @@
-
+
-
+
-
-
-
+
+
+
-
+
@@ -395,7 +395,7 @@
-
+
@@ -407,7 +407,7 @@
-
+
@@ -553,6 +553,11 @@
+
+
+
+
+
diff --git a/Python/etc/backuppc/config.pl b/Python/etc/backuppc/config.pl
index 5fa6614..bb9602c 100644
--- a/Python/etc/backuppc/config.pl
+++ b/Python/etc/backuppc/config.pl
@@ -149,6 +149,12 @@ info["perms"] = 0600
@$Conf{MaxPendingCmds} = 10;
@
@#
+@# 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},
@@ -298,9 +304,17 @@ info["perms"] = 0600
@# 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{ConfDir} = '/etc/backuppc';
-@$Conf{LogDir} = '';
+@$Conf{LogDir} = '/var/lib/backuppc/log';
@$Conf{InstallDir} = '/usr/share/backuppc';
@$Conf{CgiDir} = '/usr/share/backuppc/cgi-bin';
@
@@ -713,6 +727,12 @@ info["perms"] = 0600
@# 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.
@#
@@ -902,6 +922,10 @@ info["perms"] = 0600
@#
@$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.
@@ -1001,6 +1025,10 @@ info["perms"] = 0600
@ . ' $I_option -U $userName -E -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
@@ -1144,6 +1172,10 @@ info["perms"] = 0600
@#
@$Conf{TarClientPath} = '/bin/tar';
@
+@###########################################################################
+@# Rsync/Rsyncd Configuration
+@# (can be overwritten in the per-PC log file)
+@###########################################################################
@#
@# Path to rsync executable on the client
@#
@@ -1262,16 +1294,6 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@# Arguments to rsync for backup. Do not edit the first set unless you
@# have a thorough understanding of how File::RsyncP works.
@#
-@# Examples of additional arguments that should work are --exclude/--include,
-@# eg:
-@#
-@# $Conf{RsyncArgs} = [
-@# # original arguments here
-@# '-v',
-@# '--exclude', '/proc',
-@# '--exclude', '*.tmp',
-@# ];
-@#
@$Conf{RsyncArgs} = [
@ #
@ # Do not edit these!
@@ -1295,13 +1317,39 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@ # to enable checksum caching.
@ #
@ '--checksum-seed=32761',
-@
-@ #
-@ # Add additional arguments here
-@ #
-@ '--one-file-system',
@];
@
+@# 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} = ['--one-file-system',];
+@
@#
@# Arguments to rsync for restore. Do not edit the first set unless you
@# have a thorough understanding of how File::RsyncP works.
@@ -1310,6 +1358,18 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@# 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} = [
@ #
@ # Do not edit these!
@@ -1342,68 +1402,102 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@ '--one-file-system',
@];
@
+@###########################################################################
+@# FTP Configuration
+@# (can be overwritten in the per-PC log file)
+@##########################################################################
@#
-@# Share name to backup. For $Conf{XferMethod} = "backuppcd" this should
-@# be a file system path, eg '/' or '/home'.
+@# 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 can also be a list of multiple file system paths or modules.
-@# (Can it??)
+@# 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.
@#
-@# $Conf{BackupPCdShareName} = ['/', '/var', '/data', '/boot'];
+@# 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{BackupPCdShareName} = '/';
+@# $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} = '';
@
@#
-@# Path to backuppcd executable on the server
+@# FTP user password. This is used to log into the server.
@#
-@$Conf{BackupPCdPath} = '';
+@# This setting is used only if $Conf{XferMethod} = 'ftp'.
+@#
+@$Conf{FtpPasswd} = '';
@
@#
-@# Full command to run backuppcd on the server to backup a given
-@# client machine. The following variables are substituted at
-@# run-time (TODO: update this list)
+@# 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.
@#
-@# $host host name being backed up
-@# $hostIP host's IP address
-@# $shareName share name to backup (ie: top-level directory path)
-@# $backuppcdPath same as $Conf{BackupPCdPath}
-@# $sshPath same as $Conf{SshPath}
+@# This setting is used only if $Conf{XferMethod} = 'ftp'.
@#
-@# This setting only matters if $Conf{XferMethod} = 'backuppcd'.
-@#
-@# Arguments to backupcpd are:
-@#
-@# - the host name to backup
-@# - the share name to backup
-@# - the directory where the pool is
-@# - the directory where the last run was (NOT DONE YET)
-@# - a boolean value indicating whether or not the pool is
-@# compressed or not
-@# - the directory where the new run should occur (currently it assumes ".")
-@#
-@$Conf{BackupPCdCmd} = '$bpcdPath $host $shareName $poolDir XXXX $poolCompress $topDir/pc/$client/new';
+@$Conf{FtpPassive} = 1;
@
@#
-@# Full command to run backuppcd on the server for restore to a
-@# client machine. The following variables are substituted at
-@# run-time (TODO: update this list)
+@# Transfer block size. This sets the size of the amounts of data in
+@# each frame. While undefined, this value takes the default value.
@#
-@# $host host name being backed up
-@# $hostIP host's IP address
-@# $shareName share name to backup (ie: top-level directory path)
-@# $backuppcdPath same as $Conf{BackupPCdPath}
-@# $sshPath same as $Conf{SshPath}
+@# This setting is used only if $Conf{XferMethod} = 'ftp'.
@#
-@# This setting only matters if $Conf{XferMethod} = 'backuppcd'.
-@#
-@# 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{BackupPCdRestoreCmd} = '$bpcdPath TODO';
+@$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
@@ -1818,7 +1912,7 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@#
@# With this setting user email will be set to 'user@mydomain.com'.
@#
-@$Conf{EMailUserDestDomain} = '@crans.org';
+@$Conf{EMailUserDestDomain} = 'backuppc@crans.org';
@
@#
@# This subject and message is sent to a user if their PC has never been
@@ -1898,13 +1992,12 @@ print "$Conf{RsyncdPasswd} = '%s';" % secrets.backuppc_RsyncdPasswd
@$Conf{EMailOutlookBackupMesg} = undef;
@
@#
-@# Additional email headers. If you change the charset
-@# to utf8 then BackupPC_sendEmail will use utf8 for
-@# the email body.
+@# Additional email headers. This sets to charset to
+@# utf8.
@#
@$Conf{EMailHeaders} = < 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,