Merge branch 'master' of git.rot13.org:/git/BackupPC
[BackupPC.git] / doc-src / BackupPC.pod
index 0de8a1e..c11216e 100644 (file)
@@ -6,8 +6,8 @@ released on __RELEASEDATE__.
 =head2 Overview
 
 BackupPC is a high-performance, enterprise-grade system for backing up
-Unix, Linux and WinXX PCs, desktops and laptops to a server's disk.
-BackupPC is highly configurable and easy to install and maintain.
+Unix, Linux, WinXX, and MacOSX PCs, desktops and laptops to a server's
+disk.  BackupPC is highly configurable and easy to install and maintain.
 
 Given the ever decreasing cost of disks and raid systems, it is now
 practical and cost effective to backup a large number of machines onto
@@ -34,24 +34,25 @@ new files (those not already in the pool) need to be compressed.
 
 =item *
 
-A powerful http/cgi user interface allows administrators to view log
-files, configuration, current status and allows users to initiate and
-cancel backups and browse and restore files from backups.
+A powerful http/cgi user interface allows administrators to view
+the current status, edit configuration, add/delete hosts, view log
+files, and allows users to initiate and cancel backups and browse
+and restore files from backups.
 
 =item *
 
 The http/cgi user interface has internationalization (i18n) support,
-currently providing English, French, German, Spanish, Italian
-and Dutch.
+currently providing English, French, German, Spanish, Italian,
+Dutch, Polish, Portuguese-Brazilian and Chinese
 
 =item *
 
 No client-side software is needed. On WinXX the standard smb
-protocol is used to extract backup data. On linux or unix clients,
-rsync or tar (over ssh/rsh/nfs) is used to extract backup data.
-Alternatively, rsync can also be used on WinXX (using cygwin),
-and Samba could be installed on the linux or unix client to
-provide smb shares).
+protocol is used to extract backup data. On linux, unix or MacOSX
+clients, rsync, tar (over ssh/rsh/nfs) or ftp is used to extract
+backup data. Alternatively, rsync can also be used on WinXX (using
+cygwin), and Samba could be installed on the linux or unix client
+to provide smb shares).
 
 =item *
 
@@ -107,25 +108,39 @@ number of older fulls that are 2, 4, 8, or 16 weeks apart).
 
 =item Incremental Backup
 
-An incremental backup is a backup of files that have changed (based on
-their modification time) since the last successful full backup.  For
-SMB and tar, BackupPC backups all files that have changed since one
-hour prior to the start of the last successful full backup.  Rsync is
-more clever: any files whose attributes have changed (ie: uid, gid,
-mtime, modes, size) since the last full are backed up.  Deleted, new
-files and renamed files are detected by Rsync incrementals.
-In constrast, SMB and tar incrementals are not able to detect deleted
-files, renamed files or new files whose modification time is prior to
-the last full dump.
+An incremental backup is a backup of files that have changed
+since the last successful full or incremental backup.  Starting
+in BackupPC 3.0 multi-level incrementals are supported.
+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.  $Conf{IncrLevels} is used to specify the
+level of each successive incremental.  The default value is
+all level 1, which makes the behavior the same as earlier
+versions of BackupPC: each incremental will back up all the
+files that changed since the last full (level 0).
+
+For SMB and tar, BackupPC uses the modification time (mtime) to
+determine which files have changed since the last lower-level
+backup.  That means SMB and tar incrementals are not able to detect
+deleted files, renamed files or new files whose modification time
+is prior to the last lower-level backup.
+
+Rsync is more clever: any files whose attributes have changed (ie: uid,
+gid, mtime, modes, size) since the last full are backed up.  Deleted,
+new files and renamed files are detected by Rsync incrementals.
 
 BackupPC can also be configured to keep a certain number of incremental
 backups, and to keep a smaller number of very old incremental backups.
-(BackupPC does not support multi-level incremental backups, although it
-will in a future version.)
+If multi-level incrementals are specified then it is likely that
+more incrementals will need to be kept since lower-level incrementals
+(and the full backup) are needed to reconstruct a higher-level
+incremental.
 
-BackupPC's CGI interface "fills-in" incremental backups based on the 
-last full backup, giving every backup a "full" appearance.  This makes
-browsing and restoring backups easier.
+BackupPC "fills-in" incremental backups when browsing or restoring,
+based on the levels of each backup, giving every backup a "full"
+appearance.  This makes browsing and restoring backups much easier:
+you can restore from any one backup independent of whether it was
+an incremental or full.
 
 =item Partial Backup
 
@@ -209,11 +224,16 @@ The SourceForge project page is at:
 
 This page has links to the current releases of BackupPC.
 
-=item BackupPC FAQ
+=item BackupPC Wiki
 
-BackupPC has a FAQ at L<http://backuppc.sourceforge.net/faq>.
+BackupPC has a Wiki at L<http://backuppc.wiki.sourceforge.net>.
+Everyone is encouraged to contribute to the Wiki.  Anyone with
+a SourceForge account can edit the Wiki.
 
-=item Mail lists
+The old FAQ is at L<http://backuppc.sourceforge.net/faq>, but
+is deprecated in favor of the Wiki.
+
+=item Mailing lists
 
 Three BackupPC mailing lists exist for announcements (backuppc-announce),
 developers (backuppc-devel), and a general user list for support, asking
@@ -224,7 +244,7 @@ are not always up to date and the searching is limited, so Gmane is
 a good alternative.  See:
 
     http://news.gmane.org/index.php?prefix=gmane.comp.sysutils.backup.backuppc
-    http://sourceforge.net/mailarchive/forum.php?forum_id=503
+    http://sourceforge.net/mailarchive/forum.php?forum=backuppc-users
 
 You can subscribe to these lists by visiting:
 
@@ -251,39 +271,40 @@ Do not send subscription requests to this address!
 =item Other Programs of Interest
 
 If you want to mirror linux or unix files or directories to a remote server
-you should consider rsync, L<http://rsync.samba.org>.  BackupPC now uses
+you should use rsync, L<http://rsync.samba.org>.  BackupPC uses
 rsync as a transport mechanism; if you are already an rsync user you
 can think of BackupPC as adding efficient storage (compression and
 pooling) and a convenient user interface to rsync.
 
