]> git.sur5r.net Git - bacula/docs/blobdiff - docs/manual/fileset.tex
ebl Add information about character substitution
[bacula/docs] / docs / manual / fileset.tex
index 8f4cfcf71f22c82038cfe9d8afdece688fc738ba..c8a2dd2b5603ad668f6036d292a1c7910789e771 100644 (file)
@@ -1,11 +1,10 @@
-%%
+-%
 %%
 
-\subsection*{The FileSet Resource}
+\section{The FileSet Resource}
 \label{FileSetResource}
-\index[general]{Resource!FileSet }
-\index[general]{FileSet Resource }
-\addcontentsline{toc}{subsection}{FileSet Resource}
+\index[general]{Resource!FileSet}
+\index[general]{FileSet Resource}
 
 The FileSet resource defines what files are to be included or excluded in a
 backup job.  A {\bf FileSet} resource is required for each backup Job.  It
@@ -19,45 +18,93 @@ automatically create a new FileSet (defined by the name and an MD5 checksum
 of the Include/Exclude contents).  Each time a new FileSet is created,
 Bacula will ensure that the next backup is always a Full save.
 
+Bacula is designed to handle most character sets of the world,
+US ASCII, German, French, Chinese, ...  However, it does this by
+encoding everything in UTF-8, and it expects all configuration files
+(including those read on Win32 machines) to be in UTF-8 format.
+UTF-8 is typically the default on Linux machines, but not on all
+Unix machines, nor on Windows, so you must take some care to ensure
+that your locale is set properly before starting Bacula.  
+On most modern Win32 machines, you can edit the conf files with {\bf
+notebook} and choose output encoding UTF-8.
+
+To ensure that Bacula configuration files can be correctly read including
+foreign characters the {bf LANG} environment variable
+must end in {\bf .UTF-8}. An full example is {\bf en\_US.UTF-8}. The
+exact syntax may vary a bit from OS to OS, and exactly how you define
+it will also vary.
+
+Bacula assumes that all filenames are in UTF-8 format on Linux and
+Unix machines. On Win32 they are in Unicode (UTF-16), and will
+be automatically converted to UTF-8 format.
+
+
 \begin{description}
 
 \item [FileSet]
-\index[dir]{FileSet }
+\index[dir]{FileSet}
+\index[dir]{Directive!FileSet}
 Start of the FileSet resource. One {\bf FileSet}  resource must be
 defined for each Backup job.
 
 \item [Name = \lt{}name\gt{}]
-\index[dir]{Name  }
-The name of the FileSet resource.  This directive is required. 
+\index[dir]{Name}
+\index[dir]{Directive!Name}
+   The name of the FileSet resource.  This directive is required. 
 
 \item [Ignore FileSet Changes = \lt{}yes|no\gt{}]
-\index[dir]{Ignore FileSet Changes  }
-   If this directive is set to {\bf yes}, any changes you make to the  FileSet
-   Include or Exclude lists will be ignored and not cause Bacula  to immediately
-   perform a Full backup. The default is {\bf no}, in which  case, if you change
-   the Include or Exclude, Bacula will force a Full  backup to ensure that
-   everything is properly backed up. It is not recommended  to set this directive
-   to yes. This directive is available in Bacula  version 1.35.4 or later. 
+\index[dir]{Ignore FileSet Changes}
+\index[dir]{Directive!Ignore FileSet Changes}
+   Normally, if you modify the FileSet Include or Exclude lists,
+   the next backup will be forced to a Full so that Bacula can
+   guarantee that any additions or deletions are properly saved.
+
+   We strongly recommend against setting this directive to yes, 
+   since doing so may cause you to have an incomplete set of backups.
+
+   If this directive is set to {\bf yes}, any changes you make to the
+   FileSet Include or Exclude lists, will not force a Full during 
+   subsequent backups.
+
+   The default is {\bf no}, in which case, if you change the Include or
+   Exclude, Bacula will force a Full backup to ensure that everything is
+   properly backed up.
+
+\item [Enable VSS = \lt{}yes|no\gt{}]
+\index[dir]{Enable VSS}
+\index[dir]{Directive!Enable VSS}
+  If this directive is set to {\bf yes} the File daemon will be notified
+  that the user wants to use a Volume Shadow Copy Service (VSS) backup
+  for this job. The default is {\bf yes}. This directive is effective
+  only for VSS enabled Win32 File daemons. It permits a consistent copy
+  of open files to be made for cooperating writer applications, and for
+  applications that are not VSS away, Bacula can at least copy open files.
+  For more information, please see the
+  \ilink{Windows}{VSS} chapter of this manual.
 
 \item [Include \{ Options \{\lt{}file-options\gt{}\} ...;
    \lt{}file-list\gt{} \} ]
