]> git.sur5r.net Git - bacula/docs/blobdiff - docs/manual/fileset.tex
Update the "Filesystem change prohibited. Will not descend into /misc"
[bacula/docs] / docs / manual / fileset.tex
index 2071f0e7e892e504e0abd18b4d39bb4ff8ad7b6c..c3b1c171a007467d41924826076134fe63bb4bde 100644 (file)
@@ -1,10 +1,10 @@
-%%
+-%
 %%
 
 \subsection*{The FileSet Resource}
 \label{FileSetResource}
-\index[general]{Resource!FileSet }
-\index[general]{FileSet Resource }
+\index[general]{Resource!FileSet}
+\index[general]{FileSet Resource}
 \addcontentsline{toc}{subsection}{FileSet Resource}
 
 The FileSet resource defines what files are to be included or excluded in a
@@ -22,25 +22,33 @@ Bacula will ensure that the next backup is always a Full save.
 \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]{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 backed
+   up.
+   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.
 
 \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 no}. This directive is effective
@@ -54,21 +62,25 @@ The name of the FileSet resource.  This directive is required.
    \lt{}file-list\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 [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
@@ -76,6 +88,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
@@ -131,28 +150,37 @@ 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.
@@ -165,51 +193,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 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.
 
 \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:  
@@ -258,45 +295,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.
@@ -332,9 +468,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
@@ -344,8 +480,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 inconvienences 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
@@ -354,7 +522,8 @@ 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
@@ -374,7 +543,8 @@ The directives within an Options resource may be one of the following:
 
 \item [hardlinks=yes|no]
 \index[dir]{hardlinks}
-   When enabled (default), this directive will cause hard inks to be 
+\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
@@ -387,7 +557,8 @@ The directives within an Options resource may be one of the following:
    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
@@ -395,21 +566,18 @@ The directives within an Options resource may be one of the following:
    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.
 
-\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{UtilitiesChapter}{Utilities} 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
@@ -418,35 +586,96 @@ The directives within an Options resource may be one of the following:
    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{UtilitiesChapter}{Utilities} 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{UtilitiesChapter}{Utilities} 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 exclude 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{UtilitiesChapter}{Utilities} 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{UtilitiesChapter}{Utilities} 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
@@ -455,17 +684,28 @@ The directives within an Options resource may be one of the following:
    regex 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.
 
+   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{UtilitiesChapter}{Utilities} 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
@@ -480,14 +720,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:
 
@@ -499,13 +741,15 @@ 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.
 
@@ -513,7 +757,8 @@ The directives within an Options resource may be one of the following:
 
 {\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: 
@@ -544,32 +789,33 @@ Include {
    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. 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.  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
+   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}.
+   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: 
 
@@ -591,6 +837,7 @@ Include {
    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 {
@@ -636,6 +883,21 @@ 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 RedHat Linux normally only ext2 and ext3, you can backup
+   all local fileystems 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
    the Job starts, and the  data will be assumed to be a list of directories or
@@ -688,7 +950,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}{_ChapterRescue} 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. 
@@ -708,24 +970,31 @@ 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}
@@ -733,10 +1002,10 @@ Include {
 \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 @), and that file must have each filename to be
-backed up preceded by a {\bf File =} and on a separate line. 
+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}
@@ -854,8 +1123,8 @@ FileSet {
     Options {
        wilddir = /proc
        wilddir = /tmp
-       wildfile = ".journal"
-       wildfile = ".autofsck"
+       wildfile = "/.journal"
+       wildfile = "/.autofsck"
        exclude = yes
     }
     File = /
@@ -887,7 +1156,7 @@ FileSet {
      Options {                    This
         wildfile = "*.Z"          example
         wildfile = "*.gz"         doesn't
-        Include = yes              work
+                                  work
      }                          !!!!!!!!!!!!
      File = /myfile
   }
@@ -900,7 +1169,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}
@@ -910,11 +1179,10 @@ FileSet {
      Options {
         wildfile = "*.Z"
         wildfile = "*.gz"
-        Include = yes
      }
      Options {
         Exclude = yes
-        RegexFile = "^.?*$"
+        RegexFile = ".*"
      }
      File = /myfile
   }
@@ -958,6 +1226,69 @@ 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. 
 
+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
+
 \subsubsection*{Backing up Raw Partitions}
 \index[general]{Backing up!Partitions }
 \index[general]{Backing up Raw Partitions }
@@ -1019,7 +1350,6 @@ FileSet {
 \normalsize
 
 \label{win32}
-
 \subsubsection*{Windows FileSets}
 \index[general]{Windows FileSets }
 \index[general]{FileSets!Windows }
@@ -1052,14 +1382,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 
+\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
@@ -1202,4 +1532,31 @@ 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. 
+manual.
+
+As an example, suppose you add the following test FileSet:
+
+\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
+
+to give you a listing of all files that match.