-Unison is a utility that can do two-way, interactive, synchronization.
-See L<http://www.cis.upenn.edu/~bcpierce/unison>.
-
-Three popular open source packages that do tape backup are
-Amanda (L<http://www.amanda.org>),
-afbackup (L<http://sourceforge.net/projects/afbackup>), and
-Bacula (L<http://www.bacula.org>).
-Amanda can also backup WinXX machines to tape using samba.
-These packages can be used as back ends to BackupPC to backup the
-BackupPC server data to tape.
+Two popular open source packages that do tape backup are
+Amanda (L<http://www.amanda.org>)
+and Bacula (L<http://www.bacula.org>).
+These packages can be used as complete solutions, or also as back
+ends to BackupPC to backup the BackupPC server data to tape.
 
 Various programs and scripts use rsync to provide hardlinked backups.
 See, for example, Mike Rubel's site (L<http://www.mikerubel.org/computers/rsync_snapshots>),
 JW Schultz's dirvish (L<http://www.dirvish.org/>),
-Ben Escoto's rdiff-backup (L<http://rdiff-backup.stanford.edu>),
+Ben Escoto's rdiff-backup (L<http://www.nongnu.org/rdiff-backup>),
 and John Bowman's rlbackup (L<http://www.math.ualberta.ca/imaging/rlbackup>).
 
+Unison is a utility that can do two-way, interactive, synchronization.
+See L<http://freshmeat.net/projects/unison>.  An external wrapper around
+rsync that maintains transfer data to enable two-way synchronization is
+drsync; see L<http://freshmeat.net/projects/drsync>.
+
 BackupPC provides many additional features, such as compressed storage,
 hardlinking any matching files (rather than just files with the same name),
-and storing special files without root privileges.  But these other scripts
-provide simple and effective solutions and are worthy of consideration.
+and storing special files without root privileges.  But these other programs
+provide simple, effective and fast solutions and are definitely worthy of
+consideration.
 
 =back
 
 =head2 Road map
 
 The new features planned for future releases of BackupPC
-are at L<http://backuppc.sourceforge.net/faq/roadMap.html>.
+are on the Wiki at L<http://backuppc.wiki.sourceforge.net>.
 
 Comments and suggestions are welcome.
 
@@ -299,15 +320,16 @@ appreciated, both positive and negative.
 
 Beyond being a satisfied user and telling other people about it, everyone
 is encouraged to add links to L<http://backuppc.sourceforge.net>
-(I'll see then via Google) or otherwise publicize BackupPC.  Unlike
+(I'll see them via Google) or otherwise publicize BackupPC.  Unlike
 the commercial products in this space, I have a zero budget (in both
 time and money) for marketing, PR and advertising, so it's up to
 all of you!  Feel free to vote for BackupPC at
 L<http://freshmeat.net/projects/backuppc>.
 
-Also, everyone is encouraged to contribute patches, bug reports, feature
-and design suggestions, new code, FAQs, and documentation corrections or
-improvements.  Answering questions on the mail list is a big help too.
+Also, everyone is encouraged to contribute patches, bug reports,
+feature and design suggestions, new code, Wiki additions (you can
+do those directly) and documentation corrections or improvements.
+Answering questions on the mailing list is a big help too.
 
 =head1 Installing BackupPC
 
@@ -326,9 +348,9 @@ you can run. You should be able to run 4-8 simultaneous backups on a
 moderately configured server.
 
 Several users have reported significantly better performance using
-reiser compared to ext3 for the BackupPC data file system.  It is
-also recommended you consider either an LVM or raid setup (either
-in HW or SW; eg: 3Ware RAID5) so that you can expand the
+reiserfs compared to ext3 for the BackupPC data file system.  It is
+also recommended you consider either an LVM or RAID setup (either
+in HW or SW; eg: 3Ware RAID10 or RAID5) so that you can expand the
 file system as necessary.
 
 When BackupPC starts with an empty pool, all the backup data will be
@@ -347,8 +369,7 @@ compression is on.
 
 =item *
 
-Perl version 5.6.0 or later. BackupPC has been tested with
-version 5.6.x, and 5.8.x. If you don't have perl, please
+Perl version 5.8.0 or later.  If you don't have perl, please
 see L<http://www.cpan.org>.
 
 =item *
@@ -367,7 +388,6 @@ Rsync as a transport method.
 If you are using smb to backup WinXX machines you need smbclient and
 nmblookup from the samba package.  You will also need nmblookup if
 you are backing up linux/unix DHCP machines.  See L<http://www.samba.org>.
-Version 2.2.0 or later of Samba is required.
 Samba versions 3.x are stable and now recommended instead of 2.x.
 
 See L<http://www.samba.org> for source and binaries.  It's pretty easy to
@@ -377,22 +397,21 @@ distributions for most platforms.
 
 =item *
 
-If you are using tar to backup linux/unix machines you should have version
-1.13.7 at a minimum, with version 1.13.20 or higher recommended.  Use
+If you are using tar to backup linux/unix machines, those machines should have
+version 1.13.7 at a minimum, with version 1.13.20 or higher recommended.  Use
 "tar --version" to check your version.  Various GNU mirrors have the newest
-versions of tar, see for example L<http://www.funet.fi/pub/gnu/alpha/gnu/tar>.
-As of June 2003 the latest version is 1.13.25.
+versions of tar; see L<http://www.gnu.org/software/tar/>.
 
 =item *
 
 If you are using rsync to backup linux/unix machines you should have
-version 2.5.5 or higher on each client machine.  See
+version 2.6.3 or higher on each client machine.  See
 L<http://rsync.samba.org>. Use "rsync --version" to check your version.
 
 For BackupPC to use Rsync you will also need to install the perl
 File::RsyncP module, which is available from
 L<http://perlrsync.sourceforge.net>.
-Version 0.52 or later is required.
+Version 0.68 or later is required.
 
 =item *
 
@@ -401,6 +420,28 @@ with mod_perl support.
 
 =back
 
+=head2 What type of storage space do I need?
+
+BackupPC uses hardlinks to pool files common to different backups.
+Therefore BackupPC's data store (__TOPDIR__) must point to a single
+file system that supports hardlinks.  You cannot split this file
+system with multiple mount points or using symbolic links to point a
+sub-directory to a different file system (it is ok to use a single
+symbolic link at the top-level directory (__TOPDIR__) to point the
+entire data store somewhere else).  You can of course use any kind of
+RAID system or logical volume manager that combines the capacity of
+multiple disks into a single, larger, file system. Such approaches
+have the advantage that the file system can be expanded without having
+to copy it.
+
+Any standard linux or unix file system supports hardlinks.  NFS mounted
+file systems work too (provided the underlying file system supports
+hardlinks).  But windows based FAT and NTFS file systems will not work.
+
+Starting with BackupPC 3.1.0, run-time checks are done at startup and
+at the start of each backup to ensure that the file system can support
+hardlinks, since this is a common area of configuration problems.
+
 =head2 How much disk space do I need?
 
 Here's one real example for an environment that is backing up 65 laptops
@@ -444,7 +485,7 @@ more troublesome, since it keeps this file locked all the time, so it
 cannot be read by smbclient whenever Outlook is running.  See the
 L<Limitations|limitations> section for more discussion of this problem.
 
-In addition to total disk space, you shold make sure you have
+In addition to total disk space, you should make sure you have
 plenty of inodes on your BackupPC data partition. Some users have
 reported running out of inodes on their BackupPC data partition.
 So even if you have plenty of disk space, BackupPC will report
@@ -456,17 +497,17 @@ inode usage.
 =head2 Step 1: Getting BackupPC
 
 Some linux distributions now include BackupPC.  The Debian
-distribution, supprted by Ludovic Drolez, can be found at
-L<http://packages.debian.org/backuppc>; it should be included
-in the next stable Debian release.  On Debian, BackupPC can
+distribution, supported by Ludovic Drolez, can be found at
+L<http://packages.debian.org/backuppc> and is included
+in the current stable Debian release.  On Debian, BackupPC can
 be installed with the command:
 
     apt-get install backuppc
 
 In the future there might be packages for Gentoo and other
 linux flavors.  If the packaged version is older than the
-released version then you will probably want to install the
-lastest version as described below.
+released version then you may want to install the
+latest version as described below.
 
 Otherwise, manually fetching and installing BackupPC is easy.
 Start by downloading the latest version from
@@ -476,6 +517,11 @@ download the latest version.
 
 =head2 Step 2: Installing the distribution
 
+Note: most information in this step is only relevant if you build
+and install BackupPC yourself.  If you use a package provided by a
+distribution, the package management system should take of installing
+any needed dependencies.
+
 First off, there are three perl modules you should install.
 These are all optional, but highly recommended:
 
@@ -493,20 +539,34 @@ To support restore via Zip archives you will need to install
 Archive::Zip, also from L<http://www.cpan.org>.
 You can run "perldoc Archive::Zip" to see if this module is installed.
 
+=item XML::RSS
+
+To support the RSS feature you will need to install XML::RSS, also from
+L<http://www.cpan.org>.  There is not need to install this module if you
+don't plan on using RSS. You can run "perldoc XML::RSS" to see if this
+module is installed.
+
 =item File::RsyncP
 
 To use rsync and rsyncd with BackupPC you will need to install File::RsyncP.
 You can run "perldoc File::RsyncP" to see if this module is installed.
 File::RsyncP is available from L<http://perlrsync.sourceforge.net>.
-Version 0.52 or later is required.
+Version 0.68 or later is required.
+
+=item File::RsyncP
+
+To use ftp with BackupPC you will need to install three libraries:
+Net::FTP, Net::FTP::RetrHandle and Net::FTP::AutoReconnect. You can
+run "perldoc Net::FTP" to see if a particular module is installed.
 
 =back
 
-To build and install these packages, fetch the tar.gz file and
-then run these commands:
+To build and install these packages you should use the cpan program.
+Alternatively, you can fetch the tar.gz file from L<http://www.cpan.org>
+and then run these commands:
 
-    tar zxvf Archive-Zip-1.01.tar.gz
-    cd Archive-Zip-1.01
+    tar zxvf Archive-Zip-1.26.tar.gz
+    cd Archive-Zip-1.26
     perl Makefile.PL
     make
     make test
@@ -527,17 +587,17 @@ the form
 
     BackupPC-__VERSION__plN.diff
 
-where N is the patch level, eg: pl5 is patch-level 5.  These
+where N is the patch level, eg: pl2 is patch-level 2.  These
 patch files are cumulative: you only need apply the last patch
 file, not all the earlier patch files.  If a patch file is
-available, eg: BackupPC-__VERSION__pl5.diff, you should apply
+available, eg: BackupPC-__VERSION__pl2.diff, you should apply
 the patch after extracting the tar file:
 
      # fetch BackupPC-__VERSION__.tar.gz
-     # fetch BackupPC-__VERSION__pl5.diff
+     # fetch BackupPC-__VERSION__pl2.diff
      tar zxf BackupPC-__VERSION__.tar.gz
      cd BackupPC-__VERSION__
-     patch -p0 < ../BackupPC-__VERSION__pl5.diff
+     patch -p0 < ../BackupPC-__VERSION__pl2.diff
      perl configure.pl
 
 A patch file includes comments that describe that bug fixes
@@ -550,9 +610,24 @@ read with perldoc:
 
     perldoc configure.pl
 
+Starting with BackupPC 3.0.0, the configure.pl script by default
+complies with the file system hierarchy (FHS) conventions.  The
+major difference compared to earlier versions is that by default
+configuration files will be stored in /etc/BackupPC
+rather than below the data directory, __TOPDIR__/conf,
+and the log files will be stored in /var/log/BackupPC
+rather than below the data directory, __TOPDIR__/log.
+
+Note that distributions may choose to use different locations for
+BackupPC files than these defaults.
+
+If you are upgrading from an earlier version the configure.pl script
+will keep the configuration files and log files in their original
+location.
+
 When you run configure.pl you will be prompted for the full paths
 of various executables, and you will be prompted for the following
-information:
+information.
 
 =over 4
 
@@ -560,13 +635,23 @@ information:
 
 It is best if BackupPC runs as a special user, eg backuppc, that has
 limited privileges. It is preferred that backuppc belongs to a system
-administrator group so that sys admin members can browse backuppc files,
+administrator group so that sys admin members can browse BackupPC files,
 edit the configuration files and so on. Although configurable, the
 default settings leave group read permission on pool files, so make
 sure the BackupPC user's group is chosen restrictively.
 
 On this installation, this is __BACKUPPCUSER__.
 
+For security purposes you might choose to configure the BackupPC
+user with the shell set to /bin/false.  Since you might need to
+run some BackupPC programs as the BackupPC user for testing
+purposes, you can use the -s option to su to explicitly run
+a shell, eg:
+
+    su -s /bin/bash __BACKUPPCUSER__
+
+Depending upon your configuration you might also need the -l option.
+
 =item Data Directory
 
 You need to decide where to put the data directory, below which
@@ -577,37 +662,55 @@ On this installation, this is __TOPDIR__.
 =item Install Directory
 
 You should decide where the BackupPC scripts, libraries and documentation
-should be installed, eg: /opt/local/BackupPC.
+should be installed, eg: /usr/local/BackupPC.
 
 On this installation, this is __INSTALLDIR__.
 
 =item CGI bin Directory
 
 You should decide where the BackupPC CGI script resides.  This will
-usually below Apache's cgi-bin directory.
+usually be below Apache's cgi-bin directory.
+
+It is also possible to use a different directory and use Apache's
+``<Directory>'' directive to specifiy that location.  See the Apache
+HTTP Server documentation for additional information.
 
 On this installation, this is __CGIDIR__.
 
-=item Apache image directory
+=item Apache image Directory
 
 A directory where BackupPC's images are stored so that Apache can
-serve them.  This should be somewhere under Apache's DocumentRoot
-directory.
+serve them.  You should ensure this directory is readable by Apache and
+create a symlink to this directory from the BackupPC CGI bin Directory.
+
+=item Config and Log Directories
+
+In this installation the configuration and log directories are
+located in the following locations:
+
+    __CONFDIR__/config.pl    main config file
+    __CONFDIR__/hosts        hosts file
+    __CONFDIR__/pc/HOST.pl   per-pc config file
+    __LOGDIR__/BackupPC      log files, pid, status
+
+The configure.pl script doesn't prompt for these locations but
+they can be set for new installations using command-line options.
 
 =back
 
 =head2 Step 3: Setting up config.pl
 
 After running configure.pl, browse through the config file,
-__TOPDIR__/conf/config.pl, and make sure all the default settings
-are correct. In particular, you will need to decide whether to use
-smb, tar or rsync transport (or whether to set it on a per-PC basis)
-and set the relevant parameters for that transport method.
-See the section L<Client Setup|step 5: client setup> for more details.
+__CONFDIR__/config.pl, and make sure all the default settings are
+correct. In particular, you will need to decide whether to use
+smb, tar,or rsync or ftp transport (or whether to set it on a
+per-PC basis) and set the relevant parameters for that transport
+method. See the section L<Client Setup|step 5: client setup> for
+more details.
 
 =head2 Step 4: Setting up the hosts file
 
-The file __TOPDIR__/conf/hosts contains the list of clients to backup.
+The file __CONFDIR__/hosts contains the list of clients to backup.
 BackupPC reads this file in three cases:
 
 =over 4
@@ -707,9 +810,10 @@ Here's a simple example of a hosts file:
 
 =head2 Step 5: Client Setup
 
-Two methods for getting backup data from a client are supported: smb and
-tar. Smb or rsync are the preferred methods for WinXX clients and rsync or
-tar are the preferred methods for linux/unix clients.
+Four methods for getting backup data from a client are supported:
+smb, tar, rsync and ftp.  Smb or rsync are the preferred methods
+for WinXX clients and rsync or tar are the preferred methods for
+linux/unix/MacOSX clients.
 
 The transfer method is set using the $Conf{XferMethod} configuration
 setting. If you have a mixed environment (ie: you will use smb for some
@@ -727,30 +831,38 @@ Here are some brief client setup notes:
 
 =item WinXX
 
-The preferred setup for WinXX clients is to set $Conf{XferMethod} to "smb".
-(Actually, for v2.0.0, rsyncd is the better method for WinXX if you are
-prepared to run rsync/cygwin on your WinXX client.  More information
-about this will be provided via the FAQ.)
+One setup for WinXX clients is to set $Conf{XferMethod} to "smb".
+Actually, rsyncd is the better method for WinXX if you are prepared to
+run rsync/cygwin on your WinXX client.
 
 If you want to use rsyncd for WinXX clients you can find a pre-packaged
 zip file on L<http://backuppc.sourceforge.net>. The package is called
 cygwin-rsync. It contains rsync.exe, template setup files and the
 minimal set of cygwin libraries for everything to run.  The README file
 contains instructions for running rsync as a service, so it starts
-automatically everytime you boot your machine.
-
-If you build your own rsync, for rsync 2.6.2 it is strongly
-recommended you apply the patch in the cygwin-rsync package on
-L<http://backuppc.sourceforge.net>.  This patch adds the --checksum-seed
-option for checksum caching, and also sends all errors to the client,
-which is important so BackupPC can log all file access errors.
-
-Otherwise, to use SMB, you need to create shares for the data you want
-to backup. Open "My Computer", right click on the drive (eg: C), and
+automatically everytime you boot your machine.  If you use rsync
+to backup WinXX machines, be sure to set $Conf{ClientCharset}
+correctly (eg: 'cp1252') so that the WinXX file name encoding is
+correctly converted to utf8.
+
+Otherwise, to use SMB, you can either create shares for the data you want
+to backup or your can use the existing C$ share.  To create a new 
+share, open "My Computer", right click on the drive (eg: C), and
 select "Sharing..." (or select "Properties" and select the "Sharing"
 tab). In this dialog box you can enable sharing, select the share name
-and permissions.  Many machines will be configured by default to share
-the entire C drive as C$ using the administrator password.
+and permissions.
+
+All Windows NT based OS (NT, 2000, XP Pro), are configured by default 
+to share the entire C drive as C$.  This is a special share used for 
+various administration functions, one of which is to grant access to backup 
+operators. All you need to do is create a new domain user, specifically 
+for backup. Then add the new backup user to the built in "Backup 
+Operators" group. You now have backup capability for any directory on 
+any computer in the domain in one easy step. This avoids using 
+administrator accounts and only grants permission to do exactly what you 
+want for the given user, i.e.: backup.
+Also, for additional security, you may wish to deny the ability for this 
+user to logon to computers in the default domain policy.
 
 If this machine uses DHCP you will also need to make sure the
 NetBios name is set.  Go to Control Panel|System|Network Identification
@@ -789,16 +901,17 @@ is not world (other) readable.
 =item *
 
 As a configuration variable $Conf{SmbSharePasswd} in
-__TOPDIR__/conf/config.pl.  If you put the password
+__CONFDIR__/config.pl.  If you put the password
 here you must make sure this file is not world (other) readable.
 
 =item *
 
 As a configuration variable $Conf{SmbSharePasswd} in the per-PC
-configuration file, __TOPDIR__/pc/$host/config.pl. You will have to
-use this option if the smb share password is different for each host.
-If you put the password here you must make sure this file is not
-world (other) readable.
+configuration file (__CONFDIR__/pc/$host.pl or
+__TOPDIR__/pc/$host/config.pl in non-FHS versions of BackupPC).
+You will have to use this option if the smb share password is different
+for each host. If you put the password here you must make sure this file
+is not world (other) readable.
 
 =back
 
@@ -814,23 +927,16 @@ ksmbfs or similar) on your linux/unix server to mount the share,
 and then set $Conf{XferMethod} to "tar" (use tar on the network
 mounted file system).
 
-Also, to make sure that file names with 8-bit characters are correctly
-transferred by smbclient you should add this to samba's smb.conf file
-for samba 2.x:
-
-    [global]
-       # Accept the windows charset
-       client code page = 850
-       character set = ISO8859-1
-
-For samba 3.x this should instead be:
+Also, to make sure that file names with special characters are correctly
+transferred by smbclient you should make sure that the smb.conf file
+has (for samba 3.x):
 
     [global]
-       unix charset = ISO8859-1
+       unix charset = UTF8
 
-This setting should work for western europe.  
-See L<http://www.oreilly.com/catalog/samba/chapter/book/ch08_03.html>
-for more information about settings for other languages.
+UTF8 is the default setting, so if the parameter is missing then it
+is ok.  With this setting $Conf{ClientCharset} should be emtpy,
+since smbclient has already converted the file names to utf8.
 
 =item Linux/Unix
 
@@ -864,8 +970,8 @@ $Conf{TarIncrArgs}, and $Conf{TarClientRestoreCmd}.
 
 =item rsync
 
-You should have at least rsync 2.5.5, and the latest version 2.5.6
-is recommended.  Rsync is run on the remote client via rsh or ssh.
+You should have at least rsync 2.6.3, and the latest version is
+recommended.  Rsync is run on the remote client via rsh or ssh.
 
 The relevant configuration settings are $Conf{RsyncClientPath},
 $Conf{RsyncClientCmd}, $Conf{RsyncClientRestoreCmd}, $Conf{RsyncShareName},
@@ -873,23 +979,34 @@ $Conf{RsyncArgs}, and $Conf{RsyncRestoreArgs}.
 
 =item rsyncd
 
-You should have at least rsync 2.5.5, and the latest version 2.6.2
-is recommended.  In this case the rsync daemon should be running on
+You should have at least rsync 2.6.3, and the latest version is
+recommended.  In this case the rsync daemon should be running on
 the client machine and BackupPC connects directly to it.
 
 The relevant configuration settings are $Conf{RsyncdClientPort},
 $Conf{RsyncdUserName}, $Conf{RsyncdPasswd}, $Conf{RsyncdAuthRequired},
-$Conf{RsyncShareName}, $Conf{RsyncArgs}, and $Conf{RsyncRestoreArgs}.
-$Conf{RsyncShareName} is the name of an rsync module (ie: the thing
-in square brackets in rsyncd's conf file -- see rsyncd.conf), not a
-file system path.
+$Conf{RsyncShareName}, $Conf{RsyncArgs}, $Conf{RsyncArgsExtra}, and
+$Conf{RsyncRestoreArgs}. $Conf{RsyncShareName} is the name of an rsync
+module (ie: the thing in square brackets in rsyncd's conf file -- see
+rsyncd.conf), not a file system path.
 
 Be aware that rsyncd will remove the leading '/' from path names in
 symbolic links if you specify "use chroot = no" in the rsynd.conf file.
 See the rsyncd.conf manual page for more information.
 
+=item ftp
+
+You need to be running an ftp server on the client machine.
+The relevant configuration settings are $Conf{FtpShareName},
+$Conf{FtpUserName}, $Conf{FtpPasswd}, $Conf{FtpBlockSize},
+$Conf{FtpPort}, $Conf{FtpTimeout}, and $Conf{FtpFollowSymlinks}.
+
 =back
 
+You need to set $Conf{ClientCharset} to the client's charset so that
+file names are correctly converted to utf8.  Use "locale charmap"
+on the client to see its charset.
+
 For linux/unix machines you should not backup "/proc".  This directory
 contains a variety of files that look like regular files but they are
 special files that don't need to be backed up (eg: /proc/kcore is a
@@ -903,10 +1020,9 @@ Alternatively, rather than backup all the file systems as a single
 share ("/"), it is easier to restore a single file system if you backup
 each file system separately.  To do this you should list each file system
 mount point in $Conf{TarShareName} or $Conf{RsyncShareName}, and add the
---one-file-system option to $Conf{TarClientCmd} or add --one-file-system
-(note the different punctuation) to $Conf{RsyncArgs}.  In this case there
-is no need to exclude /proc explicitly since it looks like a different
-file system.
+--one-file-system option to $Conf{TarClientCmd} or $Conf{RsyncArgs}.
+In this case there is no need to exclude /proc explicitly since it looks
+like a different file system.
 
 Next you should decide whether to run tar over ssh, rsh or nfs. Ssh is
 the preferred method. Rsh is not secure and therefore not recommended.
@@ -922,11 +1038,14 @@ for a password. There are two common versions of ssh: v1 and v2. Here
 are some instructions for one way to setup ssh.  (Check which version
 of SSH you have by typing "ssh" or "man ssh".)
 
-=item Mac OS X
+=item MacOSX
 
 In general this should be similar to Linux/Unix machines.
-Mark Stosberg reports that you can also use hfstar.
-See L<http://fink.sourceforge.net/pdb/package.php/hfstar>.
+In versions 10.4 and later, the native MacOSX tar works,
+and also supports resource forks.  xtar is another option,
+and rsync works too (although the MacOSX-supplied rsync
+has an extension for extended attributes that is not
+compatible with standard rsync).
 
 =item SSH Setup
 
@@ -938,10 +1057,10 @@ Note that if you run rsyncd (rsync daemon), ssh is not used.
 In this case, rsyncd provides its own authentication, but there
 is no encryption of network data.  If you want encryption of
 network data you can use ssh to create a tunnel, or use a
-program like stunnel.  If someone submits instructions I
+program like stunnel.
 
-Setup instructions for ssh are at
-L<http://backuppc.sourceforge.net/faq/ssh.html>.
+Setup instructions for ssh can be found at
+L<http://backuppc.sourceforge.net/faq/ssh.html> or on the Wiki.
 
 =item Clients that use DHCP
 
@@ -989,24 +1108,27 @@ as user __BACKUPPCUSER__.  The -d option tells BackupPC to run as a daemon
 (ie: it does an additional fork).
 
 Any immediate errors will be printed to stderr and BackupPC will quit.
-Otherwise, look in __TOPDIR__/log/LOG and verify that BackupPC reports
+Otherwise, look in __LOGDIR__/LOG and verify that BackupPC reports
 it has started and all is ok.
 
 =head2 Step 7: Talking to BackupPC
 
-Note: as of version 1.5.0, BackupPC no longer supports telnet
-to its TCP port.  First off, a unix domain socket is used
-instead of a TCP port.  (The TCP port can still be re-enabled
-if your installation has apache and BackupPC running on different
-machines.)  Secondly, even if you still use the TCP port, the
-messages exchanged over this interface are now protected by
-an MD5 digest based on a shared secret (see $Conf{ServerMesgSecret})
-as well as sequence numbers and per-session unique keys, preventing
-forgery and replay attacks.
-
 You should verify that BackupPC is running by using BackupPC_serverMesg.
 This sends a message to BackupPC via the unix (or TCP) socket and prints
-the response.
+the response.  Like all BackupPC programs, BackupPC_serverMesg
+should be run as the BackupPC user (__BACKUPPCUSER__), so you
+should
+
+    su __BACKUPPCUSER__
+
+before running BackupPC_serverMesg.  If the BackupPC user is
+configured with /bin/false as the shell, you can use the -s
+option to su to explicitly run a shell, eg:
+
+    su -s /bin/bash __BACKUPPCUSER__
+
+Depending upon your configuration you might also need
+the -l option.
 
 You can request status information and start and stop backups using this
 interface. This socket interface is mainly provided for the CGI interface
@@ -1024,7 +1146,7 @@ then all is ok.
 
 The jobs status should initially show just BackupPC_trashClean.
 The hosts status should produce a list of every host you have listed
-in __TOPDIR__/conf/hosts as part of a big cryptic output line.
+in __CONFDIR__/hosts as part of a big cryptic output line.
 
 You can also request that all hosts be queued:
 
@@ -1034,7 +1156,30 @@ At this point you should make sure the CGI interface works since
 it will be much easier to see what is going on.  That's our
 next subject.
 
-=head2 Step 8: CGI interface
+=head2 Step 8: Checking email delivery
+
+The script BackupPC_sendEmail sends status and error emails to
+the administrator and users.  It is usually run each night
+by BackupPC_nightly.
+
+To verify that it can run sendmail and deliver email correctly
+you should ask it to send a test email to you:
+
+    su __BACKUPPCUSER__
+    __INSTALLDIR__/bin/BackupPC_sendEmail -u MYNAME@MYDOMAIN.COM
+
+BackupPC_sendEmail also takes a -c option that checks if BackupPC
+is running, and it sends an email to $Conf{EMailAdminUserName}
+if it is not.  That can be used as a keep-alive check by adding
+
+    __INSTALLDIR__/bin/BackupPC_sendEmail -c
+
+to __BACKUPPCUSER__'s cron.
+
+The -t option to BackupPC_sendEmail causes it to print the email
+message instead of invoking sendmail to deliver the message.
+
+=head2 Step 9: CGI interface
 
 The CGI interface script, BackupPC_Admin, is a powerful and flexible
 way to see and control what BackupPC is doing.  It is written for an
@@ -1050,13 +1195,17 @@ run this command:
 
 If this prints mod_perl.c then your Apache supports mod_perl.
 
+Note: on some distributions (like Debian) the command is not ``httpd'',
+but ``apache'' or ``apache2''. Those distributions will generally also
+use ``apache'' for the Apache user account and configuration files.
+
 Using mod_perl with BackupPC_Admin requires a dedicated Apache
 to be run as the BackupPC user (__BACKUPPCUSER__).  This is
 because BackupPC_Admin needs permission to access various files
 in BackupPC's data directories.  In contrast, the standard
 installation (without mod_perl) solves this problem by having
 BackupPC_Admin installed as setuid to the BackupPC user, so that
-BackupPC_Admin runs as the BackuPC user.
+BackupPC_Admin runs as the BackupPC user.
 
 Here are some specifics for each setup:
 
@@ -1088,7 +1237,7 @@ This is because setuid scripts are disabled by the kernel in most
 flavors of unix and linux.
 
 To see if your perl has setuid emulation, see if there is a program
-called sperl5.6.0 (or sperl5.8.2 etc, based on your perl version)
+called sperl5.8.0 (or sperl5.8.2 etc, based on your perl version)
 in the place where perl is installed. If you can't find this program,
 then you have two options: rebuild and reinstall perl with the setuid
 emulation turned on (answer "y" to the question "Do you want to do
@@ -1235,7 +1384,7 @@ BackupPC (starting with v2.0.0) looks up hosts with DHCP = 0 in this manner:
 First DNS is used to lookup the IP address given the client's name
 using perl's gethostbyname() function.  This should succeed for machines
 that have fixed IP addresses that are known via DNS.  You can manually
-see whether a given host have a DNS entry according to perls'
+see whether a given host have a DNS entry according to perl's
 gethostbyname function with this command:
 
     perl -e 'print(gethostbyname("myhost") ? "ok\n" : "not found\n");'
@@ -1254,7 +1403,7 @@ If this fails you will see output like:
     querying myhost on 10.10.255.255
     name_query failed to find name myhost
 
-If this success you will see output like:
+If it is successful you will see output like:
 
     querying myhost on 10.10.255.255
     10.10.1.73 myhost<00>
@@ -1264,7 +1413,7 @@ nmblookup.  For example:
 
     nmblookup -B 10.10.1.255 myhost
 
-If necessary, experiment on the nmblookup command that will return the
+If necessary, experiment with the nmblookup command which will return the
 IP address of the client given its name.  Then update
 $Conf{NmbLookupFindHostCmd} with any necessary options to nmblookup.
 
@@ -1312,24 +1461,24 @@ machine) you have two choices.  First, you can keep the backups accessible
 and browsable, but disable all new backups.  Alternatively, you can
 completely remove the client and all its backups.
 
-To disable backups for a client there are two special values for
-$Conf{FullPeriod} in that client's per-PC config.pl file:
+To disable backups for a client $Conf{BackupsDisable} can be
+set to two different values in that client's per-PC config.pl file:
 
 =over 4
 
-=item -1
+=item 1
 
 Don't do any regular backups on this machine.  Manually
 requested backups (via the CGI interface) will still occur.
 
-=item -2
+=item 2
 
 Don't do any backups on this machine.  Manually requested
 backups (via the CGI interface) will be ignored.
 
 =back
 
-This will still allow that client's old backups to be browsable
+This will still allow the client's old backups to be browsable
 and restorable.
 
 To completely remove a client and all its backups, you should remove its
@@ -1339,11 +1488,11 @@ BackupPC a HUP (-1) signal so that it re-reads the hosts file.
 If you don't do this, BackupPC will automatically re-read the
 hosts file at the next regular wakeup.
 
-Note that when you remove a client's backups you won't initially recover
-a lot of disk space.  That's because the client's files are still in
-the pool.  Overnight, when BackupPC_nightly next runs, all the unused
-pool files will be deleted and this will recover the disk space used
-by the client's backups.
+Note that when you remove a client's backups you won't initially
+recover much disk space.  That's because the client's files are
+still in the pool.  Overnight, when BackupPC_nightly next runs,
+all the unused pool files will be deleted and this will recover
+the disk space used by the client's backups.
 
 =item Copying the pool
 
@@ -1356,129 +1505,57 @@ The backup data directories contain large numbers of hardlinks.  If
 you try to copy the pool the target directory will occupy a lot more
 space if the hardlinks aren't re-established.
 
-The GNU cp program with the -a option is aware of hardlinks and knows
-to re-establish them.  So GNU cp -a is the recommended way to copy
-the data directory and pool.  Don't forget to stop BackupPC while
-the copy runs.
-
-=item Compressing an existing pool
-
-If you are upgrading BackupPC and want to turn compression on you have
-two choices:
-
-=over 4
-
-=item *
-
-Simply turn on compression.  All new backups will be compressed. Both old
-(uncompressed) and new (compressed) backups can be browsed and viewed.
-Eventually, the old backups will expire and all the pool data will be
-compressed. However, until the old backups expire, this approach could
-require 60% or more additional pool storage space to store both
-uncompressed and compressed versions of the backup files.
-
-=item *
-
-Convert all the uncompressed pool files and backups to compressed.
-The script __INSTALLDIR__/bin/BackupPC_compressPool does this.
-BackupPC must not be running when you run BackupPC_compressPool.
-Also, there must be no existing compressed backups when you
-run BackupPC_compressPool.
-
-BackupPC_compressPool compresses all the files in the uncompressed pool
-(__TOPDIR__/pool) and moves them to the compressed pool
-(__TOPDIR__/cpool). It rewrites the files in place, so that the
-existing hardlinks are not disturbed.
-
-=back
-
-The rest of this section discusses how to run BackupPC_compressPool.
-
-BackupPC_compressPool takes three command line options:
-
-=over 4
-
-=item -t
-
-Test mode: do everything except actually replace the pool files.
-Useful for estimating total run time without making any real
-changes.
-
-=item -r
+The best way to copy a pool file system, if possible, is by copying
+the raw device at the block level (eg: using dd).  Application level
+programs that understand hardlinks include the GNU cp program with
+the -a option and rsync -H.  However, the large number of hardlinks
+in the pool will make the memory usage large and the copy very slow.
+Don't forget to stop BackupPC while the copy runs.
 
-Read check: re-read the compressed file and compare it against
-the original uncompressed file.  Can only be used in test mode.
+Starting in 3.0.0 a new script bin/BackupPC_tarPCCopy can be
+used to assist the copy process.  Given one or more pc paths
+(eg: TOPDIR/pc/HOST or TOPDIR/pc/HOST/nnn), BackupPC_tarPCCopy 
+creates a tar archive with all the hardlinks pointing to ../cpool/....
+Any files not hardlinked (eg: backups, LOG etc) are included
+verbatim.
 
-=item -c #
+You will need to specify the -P option to tar when you extract
+the archive generated by BackupPC_tarPCCopy since the hardlink
+targets are outside of the directory being extracted.
 
-Number of children to fork. BackupPC_compressPool can take a long time
-to run, so to speed things up it spawns four children, each working on a
-different part of the pool. You can change the number of children with
-the -c option.
-
-=back
-
-Here are the recommended steps for running BackupPC_compressPool:
+To copy a complete store (ie: __TOPDIR__) using BackupPC_tarPCCopy
+you should:
 
 =over 4
 
 =item *
 
-Stop BackupPC (eg: "/etc/init.d/backuppc stop").
-
-=item *
-
-Set $Conf{CompressLevel} to a non-zero number (eg: 3).
+stop BackupPC so that the store is static.
 
 =item *
 
-Do a dry run of BackupPC_compressPool.  Make sure you run this as
-the BackupPC user (__BACKUPPCUSER__):
-
-    BackupPC_compressPool -t -r
-
-The -t option (test mode) makes BackupPC_compressPool do all the steps,
-but not actually change anything. The -r option re-reads the compressed
-file and compares it against the original.
-
-BackupPC_compressPool gives a status as it completes each 1% of the job.
-It also shows the cumulative compression ratio and estimated completion
-time.  Once you are comfortable that things look ok, you can kill
-BackupPC_compressPool or wait for it to finish.
+copy the cpool, conf and log directory trees using any technique
+(like cp, rsync or tar) without the need to preserve hardlinks.
 
 =item *
 
-Now you are ready to run BackupPC_compressPool for real.  Once again,
-as the BackupPC user (__BACKUPPCUSER__), run:
+copy the pc directory using BackupPC_tarPCCopy:
 
-    BackupPC_compressPool
-
-You should put the output into a file and tail this file.  (The running
-time could be twice as long as the test mode since the test mode file
-writes are immediately followed by an unlink, so in test mode it is
-likely the file writes never make it to disk.)
-
-It is B<critical> that BackupPC_compressPool runs to completion before
-re-starting BackupPC.  Before BackupPC_compressPool completes, none of
-the existing backups will be in a consistent state.  If you must stop
-BackupPC_compressPool for some reason, send it an INT or TERM signal
-and give it several seconds (or more) to clean up gracefully.
-After that, you can re-run BackupPC_compressPool and it will start
-again where it left off.  Once again, it is critical that it runs
-to 100% completion.
+    su __BACKUPPCUSER__
+    cd NEW_TOPDIR
+    mkdir pc
+    cd pc
+    __INSTALLDIR__/bin/BackupPC_tarPCCopy __TOPDIR__/pc | tar xvPf -
 
 =back
 
-After BackupPC_compressPool completes you should have a complete set
-of compressed backups (and your disk usage should be lower).  You
-can now re-start BackupPC.
-
 =back
 
 =head2 Fixing installation problems
 
-Please see the FAQ at L<http://backuppc.sourceforge.net/faq> for
-debugging suggestions.
+Please see the Wiki at L<http://backuppc.wiki.sourceforge.net> for
+debugging suggestions.  If you find a solution to your problem that
+could help other users please add it to the Wiki!
 
 =head1 Restore functions
 
@@ -1532,7 +1609,7 @@ will be deferred if there is a backup currently running for that host.
 When the restore job is run, smbclient, tar, rsync or rsyncd is used
 (depending upon $Conf{XferMethod}) to actually restore the files.
 Sorry, there is currently no option to cancel a restore that has been
-started.
+started.  Currently ftp restores are not fully implemented.
 
 A record of the restore request, including the result and list of
 files and directories, is kept.  It can be browsed from the host's
@@ -1601,59 +1678,28 @@ incremental or full backup.
 
 The usage is:
 
-   BackupPC_tarCreate [-t] [-h host] [-n dumpNum] [-s shareName]
-                   [-r pathRemove] [-p pathAdd] [-b BLOCKS] [-w writeBufSz]
-                    files/directories...
+    BackupPC_tarCreate [options] files/directories...
+    Required options:
+       -h host         host from which the tar archive is created
+       -n dumpNum      dump number from which the tar archive is created
+                       A negative number means relative to the end (eg -1
+                       means the most recent dump, -2 2nd most recent etc).
+       -s shareName    share name from which the tar archive is created
+  
+    Other options:
+       -t              print summary totals
+       -r pathRemove   path prefix that will be replaced with pathAdd
+       -p pathAdd      new path prefix
+       -b BLOCKS       BLOCKS x 512 bytes per record (default 20; same as tar)
+       -w writeBufSz   write buffer size (default 1048576 = 1MB)
+       -e charset      charset for encoding file names (default: value of
+                       $Conf{ClientCharset} when backup was done)
+       -l              just print a file listing; don't generate an archive
+       -L              just print a detailed file listing; don't generate an archive
 
 The command-line files and directories are relative to the specified
 shareName.  The tar file is written to stdout.
 
-The required options are:
-
-=over 4
-
-=item -h host
-
-host from which the tar archive is created
-
-=item -n dumpNum
-
-dump number from which the tar archive is created
-
-=item -s shareName
-
-share name from which the tar archive is created
-
-=back
-
-Other options are:
-
-=over 4
-
-=item -t
-
-print summary totals
-
-=item -r pathRemove
-
-path prefix that will be replaced with pathAdd
-
-=item -p pathAdd
-
-new path prefix
-
-=item -b BLOCKS
-
-the tar block size, default is 20, meaning tar writes data in 20 * 512
-bytes chunks.
-
-=item -w writeBufSz
-
-write buffer size, default 1048576 (1MB).  You can increase this if
-you are trying to stream to a fast tape device.
-
-=back
-
 The -h, -n and -s options specify which dump is used to generate
 the tar archive.  The -r and -p options can be used to relocate
 the paths in the tar archive so extracted files can be placed
@@ -1668,57 +1714,27 @@ incremental or full backup.
 
 The usage is:
 
-   BackupPC_zipCreate [-t] [-h host] [-n dumpNum] [-s shareName]
-                   [-r pathRemove] [-p pathAdd] [-c compressionLevel]
-                   files/directories...
+    BackupPC_zipCreate [options] files/directories...
+    Required options:
+       -h host         host from which the zip archive is created
+       -n dumpNum      dump number from which the tar archive is created
+                       A negative number means relative to the end (eg -1
+                       means the most recent dump, -2 2nd most recent etc).
+       -s shareName    share name from which the zip archive is created
+  
+    Other options:
+       -t              print summary totals
+       -r pathRemove   path prefix that will be replaced with pathAdd
+       -p pathAdd      new path prefix
+       -c level        compression level (default is 0, no compression)
+       -e charset      charset for encoding file names (default: cp1252)
 
 The command-line files and directories are relative to the specified
-shareName.  The zip file is written to stdout.
-
-The required options are:
-
-=over 4
-
-=item -h host
-
-host from which the zip archive is created
-
-=item -n dumpNum
-
-dump number from which the zip archive is created
-
-=item -s shareName
-
-share name from which the zip archive is created
-
-=back
-
-Other options are:
-
-=over 4
-
-=item -t
-
-print summary totals
-
-=item -r pathRemove
-
-path prefix that will be replaced with pathAdd
-
-=item -p pathAdd
-
-new path prefix
-
-=item -c level
-
-compression level (default is 0, no compression)
-
-=back
-
-The -h, -n and -s options specify which dump is used to generate
-the zip archive.  The -r and -p options can be used to relocate
-the paths in the zip archive so extracted files can be placed
-in a location different from their original location.
+shareName.  The zip file is written to stdout. The -h, -n and -s
+options specify which dump is used to generate the zip archive.  The
+-r and -p options can be used to relocate the paths in the zip archive
+so extracted files can be placed in a location different from their
+original location.
 
 =back
 
@@ -1777,6 +1793,63 @@ The next screen allows you to adjust the parameters for this archive run.
 Press the "Start the Archive" to start archiving the selected hosts with the
 parameters displayed.
 
+=head2 Starting an Archive from the command line
+
+The script BackupPC_archiveStart can be used to start an archive from
+the command line (or cron etc).  The usage is:
+
+    BackupPC_archiveStart archiveHost userName hosts...
+
+This creates an archive of the most recent backup of each of
+the specified hosts.  The first two arguments are the archive
+host and the user name making the request.
+
+=head1 Other CGI Functions
+
+=head2 Configuration and Host Editor
+
+The CGI interface has a complete configuration and host editor.
+Only the administrator can edit the main configuration settings
+and hosts.  The edit links are in the left navigation bar.
+
+When changes are made to any parameter a "Save" button appears
+at the top of the page.  If you are editing a text box you will
+need to click outside of the text box to make the Save button
+appear.  If you don't select Save then the changes won't be saved.
+
+The host-specific configuration can be edited from the host
+summary page using the link in the left navigation bar.
+The administrator can edit any of the host-specific
+configuration settings.
+
+When editing the host-specific configuration, each parameter has
+an "override" setting that denotes the value is host-specific,
+meaning that it overrides the setting in the main configuration.
+If you unselect "override" then the setting is removed from
+the host-specific configuration, and the main configuration
+file is displayed.
+
+User's can edit their host-specific configuration if enabled
+via $Conf{CgiUserConfigEditEnable}.  The specific subset
+of configuration settings that a user can edit is specified
+with $Conf{CgiUserConfigEdit}.  It is recommended to make this
+list short as possible (you probably don't want your users saving
+dozens of backups) and it is essential that they can't edit any
+of the Cmd configuration settings, otherwise they can specify
+an arbitrary command that will be executed as the BackupPC
+user.
+
+=head2 RSS
+
+BackupPC supports a very basic RSS feed.  Provided you have the
+XML::RSS perl module installed, a URL similar to this will
+provide RSS information:
+
+    http://localhost/cgi-bin/BackupPC/BackupPC_Admin?action=rss
+
+This feature is experimental.  The information included will
+probably change.
+
 =head1 BackupPC Design
 
 =head2 Some design issues
@@ -1856,7 +1929,7 @@ a factor of 8 or more overall saving in backup storage.
 =head2 BackupPC operation
 
 BackupPC reads the configuration information from
-__TOPDIR__/conf/config.pl. It then runs and manages all the backup
+__CONFDIR__/config.pl. It then runs and manages all the backup
 activity. It maintains queues of pending backup requests, user backup
 requests and administrative commands. Based on the configuration various
 requests will be executed simultaneously.
@@ -1923,15 +1996,15 @@ same (only displayed if $Conf{XferLogLevel} >= 2).
 =back
 
 As BackupPC_tarExtract extracts the files from smbclient or tar, or as
-rsync runs, it checks each file in the backup to see if it is identical
-to an existing file from any previous backup of any PC. It does this
-without needed to write the file to disk. If the file matches an
-existing file, a hardlink is created to the existing file in the pool.
-If the file does not match any existing files, the file is written to
-disk and the file name is saved in __TOPDIR__/pc/$host/NewFileList for
-later processing by BackupPC_link.  BackupPC_tarExtract and rsync can handle
-arbitrarily large files and multiple candidate matching files without
-needing to write the file to disk in the case of a match.  This
+rsync or ftp runs, it checks each file in the backup to see if it is
+identical to an existing file from any previous backup of any PC. It
+does this without needed to write the file to disk. If the file matches
+an existing file, a hardlink is created to the existing file in the
+pool. If the file does not match any existing files, the file is written
+to disk and the file name is saved in __TOPDIR__/pc/$host/NewFileList
+for later processing by BackupPC_link.  BackupPC_tarExtract and rsync
+can handle arbitrarily large files and multiple candidate matching files
+without needing to write the file to disk in the case of a match.  This
 significantly reduces disk writes (and also reads, since the pool file
 comparison is done disk to memory, rather than disk to disk).
 
@@ -1975,15 +2048,17 @@ BackupPC_trashClean is always run in the background to remove any
 expired backups. Every 5 minutes it wakes up and removes all the files
 in __TOPDIR__/trash.
 
-Also, once each night, BackupPC_nightly is run to complete some additional
-administrative tasks, such as cleaning the pool.  This involves removing
-any files in the pool that only have a single hard link (meaning no backups
-are using that file).  Again, to avoid race conditions, BackupPC_nightly
-is only run when there are no BackupPC_dump or BackupPC_link processes
-running.  Therefore, when it is time to run BackupPC_nightly, no new
-backups are started and BackupPC waits until all backups have finished.
-Then BackupPC_nightly is run, and until it finishes no new backups are
-started.  If BackupPC_nightly is slow, the settings
+Also, once each night, BackupPC_nightly is run to complete some
+additional administrative tasks, such as cleaning the pool.  This
+involves removing any files in the pool that only have a single
+hard link (meaning no backups are using that file).  Again, to
+avoid race conditions, BackupPC_nightly is only run when there
+are no BackupPC_link processes running.  When BackupPC_nightly is
+run no new BackupPC_link jobs are started.  If BackupPC_nightly
+takes too long to run, the settings $Conf{MaxBackupPCNightlyJobs}
+and $Conf{BackupPCNightlyPeriod} can be used to run several
+BackupPC_nightly processes in parallel, and to split its job over
+several nights.
 
 =back
 
@@ -1993,7 +2068,7 @@ user-initiated backup or backup cancel requests.
 
 =head2 Storage layout
 
-BackupPC resides in three directories:
+BackupPC resides in several directories:
 
 =over 4
 
@@ -2007,20 +2082,12 @@ is in __INSTALLDIR__/doc.
 
 The CGI script BackupPC_Admin resides in this cgi binary directory.
 
-=item __TOPDIR__
-
-All of BackupPC's data (PC backup images, logs, configuration information)
-is stored below this directory.
-
-=back
-
-Below __TOPDIR__ are several directories:
+=item __CONFDIR__
 
-=over 4
-
-=item __TOPDIR__/conf
+All the configuration information resides below __CONFDIR__.
+This directory contains:
 
-The directory __TOPDIR__/conf contains:
+The directory __CONFDIR__ contains:
 
 =over 4
 
@@ -2033,11 +2100,21 @@ below for more details.
 
 Hosts file, which lists all the PCs to backup.
 
+=item pc
+
+The directory __CONFDIR__/pc contains per-client configuration files
+that override settings in the main configuration file.  Each file
+is named __CONFDIR__/pc/HOST.pl, where HOST is the host name.
+
+In pre-FHS versions of BackupPC these files were located in
+__TOPDIR__/pc/HOST/config.pl.
+
 =back
 
-=item __TOPDIR__/log
+=item __LOGDIR__
 
-The directory __TOPDIR__/log contains:
+The directory __LOGDIR__ (__TOPDIR__/log on pre-FHS versions
+of BackupPC) contains:
 
 =over 4
 
@@ -2067,6 +2144,15 @@ last email was sent.  Should not be edited.
 
 =back
 
+=item __TOPDIR__
+
+All of BackupPC's data (PC backup images, logs, configuration information)
+is stored below this directory.
+
+Below __TOPDIR__ are several directories:
+
+=over 4
+
 =item __TOPDIR__/trash
 
 Any directories and files below this directory are periodically deleted
@@ -2145,14 +2231,16 @@ following files:
 
 Current log file for this PC from BackupPC_dump.
 
-=item LOG.0 or LOG.0.z
+=item LOG.DDMMYYYY or LOG.DDMMYYYY.z
 
 Last month's log file.  Log files are aged monthly and compressed
 (if compression is enabled), and old LOG files are deleted.
+In earlier versions of BackupPC these files used to have
+a suffix of 0, 1, ....
 
 =item XferERR or XferERR.z
 
-Output from the transport program (ie: smbclient, tar or rsync)
+Output from the transport program (ie: smbclient, tar, rsync or ftp)
 for the most recent failed backup.
 
 =item new
@@ -2162,7 +2250,7 @@ directory is renamed if the backup succeeds.
 
 =item XferLOG or XferLOG.z
 
-Output from the transport program (ie: smbclient, tar or rsync)
+Output from the transport program (ie: smbclient, tar, rsync or ftp)
 for the current backup.
 
 =item nnn (an integer)
@@ -2171,7 +2259,7 @@ Successful backups are in directories numbered sequentially starting at 0.
 
 =item XferLOG.nnn or XferLOG.nnn.z
 
-Output from the transport program (ie: smbclient, tar or rsync)
+Output from the transport program (ie: smbclient, tar, rsync or ftp)
 corresponding to backup number nnn.
 
 =item RestoreInfo.nnn
@@ -2198,8 +2286,10 @@ to the backup or restore number.)
 
 =item config.pl
 
-Optional configuration settings specific to this host.  Settings in this
-file override the main configuration file.
+Old location of optional configuration settings specific to this host.
+Settings in this file override the main configuration file.
+In new versions of BackupPC the per-host configuration files are
+stored in __CONFDIR__/pc/HOST.pl.
 
 =item backups
 
@@ -2229,11 +2319,11 @@ Stop time of the backup in unix seconds.
 
 =item nFiles
 
-Number of files backed up (as reported by smbclient, tar or rsync).
+Number of files backed up (as reported by smbclient, tar, rsync or ftp).
 
 =item size
 
-Total file size backed up (as reported by smbclient, tar or rsync).
+Total file size backed up (as reported by smbclient, tar, rsync or ftp).
 
 =item nFilesExist
 
@@ -2257,7 +2347,7 @@ Total size of files that were not in the pool
 
 =item xferErrs
 
-Number of errors or warnings from smbclient, tar or rsync.
+Number of errors or warnings from smbclient, tar, rsync or ftp.
 
 =item xferBadFile
 
@@ -2356,7 +2446,7 @@ Number of errors from BackupPC_tarCreate during restore.
 
 =item xferErrs
 
-Number of errors from smbclient, tar or rsync during restore.
+Number of errors from smbclient, tar, rsync or ftp during restore.
 
 =back
 
@@ -2394,6 +2484,8 @@ Error message if archive failed.
 
 =back
 
+=back
+
 =head2 Compressed file format
 
 The compressed file format is as generated by Compress::Zlib::deflate
@@ -2595,7 +2687,8 @@ since it saves attribute meta-data separate from the files.  Since
 BackupPC mostly does reads from disk, maintaining the access time of
 files generates a lot of unnecessary disk writes.  So, provided 
 BackupPC has a dedicated data disk, you should consider mounting
-BackupPC's data directory with the noatime attribute (see mount(1)).
+BackupPC's data directory with the noatime (or, with Linux kernels
+>=2.6.20, relatime) attribute (see mount(1)).
 
 =head2 Limitations
 
@@ -2610,8 +2703,9 @@ discussion of some of various security issues.
 
 =head1 Configuration File
 
-The BackupPC configuration file resides in __TOPDIR__/conf/config.pl.
-Optional per-PC configuration files reside in __TOPDIR__/pc/$host/config.pl.
+The BackupPC configuration file resides in __CONFDIR__/config.pl.
+Optional per-PC configuration files reside in __CONFDIR__/pc/$host.pl
+(or __TOPDIR__/pc/$host/config.pl in non-FHS versions of BackupPC).
 This file can be used to override settings just for a particular PC.
 
 =head2 Modifying the main configuration file
@@ -2651,48 +2745,10 @@ LOG file, so you can tail it (or view it via the CGI interface) to make
 sure your kill -HUP worked. Errors in parsing the configuration file are
 also reported in the LOG file.
 
-The optional per-PC configuration file (__TOPDIR__/pc/$host/config.pl)
+The optional per-PC configuration file (__CONFDIR__/pc/$host.pl or
+__TOPDIR__/pc/$host/config.pl in non-FHS versions of BackupPC)
 is read whenever it is needed by BackupPC_dump, BackupPC_link and others.
 
-=head2 Configuration file includes
-
-If you have a heterogeneous set of clients (eg: a variety of WinXX and
-linux/unix machines) you will need to create host-specific config.pl files
-for some or all of these machines to customize the default settings from
-the master config.pl file (at a minimum to set $Conf{XferMethod}).
-
-Since the config.pl file is just regular perl code, you can include
-one config file from another.  For example, imagine you had three general
-classes of machines: WinXX desktops, linux machines in the DMZ and
-linux desktops.  You could create three config files in __TOPDIR__/conf:
-
-    __TOPDIR__/conf/ConfigWinDesktop.pl
-    __TOPDIR__/conf/ConfigLinuxDMZ.pl
-    __TOPDIR__/conf/ConfigLinuxDesktop.pl
-
-From each client's directory you can either add a symbolic link to
-the appropriate config file:
-
-    cd __TOPDIR__/pc/$host
-    ln -s ../../conf/ConfigWinDesktop.pl config.pl
-
-or, better yet, create a config.pl file in __TOPDIR__/pc/$host
-that includes the default config.pl file using perl's "do"
-command:
-
-    do "__TOPDIR__/conf/ConfigWinDesktop.pl";
-
-This alternative allows you to set other configuration options
-specific to each host after the "do" command (perhaps even
-overriding the settings in the included file).
-
-Note that you could also include snippets of configuration settings
-from the main configuration file.  However, be aware that the
-modification-time checking that BackupPC does only applies to the
-main configuration file: if you change one of the included files,
-BackupPC won't notice.  You will need to either touch the main
-configuration file too, or send BackupPC a HUP (-1) signal.
-
 =head1 Configuration Parameters
 
 The configuration parameters are divided into five general groups.
@@ -2714,7 +2770,7 @@ instead of X.0Y. The first digit is for major new releases, the middle
 digit is for significant feature releases and improvements (most of
 the releases have been in this category), and the last digit is for
 bug fixes. You should think of the old 1.00, 1.01, 1.02 and 1.03 as
-1..0, 1.1.0, 1.2.0 and 1.3.0.
+1.0.0, 1.1.0, 1.2.0 and 1.3.0.
 
 Additionally, patches might be made available.  A patched version
 number is of the form X.Y.ZplN (eg: 2.1.0pl2), where N is the
@@ -2728,7 +2784,7 @@ See L<http://backuppc.sourceforge.net>.
 
 =head1 Copyright
 
-Copyright (C) 2001-2004 Craig Barratt
+Copyright (C) 2001-2009 Craig Barratt
 
 =head1 Credits
 
@@ -2754,18 +2810,33 @@ Javier Gonzalez provided the Spanish translation, es.pm for v2.0.0.
 
 Manfred Herrmann provided the German translation, de.pm for v2.0.0.
 Manfred continues to support de.pm updates for each new version,
-together with some help frmo Ralph Paßgang.
+together with some help from Ralph Paßgang.
 
 Lorenzo Cappelletti provided the Italian translation, it.pm for v2.1.0.
+Giuseppe Iuculano and Vittorio Macchi updated it for 3.0.0.
 
 Lieven Bridts provided the Dutch translation, nl.pm, for v2.1.0,
-with some tweaks from Guus Houtzager.
+with some tweaks from Guus Houtzager, and updates for 3.0.0.
 
 Reginaldo Ferreira provided the Portuguese Brazillian translation
 pt_br.pm for v2.2.0.
 
+Rich Duzenbury provided the RSS feed option to the CGI interface.
+
+Jono Woodhouse from CapeSoft Software (www.capesoft.com) provided a
+new CSS skin for 3.0.0 with several layout improvements.  Sean Cameron
+(also from CapeSoft) designed new and more compact file icons for 3.0.0.
+
+Youlin Feng provided the Chinese translation for 3.1.0.
+
+Karol 'Semper' Stelmaczonek provided the Polish translation for 3.1.0.
+
+Jeremy Tietsort provided the host summary table sorting feature for 3.1.0.
+
+Paul Mantz contributed the ftp Xfer method for 3.2.0.
+
 Many people have reported bugs, made useful suggestions and helped
-with testing; see the ChangeLog and the mail lists.
+with testing; see the ChangeLog and the mailing lists.
 
 Your name could appear here in the next version!