-\index[dir]{Include \  \{ [ Options \{\lt{}file-options\gt{}\} ...]
+\index[dir]{Include \{ [ Options \{\lt{}file-options\gt{}\} ...]
    \lt{}file-list\gt{} \}  }
+\index[dir]{Directive!Include}
 
-\item [Options \ \{ \lt{}file-options\gt{} \} ]
-\index[dir]{Options  \{ \lt{}file-options\gt{} \}  }
+\item [Options \{ \lt{}file-options\gt{} \} ]
+\index[dir]{Options  \{ \lt{}file-options\gt{} \}  }
 
-\item [Exclude \ \{ \lt{}file-list\gt{} \}]
-\index[dir]{Exclude \  \{ \lt{}file-list\gt{} \} }
+\item [Exclude \{ \lt{}file-list\gt{} \}]
+\index[dir]{Exclude \{ \lt{}file-list\gt{} \} }
+\index[dir]{Directive!Exclude}
 
 \end{description}
 
 The Include resource must contain a list of directories and/or files to be
 processed in the backup job.  Normally, all files found in all
 subdirectories of any directory in the Include File list will be backed up.
+Note, see below for the definition of \lt{}file-list\gt{}. 
 The Include resource may also contain one or more Options resources that
 specify options such as compression to be applied to all or any subset of
-the files found for backup.
+the files found when processing the file-list for backup. Please see
+below for more details concerning Options resources.
 
 There can be any number of {\bf Include} resources within the FileSet, each
 having its own list of directories or files to be backed up and the backup
@@ -65,6 +112,13 @@ options defined by one or more Options resources.  The {\bf file-list}
 consists of one file or directory name per line.  Directory names should be
 specified without a trailing slash with Unix path notation.
 
+Windows users, please take note to specify directories (even c:/...) in
+Unix path notation. If you use Windows conventions, you will most likely
+not be able to restore your files due to the fact that the Windows
+path separator was defined as an escape character long before Windows
+existed, and Bacula adheres to that convention (i.e. \\  means the next character
+appears as itself).
+
 You should always specify a full path for every directory and file that you
 list in the FileSet.  In addition, on Windows machines, you should {\bf
 always} prefix the directory or filename with the drive specification in
@@ -103,7 +157,7 @@ filesystem) will cause /usr to be backed up twice. In this case, on Bacula
 versions prior to 1.32f-5-09Mar04 due to a bug, you will not be able to
 restore hard linked files that were backed up twice. 
 
-If you have used Bacula prior to version 1.34.3, you will note three things in
+If you have used Bacula prior to version 1.36.3, you will note three things in
 the new FileSet syntax: 
 
 \begin{enumerate}
@@ -120,28 +174,40 @@ the new FileSet syntax:
 
 The Options resource is optional, but when specified, it will contain a
 list of {\bf keyword=value} options to be applied to the file-list.
+See below for the definition of file-list.    
 Multiple Options resources may be specified one after another.  As the
 files are found in the specified directories, the Options will applied to
 the filenames to determine if and how the file should be backed up.  The
-Options resources are applied in the order they are specified in the
-FileSet until the first one that matches.  
+wildcard and regular expression pattern matching parts of the
+Options resources are checked in the order they are specified in the
+FileSet until the first one that matches. Once one matches, the
+compression and other flags within the Options specification will
+apply to the pattern matched.
+
+A key point is that in the absence of an Option or no other Option is
+matched, every file is accepted for backing up. This means that if
+you want to exclude something, you must explicitly specify an Option
+with an {\bf exclude = yes} and some pattern matching.
 
 Once Bacula determines that the Options resource matches the file under
 consideration, that file will be saved without looking at any other Options
 resources that may be present.  This means that any wild cards must appear
 before an Options resource without wild cards.
 
-If for some reason, Bacula applies all the Options resources to a file
-under consideration for backup, but there are no matches (generally because
-of wild cards that don't match), Bacula as a default will then backup the
-file.  This is quite logical if you consider the case of no Options, where
-you want everything to be backed up.  
+If for some reason, Bacula checks all the Options resources to a file under
+consideration for backup, but there are no matches (generally because of wild
+cards that don't match), Bacula as a default will then backup the file.  This
+is quite logical if you consider the case of no Options clause is specified,
+where you want everything to be backed up, and it is important to keep in mind
+when excluding as mentioned above.
+
+However, one additional point is that in the case that no match was found,
+Bacula will use the options found in the last Options resource.  As a
+consequence, if you want a particular set of "default" options, you should put
+them in an Options resource after any other Options.
 
-However, one additional point is that
-in the case that no match was found, Bacula will use the options found in
-the last Options resource.  As a consequence, if you want a particular set
-of ``default'' options, you should put them in an Options resource after
-any other Options.
+It is a good idea to put all your wild-card and regex expressions inside
+double quotes to prevent conf file scanning problems.
 
 This is perhaps a bit overwhelming, so there are a number of examples included 
 below to illustrate how this works.
@@ -151,51 +217,60 @@ The directives within an Options resource may be one of the following:
 \begin{description}
 
 \item [compression=GZIP]
-\index[fd]{compression }
-   All files saved will be software compressed using the GNU ZIP compression
-   format. The  compression is done on a file by file basis by the File daemon. 
-   If there is a problem reading the tape in a  single record of a file, it will
-   at most affect that file and none  of the other files on the tape. Normally
-   this option is {\bf not} needed  if you have a modern tape drive as the drive
-   will do its own  compression. In fact, if you specify software compression at
-   the same time you have hardware compression turned on, your files  may
-   actually take more space on the volume.  
-
-   Software compression is very important if you are writing  your Volumes to a
-   file, and it can also be helpful if you have a fast computer but a slow
-   network, otherwise it is generally better to rely your tape drive's hardware
-   compression. As noted above, it is not generally a good idea to do both software 
-   and hardware compression.
-
-   Specifying {\bf GZIP} uses the default compression level six (i.e. {\bf GZIP}
-   is identical to {\bf GZIP6}). If you  want a different compression level (1
-   through 9), you can specify  it by appending the level number with no
-   intervening spaces  to {\bf GZIP}. Thus {\bf compression=GZIP1} would give
-   minimum  compression but the fastest algorithm, and {\bf compression=GZIP9} 
-   would give the highest level of compression, but requires more  computation.
-   According to the GZIP documentation, compression levels  greater than 6
-   generally give very little extra compression and are rather CPU intensive. 
+\index[dir]{compression}
+\index[dir]{Directive!compression}
+   All files saved will be software compressed using the GNU ZIP
+   compression format.  The compression is done on a file by file basis by
+   the File daemon.  If there is a problem reading the tape in a single
+   record of a file, it will at most affect that file and none of the other
+   files on the tape.  Normally this option is {\bf not} needed if you have
+   a modern tape drive as the drive will do its own compression.  In fact,
+   if you specify software compression at the same time you have hardware
+   compression turned on, your files may actually take more space on the
+   volume.
+
+   Software compression is very important if you are writing your Volumes
+   to a file, and it can also be helpful if you have a fast computer but a
+   slow network, otherwise it is generally better to rely your tape drive's
+   hardware compression.  As noted above, it is not generally a good idea
+   to do both software and hardware compression.
+
+   Specifying {\bf GZIP} uses the default compression level 6 (i.e.  {\bf
+   GZIP} is identical to {\bf GZIP6}).  If you want a different compression
+   level (1 through 9), you can specify it by appending the level number
+   with no intervening spaces to {\bf GZIP}.  Thus {\bf compression=GZIP1}
+   would give minimum compression but the fastest algorithm, and {\bf
+   compression=GZIP9} would give the highest level of compression, but
+   requires more computation.  According to the GZIP documentation,
+   compression levels greater than six generally give very little extra
+   compression and are rather CPU intensive.
 
 \item [signature=SHA1]
-\index[fd]{signature }
-   An SHA1 signature will be computed for all  The SHA1 algorithm is purported to
-   be some  what slower than the MD5 algorithm, but at the same time is 
-   significantly better from a cryptographic point of view (i.e.  much fewer
-   collisions, much lower probability of being hacked.)  It adds four more bytes
-   than the MD5 signature.  We strongly recommend that either this option  or MD5
-   be specified as a default for all files. Note, only  one of the two options
-   MD5 or SHA1 can be computed for any file. 
+\index[dir]{signature}
+\index[dir]{SHA1}
+\index[dir]{Directive!signature}
+   An SHA1 signature will be computed for all The SHA1 algorithm is
+   purported to be some what slower than the MD5 algorithm, but at the same
+   time is significantly better from a cryptographic point of view (i.e.
+   much fewer collisions, much lower probability of being hacked.) It adds
+   four more bytes than the MD5 signature.  We strongly recommend that
+   either this option or MD5 be specified as a default for all files.
+   Note, only one of the two options MD5 or SHA1 can be computed for any
+   file.
 
 \item [signature=MD5]
-   \index[fd]{signature }
-   An MD5 signature will be computed for all  files saved. Adding this option
-   generates about 5\% extra overhead  for each file saved. In addition to the
-   additional CPU time,  the MD5 signature adds 16 more bytes per file to your
-   catalog.  We strongly recommend that this option or the SHA1 option  be
-   specified as a default for all files. 
+\index[dir]{signature}
+\index[dir]{MD5}
+\index[dir]{Directive!signature}
+   An MD5 signature will be computed for all files saved.  Adding this
+   option generates about 5\% extra overhead for each file saved.  In
+   addition to the additional CPU time, the MD5 signature adds 16 more
+   bytes per file to your catalog.  We strongly recommend that this option
+   or the SHA1 option be specified as a default for all files.
 
 \item [verify=\lt{}options\gt{}]
-\index[fd]{verify }
+\index[dir]{verify}
+\index[dir]{Directive!verify}
    The options letters specified are used  when running a {\bf Verify
    Level=Catalog} as well as the  {\bf DiskToCatalog} level job. The options
    letters may be any  combination of the following:  
@@ -229,7 +304,7 @@ The directives within an Options resource may be one of the following:
       \item {\bf c}
       compare the change time (st\_ctime)  
 
-      \item {\bf s}
+      \item {\bf d}
       report file size decreases  
 
       \item {\bf 5}
@@ -244,45 +319,144 @@ The directives within an Options resource may be one of the following:
    inodes, number  of links, size, and MD5 changes. 
 
 \item [onefs=yes|no]
-\index[fd]{onefs }
-   If set to {\bf yes} (the default), {\bf Bacula}  will remain on a single file
-   system. That is it will not backup  file systems that are mounted on a
-   subdirectory.  If you wish to backup multiple filesystems, you can  explicitly
-   list each file system you want saved.  Otherwise, if you set the onefs option
+\index[dir]{onefs}
+\index[dir]{Directive!onefs}
+   If set to {\bf yes} (the default), {\bf Bacula} will remain on a single
+   file system.  That is it will not backup file systems that are mounted
+   on a subdirectory.  If you are using a *nix system, you may not even be
+   aware that there are several different filesystems as they are often
+   automatically mounted by the OS (e.g.  /dev, /net, /sys, /proc, ...).
+   With Bacula 1.38.0 or later, it will inform you when it decides not to
+   traverse into another filesystem.  This can be very useful if you forgot
+   to backup a particular partition.  An example of the informational
+   message in the job report is:
+
+\footnotesize
+\begin{verbatim}
+rufus-fd: /misc is a different filesystem. Will not descend from / into /misc
+rufus-fd: /net is a different filesystem. Will not descend from / into /net
+rufus-fd: /var/lib/nfs/rpc_pipefs is a different filesystem. Will not descend from /var/lib/nfs into /var/lib/nfs/rpc_pipefs
+rufus-fd: /selinux is a different filesystem. Will not descend from / into /selinux
+rufus-fd: /sys is a different filesystem. Will not descend from / into /sys
+rufus-fd: /dev is a different filesystem. Will not descend from / into /dev
+rufus-fd: /home is a different filesystem. Will not descend from / into /home
+\end{verbatim}
+\normalsize
+
+   Note: in previous versions of Bacula, the above message was of the form: 
+
+\footnotesize
+\begin{verbatim}
+Filesystem change prohibited. Will not descend into /misc
+\end{verbatim}
+\normalsize
+
+   If you wish to backup multiple filesystems, you can  explicitly
+   list each filesystem you want saved.  Otherwise, if you set the onefs option
    to {\bf no}, Bacula will backup  all mounted file systems (i.e. traverse mount
    points) that  are found within the {\bf FileSet}. Thus if  you have NFS or
    Samba file systems mounted on a directory listed  in your FileSet, they will
    also be backed up. Normally, it is  preferable to set {\bf onefs=yes} and to
    explicitly name  each filesystem you want backed up. Explicitly naming  the
    filesystems you want backed up avoids the possibility  of getting into a
-   infinite loop recursing filesystems.  See the example below for more details. 
+   infinite loop recursing filesystems.  Another possibility is to 
+   use {\bf onefs=no} and to set {\bf fstype=ext2, ...}.             
+   See the example below for more details. 
 
-\label{portable}
+   If you think that Bacula should be backing up a particular directory
+   and it is not, and you have {\bf onefs=no} set, before you complain,
+   please do:
+
+\footnotesize
+\begin{verbatim}
+  stat /
+  stat <filesystem>
+\end{verbatim}
+\normalsize
+
+where you replace {\bf filesystem} with the one in question.  If the 
+{\bf Device:} number is different for / and for your filesystem, then they
+are on different filesystems.  E.g.
+\footnotesize
+\begin{verbatim}
+stat /
+  File: `/'
+  Size: 4096            Blocks: 16         IO Block: 4096   directory
+Device: 302h/770d       Inode: 2           Links: 26
+Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
+Access: 2005-11-10 12:28:01.000000000 +0100
+Modify: 2005-09-27 17:52:32.000000000 +0200
+Change: 2005-09-27 17:52:32.000000000 +0200
+
+stat /net
+  File: `/home'
+  Size: 4096            Blocks: 16         IO Block: 4096   directory
+Device: 308h/776d       Inode: 2           Links: 7
+Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
+Access: 2005-11-10 12:28:02.000000000 +0100
+Modify: 2005-11-06 12:36:48.000000000 +0100
+Change: 2005-11-06 12:36:48.000000000 +0100
+\end{verbatim}
+\normalsize
+
+   Also be aware that even if you include {\bf /home} in your list
+   of files to backup, as you most likely should, you will get the
+   informational message that  "/home is a different filesystem" when 
+   Bacula is processing the {\bf /} directory.  This message does not
+   indicate an error. This message means that while examining the 
+   {\bf File =} referred to in the second part of the message, Bacula will 
+   not descend into the directory mentioned in the first part of the message.
+   However, it is possible that the separate filesystem will be backed up 
+   despite the message. For example, consider the following FileSet:
+
+\footnotesize
+\begin{verbatim}
+  File = /
+  File = /var
+\end{verbatim}
+\normalsize
+
+   where {\bf /var} is a separate filesystem.  In this example, you will get a
+   message saying that Bacula will not decend from {\bf /} into {\bf /var}.  But 
+   it is important to realise that Bacula will descend into {\bf /var} from the 
+   second File directive shown above.  In effect, the warning is bogus,
+   but it is supplied to alert you to possible omissions from your FileSet. In 
+   this example, {\bf /var} will be backed up.  If you changed the FileSet such 
+   that it did not specify {\bf /var}, then {\bf /var} will not be backed up.
+
+   
 
+
+\label{portable}
 \item [portable=yes|no]
-\index[dir]{portable }
-   If set to {\bf yes} (default is  {\bf no}), the Bacula File daemon will backup
-   Win32 files  in a portable format, but not all Win32 file attributes  will be
-   saved and restored. By default, this option is set to  {\bf no}, which means
-   that on Win32 systems, the data will  be backed up using Windows API calls and
-   on WinNT/2K/XP,  all the security and ownership attributes will be properly
-   backed up  (and restored). However this format is not portable to other 
-   systems -- e.g. Unix, Win95/98/Me. When backing up Unix systems, this  option
-   is ignored, and unless you have a specific need to  have portable backups, we
-   recommend accept the default  ({\bf no}) so that the maximum information
-   concerning  your files is saved. 
+\index[dir]{portable}
+\index[dir]{Directive!portable}
+   If set to {\bf yes} (default is {\bf no}), the Bacula File daemon will
+   backup Win32 files in a portable format, but not all Win32 file
+   attributes will be saved and restored.  By default, this option is set
+   to {\bf no}, which means that on Win32 systems, the data will be backed
+   up using Windows API calls and on WinNT/2K/XP, all the security and
+   ownership attributes will be properly backed up (and restored).  However
+   this format is not portable to other systems -- e.g.  Unix, Win95/98/Me.
+   When backing up Unix systems, this option is ignored, and unless you
+   have a specific need to have portable backups, we recommend accept the
+   default ({\bf no}) so that the maximum information concerning your files
+   is saved.
 
 \item [recurse=yes|no]
-\index[fd]{recurse }
-   If set to {\bf yes} (the default),  Bacula will recurse (or descend) into all
-   subdirectories  found unless the directory is explicitly excluded  using an
-   {\bf exclude} definition.  If you set {\bf recurse=no}, Bacula will save the 
-   subdirectory entries, but not descend into the  subdirectories, and thus will
-   not save the files or  directories contained in the subdirectories. Normally,
-   you  will want the default ({\bf yes}). 
+\index[dir]{recurse}
+\index[dir]{Directive!recurse}
+   If set to {\bf yes} (the default), Bacula will recurse (or descend) into
+   all subdirectories found unless the directory is explicitly excluded
+   using an {\bf exclude} definition.  If you set {\bf recurse=no}, Bacula
+   will save the subdirectory entries, but not descend into the
+   subdirectories, and thus will not save the files or directories
+   contained in the subdirectories.  Normally, you will want the default
+   ({\bf yes}).
 
 \item [sparse=yes|no]
-\index[dir]{sparse }
+\index[dir]{sparse}
+\index[dir]{Directive!sparse}
    Enable special code that checks for sparse files such as created by
    ndbm.  The default is {\bf no}, so no checks are made for sparse files.
    You may specify {\bf sparse=yes} even on files that are not sparse file.
@@ -318,9 +492,9 @@ The directives within an Options resource may be one of the following:
    really sparse.
 
 \label{readfifo}
-
 \item [readfifo=yes|no]
-\index[fd]{readfifo }
+\index[dir]{readfifo}
+\index[dir]{Directive!readfifo}
    If enabled, tells the Client to read the data on a backup and write the
    data on a restore to any FIFO (pipe) that is explicitly mentioned in the
    FileSet.  In this case, you must have a program already running that
@@ -330,8 +504,40 @@ The directives within an Options resource may be one of the following:
    FIFO. When this is not enabled (default), the Client simply saves the
    directory entry for the FIFO.
 
+   Unfortunately, when Bacula runs a RunBeforeJob, it waits until that
+   script terminates, and if the script accesses the FIFO to write   
+   into the it, the Bacula job will block and everything will stall.
+   However, Vladimir Stavrinov as supplied tip that allows this feature   
+   to work correctly.  He simply adds the following to the beginning
+   of the RunBeforeJob script:
+
+\begin{verbatim}
+   exec > /dev/null
+\end{verbatim}
+
+\item [noatime=yes|no]
+\index[dir]{noatime}
+\index[dir]{Directive!noatime}
+   If enabled, and if your Operating System supports the O\_NOATIME file
+   open flag, Bacula will open all files to be backed up with this option.
+   It makes it possible to read a file without updating the inode atime
+   (and also without the inode ctime update which happens if you try to set
+   the atime back to its previous value).  It also prevents a race
+   condition when two programs are reading the same file, but only one does
+   not want to change the atime.  It's most useful for backup programs and
+   file integrity checkers (and bacula can fit on both categories).
+
+   This option is particularly useful for sites where users are sensitive
+   to their MailBox file access time.  It replaces both the {\bf keepatime}
+   option without the inconveniences of that option (see below).
+
+   If your Operating System does not support this option, it will be
+   silently ignored by Bacula.
+
+
 \item [mtimeonly=yes|no]
-\index[dir]{mtimeonly }
+\index[dir]{mtimeonly}
+\index[dir]{Directive!mtimeonly}
    If enabled, tells the Client that the selection of files during
    Incremental and Differential backups should based only on the st\_mtime
    value in the stat() packet.  The default is {\bf no} which means that
@@ -340,16 +546,57 @@ The directives within an Options resource may be one of the following:
    to use this option.
 
 \item [keepatime=yes|no]
-\index[dir]{keepatime }
+\index[dir]{keepatime}
+\index[dir]{Directive!keepatime}
    The default is {\bf no}.  When enabled, Bacula will reset the st\_atime
    (access time) field of files that it backs up to their value prior to
    the backup.  This option is not generally recommended as there are very
    few programs that use st\_atime, and the backup overhead is increased
    because of the additional system call necessary to reset the times.
+   However, for some files, such as mailboxes, when Bacula backs up the
+   file, the user will notice that someone (Bacula) has accessed the
+   file. In this, case keepatime can be useful.
    (I'm not sure this works on Win32).
 
+   Note, if you use this feature, when Bacula resets the access time, the
+   change time (st\_ctime) will automatically be modified by the system,
+   so on the next incremental job, the file will be backed up even if
+   it has not changed. As a consequence, you will probably also want
+   to use {\bf mtimeonly = yes} as well as keepatime (thanks to
+   Rudolf Cejka for this tip).
+
+\item [checkfilechanges=yes|no]
+\index[dir]{checkfilechanges}
+\index[dir]{Directive!checkfilechanges}
+   On versions 2.0.4 or greater, 
+   if enabled, the Client will checks size, age of each file after 
+   their backup to see if they have changed during backup. If time 
+   or size mismatch, an error will raise.
+
+\begin{verbatim}
+ zog-fd: Client1.2007-03-31_09.46.21 Error: /tmp/test mtime changed during backup.
+\end{verbatim}
+
+   In general, it is recommended to use this option.
+
+\item [hardlinks=yes|no]
+\index[dir]{hardlinks}
+\index[dir]{Directive!hardlinks}
+   When enabled (default), this directive will cause hard links to be 
+   backed up. However, the File daemon keeps track of hard linked files and
+   will backup the data only once. The process of keeping track of the 
+   hard links can be quite expensive if you have lots of them (tens of
+   thousands or more). This doesn't occur on normal Unix systems, but if
+   you use a program like BackupPC, it can create hundreds of thousands, or
+   even millions of hard links. Backups become very long and the File daemon
+   will consume a lot of CPU power checking hard links.  In such a case,
+   set {\bf hardlinks=no} and hard links will not be backed up.  Note, using
+   this option will most likely backup more data and on a restore the file
+   system will not be restored identically to the original.
+
 \item [wild=\lt{}string\gt{}]
-\index[dir]{wild }
+\index[dir]{wild}
+\index[dir]{Directive!wild}
    Specifies a wild-card string to be applied to the filenames and
    directory names.  Note, if {\bf Exclude} is not enabled, the wild-card
    will select which files are to be included.  If {\bf Exclude=yes} is
@@ -358,52 +605,115 @@ The directives within an Options resource may be one of the following:
    in turn until the first one that matches.  Note, if you exclude a
    directory, no files or directories below it will be matched.
 
-\item [wildfile=\lt{}string\gt{}]
-\index[dir]{wildfile }
-   Specifies a wild-card string to be applied to filenames only.  No
-   directories will be matched by this directive.  Note, if {\bf Exclude}
-   is not enabled, the wild-card will select which files are to be
-   included.  If {\bf Exclude=yes} is specified, the wild-card will select
-   which files are to be excluded.  Multiple wild-card directives may be
-   specified, and they will be applied in turn until the first one that
-   matches.
+   You may want to test your expressions prior to running your
+   backup by using the bwild program. Please see the
+   \ilink{Utilities}{bwild} chapter of this manual for
+   more. You can also test your full FileSet definition by using
+   the \ilink{estimate}{estimate} command in the Console        
+   chapter of this manual.
+   It is recommended to enclose the string in double quotes.
 
 \item [wilddir=\lt{}string\gt{}]
-\index[dir]{wilddir }
+\index[dir]{wilddir}
+\index[dir]{Directive!wilddir}
    Specifies a wild-card string to be applied to directory names only.  No
    filenames will be matched by this directive.  Note, if {\bf Exclude} is
-   not enabled, the wild-card will select directories files are to be
+   not enabled, the wild-card will select directories to be
    included.  If {\bf Exclude=yes} is specified, the wild-card will select
-   which files are to be excluded.  Multiple wild-card directives may be
+   which directories are to be excluded.  Multiple wild-card directives may be
    specified, and they will be applied in turn until the first one that
    matches.  Note, if you exclude a directory, no files or directories
    below it will be matched.
 
+   It is recommended to enclose the string in double quotes.
+
+   You may want to test your expressions prior to running your
+   backup by using the bwild program. Please see the
+   \ilink{Utilities}{bwild} chapter of this manual for
+   more. You can also test your full FileSet definition by using
+   the \ilink{estimate}{estimate} command in the Console        
+   chapter of this manual.
+   An example of excluding with the WildDir option on Win32 machines is    
+   presented below.
+
+\item [wildfile=\lt{}string\gt{}]
+\index[dir]{wildfile}
+\index[dir]{Directive!wildfile}
+   Specifies a wild-card string to be applied to non-directories. That
+   is no directory entries will be matched by this directive.
+   However, note that the match is done against the full path and filename,
+   so your wild-card string must take into account that filenames
+   are preceded by the full path.
+   If {\bf Exclude}
+   is not enabled, the wild-card will select which files are to be
+   included.  If {\bf Exclude=yes} is specified, the wild-card will select
+   which files are to be excluded.  Multiple wild-card directives may be
+   specified, and they will be applied in turn until the first one that
+   matches.
+
+   It is recommended to enclose the string in double quotes.
+
+   You may want to test your expressions prior to running your
+   backup by using the bwild program. Please see the
+   \ilink{Utilities}{bwild} chapter of this manual for
+   more. You can also test your full FileSet definition by using
+   the \ilink{estimate}{estimate} command in the Console        
+   chapter of this manual.
+   An example of excluding with the WildFile option on Win32 machines is    
+   presented below.
+
 
 \item [regex=\lt{}string\gt{}]
-\index[dir]{regex }
+\index[dir]{regex}
+\index[dir]{Directive!regex}
    Specifies a POSIX extended regular expression to be applied to the
-   filenames and directory names. 
-   This directive is available in version 1.35 and later.  If {\bf
+   filenames and directory names, which include the full path.  If {\bf
    Exclude} is not enabled, the regex will select which files are to be
    included.  If {\bf Exclude=yes} is specified, the regex will select
    which files are to be excluded.  Multiple regex directives may be
    specified within an Options resource, and they will be applied in turn
-   until the first one that matches. Note, if you exculde a
-   directory, no files or directories below it will be matched.
+   until the first one that matches.  Note, if you exclude a directory, no
+   files or directories below it will be matched.
+
+   It is recommended to enclose the string in double quotes.
+
+   The regex libraries differ from one operating system to
+   another, and in addition, regular expressions are complicated,
+   so you may want to test your expressions prior to running your
+   backup by using the bregex program. Please see the
+   \ilink{Utilities}{bwild} chapter of this manual for
+   more. You can also test your full FileSet definition by using
+   the \ilink{estimate}{estimate} command in the Console        
+   chapter of this manual.
+
 
 \item [regexfile=\lt{}string\gt{}]
-\index[dir]{regexfile }
-   Specifies a POSIX extended regular expression to be applied to filenames
-   only.  No directories will be matched by this directive.  Note, if {\bf
-   Exclude} is not enabled, the regex will select which files are to be
-   included.  If {\bf Exclude=yes} is specified, the regex will select
-   which files are to be excluded.  Multiple regex directives may be
+\index[dir]{regexfile}
+\index[dir]{Directive!regexfile}
+   Specifies a POSIX extended regular expression to be applied to
+   non-directories. No directories will be matched by this directive.  
+   However, note that the match is done against the full path and
+   filename, so your regex string must take into account that filenames
+   are preceded by the full path.
+   If {\bf Exclude} is not enabled, the regex will select which files are
+   to be included.  If {\bf Exclude=yes} is specified, the regex will
+   select which files are to be excluded.  Multiple regex directives may be
    specified, and they will be applied in turn until the first one that
    matches.
 
+   It is recommended to enclose the string in double quotes.
+
+   The regex libraries differ from one operating system to
+   another, and in addition, regular expressions are complicated,
+   so you may want to test your expressions prior to running your
+   backup by using the bregex program. Please see the
+   \ilink{Utilities}{bregex} chapter of this manual for
+   more.
+
+
 \item [regexdir=\lt{}string\gt{}]
-\index[dir]{regexdir }
+\index[dir]{regexdir}
+\index[dir]{Directive!regexdir}
    Specifies a POSIX extended regular expression to be applied to directory
    names only.  No filenames will be matched by this directive.  Note, if
    {\bf Exclude} is not enabled, the regex will select directories
@@ -413,19 +723,30 @@ The directives within an Options resource may be one of the following:
    until the first one that matches.  Note, if you exclude a directory, no
    files or directories below it will be matched.
 
+   It is recommended to enclose the string in double quotes.
+
+   The regex libraries differ from one operating system to
+   another, and in addition, regular expressions are complicated,
+   so you may want to test your expressions prior to running your
+   backup by using the bregex program. Please see the
+   \ilink{Utilities}{bregex} chapter of this manual for
+   more.
+
+
 \item [exclude=yes|no]
-\index[dir]{exclude }
-   The default is {\bf no}. When  enabled, any files matched within the Options
-   will be  excluded from the backup. 
+\index[dir]{exclude}
+\index[dir]{Directive!exclude}
+   The default is {\bf no}.  When enabled, any files matched within the
+   Options will be excluded from the backup.
 
 \label{ACLSupport}
-
 \item [aclsupport=yes|no]
-\index[dir]{aclsupport }
+\index[dir]{aclsupport}
+\index[dir]{Directive!aclsupport}
    The default is {\bf no}.  If this option is set to yes, and you have the
    POSIX {\bf libacl} installed on your system, Bacula will backup the file
    and directory UNIX Access Control Lists (ACL) as defined in IEEE Std
-   1003.1e draft 17 and ``POSIX.1e'' (abandoned).  This feature is
+   1003.1e draft 17 and "POSIX.1e" (abandoned).  This feature is
    available on UNIX only and depends on the ACL library.  Bacula is
    automatically compiled with ACL support if the {\bf libacl} library is
    installed on your system (shown in config.out).  While restoring the
@@ -436,14 +757,16 @@ The directives within an Options resource may be one of the following:
    (perhaps reiserfs) that does not have ACLs, the ACLs will be ignored.
 
 \item [ignore case=yes|no]
-\index[dir]{ignore case }
-   The default is {\bf no}, except on Windows systems where the default
-   is {\bf yes}. When this directive is set to {\bf yes} all the case
-   of character will be ignored in wild-card and regex comparisons.
-   That is an uppercase A will match a lowercase a.
+\index[dir]{ignore case}
+\index[dir]{Directive!ignore case}
+   The default is {\bf no}.  On Windows systems, you will almost surely
+   want to set this to {\bf yes}.  When this directive is set to {\bf yes}
+   all the case of character will be ignored in wild-card and regex
+   comparisons.  That is an uppercase A will match a lowercase a.
 
 \item [fstype=filesystem-type]
-\index[dir]{fstype }
+\index[dir]{fstype}
+\index[dir]{Directive!fstype}
    This option allows you to select files and directories by the
    filesystem type.  The permitted filesystem-type names are:
 
@@ -455,28 +778,40 @@ The directives within an Options resource may be one of the following:
    the type specified on the fstype directive does not match the
    filesystem for a particular directive, that directory will not be
    backed up.  This directive can be used to prevent backing up
-   non-local filesystems.
+   non-local filesystems. Normally, when you use this directive, you
+   would also set {\bf onefs=no} so that Bacula will traverse filesystems.
 
    This option is not implemented in Win32 systems.
 
 
 \item [hfsplussupport=yes|no]
-\index[dir]{hfsplussupport }
+\index[dir]{hfsplussupport}
+\index[dir]{Directive!hfsplussupport}
    This option allows you to turn on support for Mac OSX HFS plus 
    finder information.
 
+\item [strippath=\lt{}integer\gt{}]
+\index[dir]{strippath}
+\index[dir]{Directive!strippath}
+   This option will cause {\bf integer} paths to be stripped from
+   the front of the full path/filename being backed up. This can
+   be useful if you are migrating data from another vendor or if
+   you have taken a snapshot into some subdirectory.  This directive
+   can cause your filenames to be overlayed with regular backup data,
+   so should be used only by experts and with great care.
 \end{description}
 
 {\bf \lt{}file-list\gt{}} is a list of directory and/or filename names
 specified with a {\bf File =} directive. To include names containing spaces,
-enclose the name between double-quotes. 
+enclose the name between double-quotes. Wild-cards are not interpreted
+in file-lists. They can only be specified in Options resources.
 
 There are a number of special cases when specifying directories and files in a
 {\bf file-list}. They are: 
 
 \begin{itemize}
 \item Any name preceded by an at-sign (@) is assumed to be the  name of a
-   file, which contains a list of files each preceded by a ``File =''.  The
+   file, which contains a list of files each preceded by a "File =".  The
    named file is read once when the configuration file is parsed during the
    Director startup.  Note, that the file is read on the Director's machine
    and not on the Client's.  In fact, the @filename can appear anywhere
@@ -498,22 +833,37 @@ Include {
    a program.  This program will be executed on the Director's machine at
    the time the Job starts (not when the Director reads the configuration
    file), and any output from that program will be assumed to be a list of
-   files or directories, one per line, to be included.  This allows you to
-   have a job that for example includes all the local partitions even if
-   you change the partitioning by adding a disk.  In general, you will need
-   to prefix your command or commands with a {\bf sh -c} so that they are
-   invoked by a shell.  This will not be the case if you are invoking a
-   script as in the second example below.  Also, you must take care to
-   escape (precede with a \textbackslash{}) wild-cards, shell character,
-   and to ensure that any spaces in your command are escaped as well.  If
-   you use a single quotes (') within a double quote (``), Bacula will
-   treat everything between the single quotes as one field so it will not
-   be necessary to escape the spaces.  In general, getting all the quotes
-   and escapes correct is a real pain as you can see by the next example.
-   As a consequence, it is often easier to put everything in a file and
-   simply use the file name within Bacula.  In that case the {\bf sh -c}
-   will not be necessary providing the first line of the file is {\bf
-   \#!/bin/sh}.
+   files or directories, one per line, to be included. Before submitting the 
+   specified command bacula will performe 
+   \ilink{character substitution}{character substitution}.
+
+   This allows you to have a job that, for example, includes all the local
+   partitions even if you change the partitioning by adding a disk.  The
+   examples below show you how to do this.  However, please note two
+   things: \\
+   1.  if you want the local filesystems, you probably should be
+   using the new {\bf fstype} directive, which was added in version 1.36.3 
+   and set {\bf onefs=no}.
+   \\
+
+   2.  the exact syntax of the command needed in the examples below is very
+   system dependent.  For example, on recent Linux systems, you may need to
+   add the -P option, on FreeBSD systems, the options will be different as
+   well.
+
+   In general, you will need to prefix your command or commands with a {\bf
+   sh -c} so that they are invoked by a shell.  This will not be the case
+   if you are invoking a script as in the second example below.  Also, you
+   must take care to escape (precede with a \textbackslash{}) wild-cards,
+   shell character, and to ensure that any spaces in your command are
+   escaped as well.  If you use a single quotes (') within a double quote
+   ("), Bacula will treat everything between the single quotes as one field
+   so it will not be necessary to escape the spaces.  In general, getting
+   all the quotes and escapes correct is a real pain as you can see by the
+   next example.  As a consequence, it is often easier to put everything in
+   a file and simply use the file name within Bacula.  In that case the
+   {\bf sh -c} will not be necessary providing the first line of the file
+   is {\bf \#!/bin/sh}.
 
    As an  example: 
 
@@ -528,13 +878,14 @@ Include {
 \end{verbatim}
 \normalsize
 
-   will produce a list of all the local partitions on a RedHat Linux  system.
+   will produce a list of all the local partitions on a Red Hat Linux system.
    Note, the above line was split, but should normally  be written on one line. 
    Quoting is a real problem because you must quote for Bacula  which consists of
-   preceding every \textbackslash{} and every '' with a \textbackslash{}, and 
+   preceding every \textbackslash{} and every " with a \textbackslash{}, and 
    you must also quote for the shell command. In the end, it is probably  easier
    just to execute a small file with: 
 
+
 \footnotesize
 \begin{verbatim}
 Include {
@@ -580,8 +931,24 @@ FileSet {
    to  {\bf ext3} (or your preferred filesystem type), and you will be in 
    business.  
 
+   If you know what filesystems you have mounted on your system, e.g. 
+   for Red Hat Linux normally only ext2 and ext3, you can backup
+   all local filesystems using something like:
+
+\footnotesize
+\begin{verbatim}
+Include {
+   Options { signature = SHA1; onfs=no; fstype=ext2 }
+   File = /
+}
+\end{verbatim}
+\normalsize
+
+
 \item Any file-list item preceded by a less-than sign (\lt{})  will be taken
-   to be a file. This file will be read on the  Director's machine at the time
+   to be a file. This file will be read on the Director's machine (see
+   below for doing it on the Client machine) at the time
    the Job starts, and the  data will be assumed to be a list of directories or
    files,  one per line, to be included. The names should start in  column 1 and
    should not be quoted even if they contain  spaces. This feature allows you to
@@ -632,7 +999,7 @@ Include {
    Ludovic Strappazon has pointed out that this feature can be  used to backup a
    full Microsoft Windows disk. Simply boot into  the system using a Linux Rescue
    disk, then load a statically  linked Bacula as described in the 
-   \ilink{ Disaster Recovery Using Bacula}{_ChapterStart38} chapter of
+   \ilink{ Disaster Recovery Using Bacula}{RescueChapter} chapter of
    this manual. Then  save the whole disk partition. In the case of a disaster,
    you  can then restore the desired partition by again booting with  the rescue
    disk and doing a restore of the partition. 
@@ -652,34 +1019,41 @@ Include {
 \end{verbatim}
 \normalsize
 
-   if {\bf /home/abc/fifo} is a fifo device, Bacula will  open the fifo, read it,
-   and store all data thus obtained  on the Volume. Please note, you must have a
-   process on  the system that is writing into the fifo, or Bacula will  hang,
-   and after one minute of waiting, Bacula will give up  and go on to the next
-   file. The data read can be anything  since Bacula treats it as a stream.  
-
-   This feature can be an excellent way to do a  ``hot'' backup of a very large
-   database. You can  use the {\bf RunBeforeJob} to create the fifo and to  start
-   a program that dynamically reads your database and  writes it to the fifo.
-   Bacula will then write it to the  Volume.  
-
-   During the restore operation, the inverse is true,  after Bacula creates the
-   fifo if there was any data stored  with it (no need to explicitly list it or
-   add any  options), that data will be written back to the fifo. As  a
-   consequence, if any such FIFOs exist in the fileset to  be restored, you must
-   ensure that there is a reader  program or Bacula will block, and after one
-   minute, Bacula  will time out the write to the fifo and move on to the  next
-   file. 
+   if {\bf /home/abc/fifo} is a fifo device, Bacula will open the fifo,
+   read it, and store all data thus obtained on the Volume.  Please note,
+   you must have a process on the system that is writing into the fifo, or
+   Bacula will hang, and after one minute of waiting, Bacula will give up
+   and go on to the next file.  The data read can be anything since Bacula
+   treats it as a stream.
+
+   This feature can be an excellent way to do a "hot" backup of a very
+   large database.  You can use the {\bf RunBeforeJob} to create the fifo
+   and to start a program that dynamically reads your database and writes
+   it to the fifo.  Bacula will then write it to the Volume.  Be sure to
+   read the \ilink{readfifo section}{readfifo} that gives a
+   tip to ensure that the RunBeforeJob does not block Bacula.
+
+   During the restore operation, the inverse is true, after Bacula creates
+   the fifo if there was any data stored with it (no need to explicitly
+   list it or add any options), that data will be written back to the fifo.
+   As a consequence, if any such FIFOs exist in the fileset to be restored,
+   you must ensure that there is a reader program or Bacula will block, and
+   after one minute, Bacula will time out the write to the fifo and move on
+   to the next file.
+
+\item A file-list may not contain wild-cards. Use directives in the
+   Options resource if you wish to specify wild-cards or regular expression
+   matching.
 \end{itemize}
 
-\subsubsection*{FileSet Examples}
+\section{FileSet Examples}
 \index[general]{Examples!FileSet }
 \index[general]{FileSet Examples}
-\addcontentsline{toc}{subsection}{FileSet Examples}
 
-The following is an example of a valid FileSet resource definition. Note, the
-first Include pulls in the contents of the file {\bf /etc/backup.list} when
-Bacula is started (i.e. the @). 
+The following is an example of a valid FileSet resource definition.  Note,
+the first Include pulls in the contents of the file {\bf /etc/backup.list}
+when Bacula is started (i.e.  the @), and that file must have each filename
+to be backed up preceded by a {\bf File =} and on a separate line.
 
 \footnotesize
 \begin{verbatim}
@@ -691,12 +1065,12 @@ FileSet {
       signature=SHA1
       Sparse = yes
     }
-    File = @/etc/backup.list
+    @/etc/backup.list
   }
   Include {
      Options {
-        wildfile = *.o
-        wildfile = *.exe
+        wildfile = "*.o"
+        wildfile = "*.exe"
         Exclude = yes
      }
      File = /root/myfile
@@ -728,12 +1102,12 @@ FileSet {
       signature=SHA1
       Sparse = yes
     }
-    File = @/etc/backup.list
+    @/etc/backup.list
   }
   Include {
      Options {
-        wildfile = *.o
-        wildfile = *.exe
+        wildfile = "*.o"
+        wildfile = "*.exe"
         Exclude = yes
      }
      File = /root/myfile
@@ -797,8 +1171,8 @@ FileSet {
     Options {
        wilddir = /proc
        wilddir = /tmp
-       wildfile = \.journal
-       wildfile = \.autofsck
+       wildfile = "/.journal"
+       wildfile = "/.autofsck"
        exclude = yes
     }
     File = /
@@ -828,9 +1202,9 @@ FileSet {
   Name = "Full Set"
   Include {                    !!!!!!!!!!!!
      Options {                    This
-        wildfile = *.Z            example
-        wildfile = *.gz           doesn't
-        Include = yes              work
+        wildfile = "*.Z"          example
+        wildfile = "*.gz"         doesn't
+                                  work
      }                          !!!!!!!!!!!!
      File = /myfile
   }
@@ -843,7 +1217,7 @@ that are not matched by the Options directives will automatically
 be backed up too (i.e. that is the default rule).
 
 To accomplish what we want, we must explicitly exclude all other files.
-We do this with the fillowing:
+We do this with the following:
 
 \footnotesize
 \begin{verbatim}
@@ -851,13 +1225,12 @@ FileSet {
   Name = "Full Set"
   Include {
      Options {
-        wildfile = *.Z
-        wildfile = *.gz
-        Include = yes
+        wildfile = "*.Z"
+        wildfile = "*.gz"
      }
      Options {
         Exclude = yes
-        RegexFile = "^.?*$"
+        RegexFile = ".*"
      }
      File = /myfile
   }
@@ -865,7 +1238,7 @@ FileSet {
 \end{verbatim}
 \normalsize
 
-The ``trick'' here was to add a RegexFile expression that matches
+The "trick" here was to add a RegexFile expression that matches
 all files. It does not match directory names, so all directories in
 /myfile will be backed up (the directory entry) and any *.Z and *.gz
 files contained in them. If you know that certain directories do
@@ -901,10 +1274,72 @@ you will be backing up an NFS mounted partition ({\bf /mnt/matou}), and since
 case, you will get yourself into a recursive loop and the backup will never
 end. 
 
-\subsubsection*{Backing up Raw Partitions}
+As a final example, let's say that you have only one or two 
+subdirectories of /home that you want to backup.  For example,
+you want to backup only subdirectories beginning with the letter
+a and the letter b -- i.e. /home/a* and /home/b*.  Now, you might first
+try:
+\footnotesize
+\begin{verbatim}
+FileSet {
+  Name = "Full Set"
+  Include {
+     Options {
+        wilddir = "/home/a*"
+        wilddir = "/home/b*"
+     }
+     File = /home
+  }
+}
+\end{verbatim}
+\normalsize
+
+The problem is that the above will include everything in /home.  To get
+things to work correctly, you need to start with the idea of exclusion
+instead of inclusion.  So, you could simply exclude all directories
+except the two you want to use:
+\footnotesize
+\begin{verbatim}
+FileSet {
+  Name = "Full Set"
+  Include {
+     Options {
+        RegexDir = "^/home/[c-z]"
+        exclude = yes
+     }
+     File = /home
+  }
+}
+\end{verbatim}
+\normalsize
+
+And assuming that all subdirectories start with a lowercase letter, this
+would work.
+
+An alternative would be to include the two subdirectories desired and
+exclude everything else:
+\footnotesize
+\begin{verbatim}
+FileSet {
+  Name = "Full Set"
+  Include {
+     Options {
+        wilddir = "/home/a*"
+        wilddir = "/home/b*"
+     }
+     Options {
+        RegexDir = ".*"
+        exclude = yes
+     }
+     File = /home
+  }
+}
+\end{verbatim}
+\normalsize
+
+\section{Backing up Raw Partitions}
 \index[general]{Backing up!Partitions }
 \index[general]{Backing up Raw Partitions }
-\addcontentsline{toc}{subsection}{Backing up Raw Partitions}
 
 The following FileSet definition will backup a raw partition: 
 
@@ -927,10 +1362,9 @@ mounted or is mounted read-only. If necessary, this can be done using the {\bf
 RunBeforeJob} directive. 
 
 
-\subsubsection*{Excluding Files and Directories}
+\section{Excluding Files and Directories}
 \index[general]{Directories!Excluding Files and }
 \index[general]{Excluding Files and Directories }
-\addcontentsline{toc}{subsubsection}{Excluding Files and Directories}
 
 You may also include full filenames or directory names in addition to using
 wild-cards and {\bf Exclude=yes} in the Options resource as specified above by
@@ -962,17 +1396,15 @@ FileSet {
 \normalsize
 
 \label{win32}
-
-\subsubsection*{Windows FileSets}
+\section{Windows FileSets}
 \index[general]{Windows FileSets }
 \index[general]{FileSets!Windows }
-\addcontentsline{toc}{subsection}{Windows FileSets}
 If you are entering Windows file names, the directory path may be preceded by
 the drive and a colon (as in c:). However, the path separators must be
 specified in Unix convention (i.e. forward slash (/)). If you wish to include
 a quote in a file name, precede the quote with a backslash
 (\textbackslash{}). For example you might use the following
-for a Windows machine to backup the ``My Documents'' directory: 
+for a Windows machine to backup the "My Documents" directory: 
 
 \footnotesize
 \begin{verbatim}
@@ -980,8 +1412,8 @@ FileSet {
   Name = "Windows Set"
   Include {
     Options {
-       WildFile = *.obj
-       WildFile = *.exe
+       WildFile = "*.obj"
+       WildFile = "*.exe"
        exclude = yes
      }
      File = "c:/My Documents"
@@ -995,14 +1427,14 @@ rules:
 
 \begin{itemize}
 \item Filenames are case sensitive, so you must use the correct case.  
-\item To exclude a directory, you must not have a trailing slash on the 
+\item To 2~exclude a directory, you must not have a trailing slash on the 
    directory name.  
-\item If you have spaces in your filename, you must enclose the entire name 
-   in double-quote characters (``). Trying to use a backslash before  the space
+\item I2~f you have spaces in your filename, you must enclose the entire name 
+   in double-quote characters ("). Trying to use a backslash before  the space
    will not work.  
-\item If you are using the old Exclude syntax (noted below), you may  not
-   specify a drive letter in the exclude. The new syntax noted  above should work
-   fine including driver letters. 
+\item If you are using the old Exclude syntax (noted below), you may not
+   specify a drive letter in the exclude.  The new syntax noted above
+   should work fine including driver letters.
 \end{itemize}
 
 Thanks to Thiago Lima for summarizing the above items for us. If you are
@@ -1022,7 +1454,6 @@ Full backup.
 \paragraph*{A Windows Example FileSet}
 \index[general]{FileSet!Windows Example }
 \index[general]{Windows Example FileSet }
-\addcontentsline{toc}{paragraph}{Windows Example FileSet}
 
 The following example was contributed by Russell Howe. Please note that
 for presentation purposes, the lines beginning with Data and Internet 
@@ -1131,28 +1562,43 @@ page, they should be written on a single line in real use.
 \paragraph*{Windows NTFS Naming Considerations}
 \index[general]{Windows NTFS Naming Considerations }
 \index[general]{Considerations!Windows NTFS Naming }
-\addcontentsline{toc}{paragraph}{Windows NTFS Naming Considerations}
 
-NTFS filenames containing Unicode characters (i.e. \gt{} 0xFF) cannot be
-explicitly named at the moment. You must include such names by naming a higher
-level directory or a drive letter that does not contain Unicode characters. 
+NTFS filenames containing Unicode characters should now be supported
+as of version 1.37.30 or later.
 
-\subsubsection*{Testing Your FileSet}
+\section{Testing Your FileSet}
 \index[general]{FileSet!Testing Your }
 \index[general]{Testing Your FileSet }
-\addcontentsline{toc}{subsection}{Testing Your FileSet}
 
 If you wish to get an idea of what your FileSet will really backup or if your
 exclusion rules will work correctly, you can test it by using the {\bf
 estimate} command in the Console program. See the 
-\ilink{estimate command}{estimate} in the Console chapter of this
-manual. 
+\ilink{estimate}{estimate} in the Console chapter of this
+manual.
+
+As an example, suppose you add the following test FileSet:
 
-\subsubsection*{The Old FileSet Resource}
-\index[general]{Resource!Old FileSet }
-\index[general]{Old FileSet Resource }
-\addcontentsline{toc}{subsection}{Old FileSet Resource}
+\footnotesize
+\begin{verbatim}
+FileSet {
+  Name = Test
+  Include {
+    File = /home/xxx/test
+    Options {
+       regex = ".*\.c$"
+    }
+  }
+}
+\end{verbatim}
+\normalsize
+
+You could then add some test files to the directory {\bf /home/xxx/test}
+and use the following command in the console:
+
+\footnotesize
+\begin{verbatim}
+estimate job=<any-job-name> listing client=<desired-client> fileset=Test
+\end{verbatim}
+\normalsize
 
-The old pre-version 1.34.3 FileSet Resource has been deprecated but may still
-work. You are encouraged to convert to using the new form since the old code
-will be removed sometime during 1.37 development. 
+to give you a listing of all files that match.