]> git.sur5r.net Git - bacula/docs/blob - docs/manual/fileset.tex
Update
[bacula/docs] / docs / manual / fileset.tex
1 -%
2 %%
3
4 \chapter{The FileSet Resource}
5 \label{FileSetResource}
6 \index[general]{Resource!FileSet}
7 \index[general]{FileSet Resource}
8
9 The FileSet resource defines what files are to be included or excluded in a
10 backup job.  A {\bf FileSet} resource is required for each backup Job.  It
11 consists of a list of files or directories to be included, a list of files
12 or directories to be excluded and the various backup options such as
13 compression, encryption, and signatures that are to be applied to each
14 file.
15
16 Any change to the list of the included files will cause Bacula to
17 automatically create a new FileSet (defined by the name and an MD5 checksum
18 of the Include/Exclude contents).  Each time a new FileSet is created,
19 Bacula will ensure that the next backup is always a Full save.
20
21 \begin{description}
22
23 \item [FileSet]
24 \index[dir]{FileSet}
25 \index[dir]{Directive!FileSet}
26 Start of the FileSet resource. One {\bf FileSet}  resource must be
27 defined for each Backup job.
28
29 \item [Name = \lt{}name\gt{}]
30 \index[dir]{Name}
31 \index[dir]{Directive!Name}
32    The name of the FileSet resource.  This directive is required. 
33
34 \item [Ignore FileSet Changes = \lt{}yes|no\gt{}]
35 \index[dir]{Ignore FileSet Changes}
36 \index[dir]{Directive!Ignore FileSet Changes}
37    Normally, if you modify the FileSet Include or Exclude lists,
38    the next backup will be forced to a Full so that Bacula can
39    guarantee that any additions or deletions are properly backed
40    up.
41    If this directive is set to {\bf yes}, any changes you make to the
42    FileSet Include or Exclude lists will be ignored and not cause Bacula to
43    immediately perform a Full backup.  The default is {\bf no}, in which
44    case, if you change the Include or Exclude, Bacula will force a Full
45    backup to ensure that everything is properly backed up.  It is not
46    recommended to set this directive to yes.
47
48 \item [Enable VSS = \lt{}yes|no\gt{}]
49 \index[dir]{Enable VSS}
50 \index[dir]{Directive!Enable VSS}
51   If this directive is set to {\bf yes} the File daemon will be notified
52   that the user wants to use a Volume Shadow Copy Service (VSS) backup
53   for this job. The default is {\bf yes}. This directive is effective
54   only for VSS enabled Win32 File daemons. It permits a consistent copy
55   of open files to be made for cooperating writer applications, and for
56   applications that are not VSS away, Bacula can at least copy open files.
57   For more information, please see the
58   \ilink{Windows}{VSS} chapter of this manual.
59
60 \item [Include \{ Options \{\lt{}file-options\gt{}\} ...;
61    \lt{}file-list\gt{} \} ]
62 \index[dir]{Include \{ [ Options \{\lt{}file-options\gt{}\} ...]
63    \lt{}file-list\gt{} \}  }
64 \index[dir]{Directive!Include}
65
66 \item [Options \{ \lt{}file-options\gt{} \} ]
67 \index[dir]{Options  \{ \lt{}file-options\gt{} \}  }
68
69 \item [Exclude \{ \lt{}file-list\gt{} \}]
70 \index[dir]{Exclude \{ \lt{}file-list\gt{} \} }
71 \index[dir]{Directive!Exclude}
72
73 \end{description}
74
75 The Include resource must contain a list of directories and/or files to be
76 processed in the backup job.  Normally, all files found in all
77 subdirectories of any directory in the Include File list will be backed up.
78 Note, see below for the definition of \lt{}file-list\gt{}. 
79 The Include resource may also contain one or more Options resources that
80 specify options such as compression to be applied to all or any subset of
81 the files found when processing the file-list for backup. Please see
82 below for more details concerning Options resources.
83
84 There can be any number of {\bf Include} resources within the FileSet, each
85 having its own list of directories or files to be backed up and the backup
86 options defined by one or more Options resources.  The {\bf file-list}
87 consists of one file or directory name per line.  Directory names should be
88 specified without a trailing slash with Unix path notation.
89
90 Windows users, please take note to specify directories (even c:/...) in
91 Unix path notation. If you use Windows conventions, you will most likely
92 not be able to restore your files due to the fact that the Windows
93 path separator was defined as an escape character long before Windows
94 existed, and Bacula adheres to that convention (i.e. \\  means the next character
95 appears as itself).
96
97 You should always specify a full path for every directory and file that you
98 list in the FileSet.  In addition, on Windows machines, you should {\bf
99 always} prefix the directory or filename with the drive specification in
100 lower case (e.g.  {\bf c:/xxx}) using Unix directory name separators
101 (forward slash).
102
103 Bacula's default for processing directories is to recursively descend in
104 the directory saving all files and subdirectories.  Bacula will not by
105 default cross filesystems (or mount points in Unix parlance).  This means
106 that if you specify the root partition (e.g.  {\bf /}), Bacula will save
107 only the root partition and not any of the other mounted filesystems.
108 Similarly on Windows systems, you must explicitly specify each of the
109 drives you want saved (e.g.
110 {\bf c:/} and {\bf d:/} ...). In addition, at least for Windows systems, you
111 will most likely want to enclose each specification within double quotes
112 particularly if the directory (or file) name contains spaces. The {\bf df}
113 command on Unix systems will show you which mount points you must specify to
114 save everything. See below for an example. 
115
116 Take special care not to include a directory twice or Bacula will backup
117 the same files two times wasting a lot of space on your archive device.
118 Including a directory twice is very easy to do.  For example:
119
120 \footnotesize
121 \begin{verbatim}
122   Include {
123     File = /
124     File = /usr
125     Options { compression=GZIP }
126   }
127 \end{verbatim}
128 \normalsize
129
130 on a Unix system where /usr is a subdirectory (rather than a mounted
131 filesystem) will cause /usr to be backed up twice. In this case, on Bacula
132 versions prior to 1.32f-5-09Mar04 due to a bug, you will not be able to
133 restore hard linked files that were backed up twice. 
134
135 If you have used Bacula prior to version 1.36.3, you will note three things in
136 the new FileSet syntax: 
137
138 \begin{enumerate}
139 \item There is no equal sign (=) after the Include and before the opening
140    brace (\{). The same is true for the Exclude. 
141 \item Each directory (or filename) to be included or excluded is preceded by a {\bf File
142    =}.  Previously they were simply listed on separate lines. 
143 \item The options that previously appeared on the Include line now must be
144    specified within their own Options resource.
145 \item The Exclude resource does not accept Options. 
146 \item When using wild-cards or regular expressions, directory names are
147    always terminated with a slash (/) and filenames have no trailing slash.
148 \end{enumerate}
149
150 The Options resource is optional, but when specified, it will contain a
151 list of {\bf keyword=value} options to be applied to the file-list.
152 See below for the definition of file-list.    
153 Multiple Options resources may be specified one after another.  As the
154 files are found in the specified directories, the Options will applied to
155 the filenames to determine if and how the file should be backed up.  The
156 wildcard and regular expression pattern matching parts of the
157 Options resources are checked in the order they are specified in the
158 FileSet until the first one that matches. Once one matches, the
159 compression and other flags within the Options specification will
160 apply to the pattern matched.
161
162 A key point is that in the absence of an Option or no other Option is
163 matched, every file is accepted for backing up. This means that if
164 you want to exclude something, you must explicitly specify an Option
165 with an {\bf exclude = yes} and some pattern matching.
166
167 Once Bacula determines that the Options resource matches the file under
168 consideration, that file will be saved without looking at any other Options
169 resources that may be present.  This means that any wild cards must appear
170 before an Options resource without wild cards.
171
172 If for some reason, Bacula checks all the Options resources to a file under
173 consideration for backup, but there are no matches (generally because of wild
174 cards that don't match), Bacula as a default will then backup the file.  This
175 is quite logical if you consider the case of no Options clause is specified,
176 where you want everything to be backed up, and it is important to keep in mind
177 when excluding as mentioned above.
178
179 However, one additional point is that in the case that no match was found,
180 Bacula will use the options found in the last Options resource.  As a
181 consequence, if you want a particular set of "default" options, you should put
182 them in an Options resource after any other Options.
183
184 It is a good idea to put all your wild-card and regex expressions inside
185 double quotes to prevent conf file scanning problems.
186
187 This is perhaps a bit overwhelming, so there are a number of examples included 
188 below to illustrate how this works.
189
190 The directives within an Options resource may be one of the following: 
191
192 \begin{description}
193
194 \item [compression=GZIP]
195 \index[dir]{compression}
196 \index[dir]{Directive!compression}
197    All files saved will be software compressed using the GNU ZIP
198    compression format.  The compression is done on a file by file basis by
199    the File daemon.  If there is a problem reading the tape in a single
200    record of a file, it will at most affect that file and none of the other
201    files on the tape.  Normally this option is {\bf not} needed if you have
202    a modern tape drive as the drive will do its own compression.  In fact,
203    if you specify software compression at the same time you have hardware
204    compression turned on, your files may actually take more space on the
205    volume.
206
207    Software compression is very important if you are writing your Volumes
208    to a file, and it can also be helpful if you have a fast computer but a
209    slow network, otherwise it is generally better to rely your tape drive's
210    hardware compression.  As noted above, it is not generally a good idea
211    to do both software and hardware compression.
212
213    Specifying {\bf GZIP} uses the default compression level 6 (i.e.  {\bf
214    GZIP} is identical to {\bf GZIP6}).  If you want a different compression
215    level (1 through 9), you can specify it by appending the level number
216    with no intervening spaces to {\bf GZIP}.  Thus {\bf compression=GZIP1}
217    would give minimum compression but the fastest algorithm, and {\bf
218    compression=GZIP9} would give the highest level of compression, but
219    requires more computation.  According to the GZIP documentation,
220    compression levels greater than six generally give very little extra
221    compression and are rather CPU intensive.
222
223 \item [signature=SHA1]
224 \index[dir]{signature}
225 \index[dir]{SHA1}
226 \index[dir]{Directive!signature}
227    An SHA1 signature will be computed for all The SHA1 algorithm is
228    purported to be some what slower than the MD5 algorithm, but at the same
229    time is significantly better from a cryptographic point of view (i.e.
230    much fewer collisions, much lower probability of being hacked.) It adds
231    four more bytes than the MD5 signature.  We strongly recommend that
232    either this option or MD5 be specified as a default for all files.
233    Note, only one of the two options MD5 or SHA1 can be computed for any
234    file.
235
236 \item [signature=MD5]
237 \index[dir]{signature}
238 \index[dir]{MD5}
239 \index[dir]{Directive!signature}
240    An MD5 signature will be computed for all files saved.  Adding this
241    option generates about 5\% extra overhead for each file saved.  In
242    addition to the additional CPU time, the MD5 signature adds 16 more
243    bytes per file to your catalog.  We strongly recommend that this option
244    or the SHA1 option be specified as a default for all files.
245
246 \item [verify=\lt{}options\gt{}]
247 \index[dir]{verify}
248 \index[dir]{Directive!verify}
249    The options letters specified are used  when running a {\bf Verify
250    Level=Catalog} as well as the  {\bf DiskToCatalog} level job. The options
251    letters may be any  combination of the following:  
252
253       \begin{description}
254
255       \item {\bf i}
256       compare the inodes  
257
258       \item {\bf p}
259       compare the permission bits  
260
261       \item {\bf n}
262       compare the number of links  
263
264       \item {\bf u}
265       compare the user id  
266
267       \item {\bf g}
268       compare the group id  
269
270       \item {\bf s}
271       compare the size  
272
273       \item {\bf a}
274       compare the access time  
275
276       \item {\bf m}
277       compare the modification time (st\_mtime)  
278
279       \item {\bf c}
280       compare the change time (st\_ctime)  
281
282       \item {\bf s}
283       report file size decreases  
284
285       \item {\bf 5}
286       compare the MD5 signature  
287
288       \item {\bf 1}
289       compare the SHA1 signature  
290       \end{description}
291
292    A useful set of general options on the {\bf Level=Catalog}  or {\bf
293    Level=DiskToCatalog}  verify is {\bf pins5} i.e. compare permission bits,
294    inodes, number  of links, size, and MD5 changes. 
295
296 \item [onefs=yes|no]
297 \index[dir]{onefs}
298 \index[dir]{Directive!onefs}
299    If set to {\bf yes} (the default), {\bf Bacula} will remain on a single
300    file system.  That is it will not backup file systems that are mounted
301    on a subdirectory.  If you are using a *nix system, you may not even be
302    aware that there are several different filesystems as they are often
303    automatically mounted by the OS (e.g.  /dev, /net, /sys, /proc, ...).
304    With Bacula 1.38.0 or later, it will inform you when it decides not to
305    traverse into another filesystem.  This can be very useful if you forgot
306    to backup a particular partition.  An example of the informational
307    message in the job report is:
308
309 \footnotesize
310 \begin{verbatim}
311 rufus-fd: /misc is a different filesystem. Will not descend from / into /misc
312 rufus-fd: /net is a different filesystem. Will not descend from / into /net
313 rufus-fd: /var/lib/nfs/rpc_pipefs is a different filesystem. Will not descend from /var/lib/nfs into /var/lib/nfs/rpc_pipefs
314 rufus-fd: /selinux is a different filesystem. Will not descend from / into /selinux
315 rufus-fd: /sys is a different filesystem. Will not descend from / into /sys
316 rufus-fd: /dev is a different filesystem. Will not descend from / into /dev
317 rufus-fd: /home is a different filesystem. Will not descend from / into /home
318 \end{verbatim}
319 \normalsize
320
321    Note: in previous versions of Bacula, the above message was of the form: 
322
323 \footnotesize
324 \begin{verbatim}
325 Filesystem change prohibited. Will not descend into /misc
326 \end{verbatim}
327 \normalsize
328
329    If you wish to backup multiple filesystems, you can  explicitly
330    list each filesystem you want saved.  Otherwise, if you set the onefs option
331    to {\bf no}, Bacula will backup  all mounted file systems (i.e. traverse mount
332    points) that  are found within the {\bf FileSet}. Thus if  you have NFS or
333    Samba file systems mounted on a directory listed  in your FileSet, they will
334    also be backed up. Normally, it is  preferable to set {\bf onefs=yes} and to
335    explicitly name  each filesystem you want backed up. Explicitly naming  the
336    filesystems you want backed up avoids the possibility  of getting into a
337    infinite loop recursing filesystems.  Another possibility is to 
338    use {\bf onefs=no} and to set {\bf fstype=ext2, ...}.             
339    See the example below for more details. 
340
341    If you think that Bacula should be backing up a particular directory
342    and it is not, and you have {\bf onefs=no} set, before you complain,
343    please do:
344
345 \footnotesize
346 \begin{verbatim}
347   stat /
348   stat <filesystem>
349 \end{verbatim}
350 \normalsize
351
352 where you replace {\bf filesystem} with the one in question.  If the 
353 {\bf Device:} number is different for / and for your filesystem, then they
354 are on different filesystems.  E.g.
355 \footnotesize
356 \begin{verbatim}
357 stat /
358   File: `/'
359   Size: 4096            Blocks: 16         IO Block: 4096   directory
360 Device: 302h/770d       Inode: 2           Links: 26
361 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
362 Access: 2005-11-10 12:28:01.000000000 +0100
363 Modify: 2005-09-27 17:52:32.000000000 +0200
364 Change: 2005-09-27 17:52:32.000000000 +0200
365
366 stat /net
367   File: `/home'
368   Size: 4096            Blocks: 16         IO Block: 4096   directory
369 Device: 308h/776d       Inode: 2           Links: 7
370 Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
371 Access: 2005-11-10 12:28:02.000000000 +0100
372 Modify: 2005-11-06 12:36:48.000000000 +0100
373 Change: 2005-11-06 12:36:48.000000000 +0100
374 \end{verbatim}
375 \normalsize
376
377    Also be aware that even if you include {\bf /home} in your list
378    of files to backup, as you most likely should, you will get the
379    informational message that  "/home is a different filesystem" when 
380    Bacula is processing the {\bf /} directory.  This message does not
381    indicate an error. This message means that while examining the 
382    {\bf File =} referred to in the second part of the message, Bacula will 
383    not descend into the directory mentioned in the first part of the message.
384    However, it is possible that the separate filesystem will be backed up 
385    despite the message. For example, consider the following FileSet:
386
387 \footnotesize
388 \begin{verbatim}
389   File = /
390   File = /var
391 \end{verbatim}
392 \normalsize
393
394    where {\bf /var} is a separate filesystem.  In this example, you will get a
395    message saying that Bacula will not decend from {\bf /} into {\bf /var}.  But 
396    it is important to realise that Bacula will descend into {\bf /var} from the 
397    second File directive shown above.  In effect, the warning is bogus,
398    but it is supplied to alert you to possible omissions from your FileSet. In 
399    this example, {\bf /var} will be backed up.  If you changed the FileSet such 
400    that it did not specify {\bf /var}, then {\bf /var} will not be backed up.
401
402    
403
404
405 \label{portable}
406 \item [portable=yes|no]
407 \index[dir]{portable}
408 \index[dir]{Directive!portable}
409    If set to {\bf yes} (default is {\bf no}), the Bacula File daemon will
410    backup Win32 files in a portable format, but not all Win32 file
411    attributes will be saved and restored.  By default, this option is set
412    to {\bf no}, which means that on Win32 systems, the data will be backed
413    up using Windows API calls and on WinNT/2K/XP, all the security and
414    ownership attributes will be properly backed up (and restored).  However
415    this format is not portable to other systems -- e.g.  Unix, Win95/98/Me.
416    When backing up Unix systems, this option is ignored, and unless you
417    have a specific need to have portable backups, we recommend accept the
418    default ({\bf no}) so that the maximum information concerning your files
419    is saved.
420
421 \item [recurse=yes|no]
422 \index[dir]{recurse}
423 \index[dir]{Directive!recurse}
424    If set to {\bf yes} (the default), Bacula will recurse (or descend) into
425    all subdirectories found unless the directory is explicitly excluded
426    using an {\bf exclude} definition.  If you set {\bf recurse=no}, Bacula
427    will save the subdirectory entries, but not descend into the
428    subdirectories, and thus will not save the files or directories
429    contained in the subdirectories.  Normally, you will want the default
430    ({\bf yes}).
431
432 \item [sparse=yes|no]
433 \index[dir]{sparse}
434 \index[dir]{Directive!sparse}
435    Enable special code that checks for sparse files such as created by
436    ndbm.  The default is {\bf no}, so no checks are made for sparse files.
437    You may specify {\bf sparse=yes} even on files that are not sparse file.
438    No harm will be done, but there will be a small additional overhead to
439    check for buffers of all zero, and a small additional amount of space on
440    the output archive will be used to save the seek address of each
441    non-zero record read.
442
443    {\bf Restrictions:} Bacula reads files in 32K buffers.  If the whole
444    buffer is zero, it will be treated as a sparse block and not written to
445    tape.  However, if any part of the buffer is non-zero, the whole buffer
446    will be written to tape, possibly including some disk sectors (generally
447    4098 bytes) that are all zero.  As a consequence, Bacula's detection of
448    sparse blocks is in 32K increments rather than the system block size.
449    If anyone considers this to be a real problem, please send in a request
450    for change with the reason.
451
452    If you are not familiar with sparse files, an example is say a file
453    where you wrote 512 bytes at address zero, then 512 bytes at address 1
454    million.  The operating system will allocate only two blocks, and the
455    empty space or hole will have nothing allocated.  However, when you read
456    the sparse file and read the addresses where nothing was written, the OS
457    will return all zeros as if the space were allocated, and if you backup
458    such a file, a lot of space will be used to write zeros to the volume.
459    Worse yet, when you restore the file, all the previously empty space
460    will now be allocated using much more disk space.  By turning on the
461    {\bf sparse} option, Bacula will specifically look for empty space in
462    the file, and any empty space will not be written to the Volume, nor
463    will it be restored.  The price to pay for this is that Bacula must
464    search each block it reads before writing it.  On a slow system, this
465    may be important.  If you suspect you have sparse files, you should
466    benchmark the difference or set sparse for only those files that are
467    really sparse.
468
469 \label{readfifo}
470 \item [readfifo=yes|no]
471 \index[dir]{readfifo}
472 \index[dir]{Directive!readfifo}
473    If enabled, tells the Client to read the data on a backup and write the
474    data on a restore to any FIFO (pipe) that is explicitly mentioned in the
475    FileSet.  In this case, you must have a program already running that
476    writes into the FIFO for a backup or reads from the FIFO on a restore.
477    This can be accomplished with the {\bf RunBeforeJob} directive.  If this
478    is not the case, Bacula will hang indefinitely on reading/writing the
479    FIFO. When this is not enabled (default), the Client simply saves the
480    directory entry for the FIFO.
481
482    Unfortunately, when Bacula runs a RunBeforeJob, it waits until that
483    script terminates, and if the script accesses the FIFO to write   
484    into the it, the Bacula job will block and everything will stall.
485    However, Vladimir Stavrinov as supplied tip that allows this feature   
486    to work correctly.  He simply adds the following to the beginning
487    of the RunBeforeJob script:
488
489 \begin{verbatim}
490    exec > /dev/null
491 \end{verbatim}
492
493 \item [noatime=yes|no]
494 \index[dir]{noatime}
495 \index[dir]{Directive!noatime}
496    If enabled, and if your Operating System supports the O\_NOATIME file
497    open flag, Bacula will open all files to be backed up with this option.
498    It makes it possible to read a file without updating the inode atime
499    (and also without the inode ctime update which happens if you try to set
500    the atime back to its previous value).  It also prevents a race
501    condition when two programs are reading the same file, but only one does
502    not want to change the atime.  It's most useful for backup programs and
503    file integrity checkers (and bacula can fit on both categories).
504
505    This option is particularly useful for sites where users are sensitive
506    to their MailBox file access time.  It replaces both the {\bf keepatime}
507    option without the inconveniences of that option (see below).
508
509    If your Operating System does not support this option, it will be
510    silently ignored by Bacula.
511
512
513 \item [mtimeonly=yes|no]
514 \index[dir]{mtimeonly}
515 \index[dir]{Directive!mtimeonly}
516    If enabled, tells the Client that the selection of files during
517    Incremental and Differential backups should based only on the st\_mtime
518    value in the stat() packet.  The default is {\bf no} which means that
519    the selection of files to be backed up will be based on both the
520    st\_mtime and the st\_ctime values.  In general, it is not recommended
521    to use this option.
522
523 \item [keepatime=yes|no]
524 \index[dir]{keepatime}
525 \index[dir]{Directive!keepatime}
526    The default is {\bf no}.  When enabled, Bacula will reset the st\_atime
527    (access time) field of files that it backs up to their value prior to
528    the backup.  This option is not generally recommended as there are very
529    few programs that use st\_atime, and the backup overhead is increased
530    because of the additional system call necessary to reset the times.
531    However, for some files, such as mailboxes, when Bacula backs up the
532    file, the user will notice that someone (Bacula) has accessed the
533    file. In this, case keepatime can be useful.
534    (I'm not sure this works on Win32).
535
536    Note, if you use this feature, when Bacula resets the access time, the
537    change time (st\_ctime) will automatically be modified by the system,
538    so on the next incremental job, the file will be backed up even if
539    it has not changed. As a consequence, you will probably also want
540    to use {\bf mtimeonly = yes} as well as keepatime (thanks to
541    Rudolf Cejka for this tip).
542
543 \item [checkfilechanges=yes|no]
544 \index[dir]{checkfilechanges}
545 \index[dir]{Directive!checkfilechanges}
546    On versions 2.0.4 or greater, 
547    if enabled, the Client will checks size, age of each file after 
548    their backup to see if they have changed during backup. If time 
549    or size mismatch, an error will raise.
550
551 \begin{verbatim}
552  zog-fd: Client1.2007-03-31_09.46.21 Error: /tmp/test mtime changed during backup.
553 \end{verbatim}
554
555    In general, it is recommended to use this option.
556
557 \item [hardlinks=yes|no]
558 \index[dir]{hardlinks}
559 \index[dir]{Directive!hardlinks}
560    When enabled (default), this directive will cause hard links to be 
561    backed up. However, the File daemon keeps track of hard linked files and
562    will backup the data only once. The process of keeping track of the 
563    hard links can be quite expensive if you have lots of them (tens of
564    thousands or more). This doesn't occur on normal Unix systems, but if
565    you use a program like BackupPC, it can create hundreds of thousands, or
566    even millions of hard links. Backups become very long and the File daemon
567    will consume a lot of CPU power checking hard links.  In such a case,
568    set {\bf hardlinks=no} and hard links will not be backed up.  Note, using
569    this option will most likely backup more data and on a restore the file
570    system will not be restored identically to the original.
571
572 \item [wild=\lt{}string\gt{}]
573 \index[dir]{wild}
574 \index[dir]{Directive!wild}
575    Specifies a wild-card string to be applied to the filenames and
576    directory names.  Note, if {\bf Exclude} is not enabled, the wild-card
577    will select which files are to be included.  If {\bf Exclude=yes} is
578    specified, the wild-card will select which files are to be excluded.
579    Multiple wild-card directives may be specified, and they will be applied
580    in turn until the first one that matches.  Note, if you exclude a
581    directory, no files or directories below it will be matched.
582
583    You may want to test your expressions prior to running your
584    backup by using the bwild program. Please see the
585    \ilink{Utilities}{bwild} chapter of this manual for
586    more. You can also test your full FileSet definition by using
587    the \ilink{estimate}{estimate} command in the Console        
588    chapter of this manual.
589    It is recommended to enclose the string in double quotes.
590
591 \item [wilddir=\lt{}string\gt{}]
592 \index[dir]{wilddir}
593 \index[dir]{Directive!wilddir}
594    Specifies a wild-card string to be applied to directory names only.  No
595    filenames will be matched by this directive.  Note, if {\bf Exclude} is
596    not enabled, the wild-card will select directories files are to be
597    included.  If {\bf Exclude=yes} is specified, the wild-card will select
598    which files are to be excluded.  Multiple wild-card directives may be
599    specified, and they will be applied in turn until the first one that
600    matches.  Note, if you exclude a directory, no files or directories
601    below it will be matched.
602
603    It is recommended to enclose the string in double quotes.
604
605    You may want to test your expressions prior to running your
606    backup by using the bwild program. Please see the
607    \ilink{Utilities}{bwild} chapter of this manual for
608    more. You can also test your full FileSet definition by using
609    the \ilink{estimate}{estimate} command in the Console        
610    chapter of this manual.
611    An example of excluding with the WildDir option on Win32 machines is    
612    presented below.
613
614 \item [wildfile=\lt{}string\gt{}]
615 \index[dir]{wildfile}
616 \index[dir]{Directive!wildfile}
617    Specifies a wild-card string to be applied to non-directories. That
618    is no directory entries will be matched by this directive.
619    However, note that the match is done against the full path and filename,
620    so your wild-card string must take into account that filenames
621    are preceded by the full path.
622    If {\bf Exclude}
623    is not enabled, the wild-card will select which files are to be
624    included.  If {\bf Exclude=yes} is specified, the wild-card will select
625    which files are to be excluded.  Multiple wild-card directives may be
626    specified, and they will be applied in turn until the first one that
627    matches.
628
629    It is recommended to enclose the string in double quotes.
630
631    You may want to test your expressions prior to running your
632    backup by using the bwild program. Please see the
633    \ilink{Utilities}{bwild} chapter of this manual for
634    more. You can also test your full FileSet definition by using
635    the \ilink{estimate}{estimate} command in the Console        
636    chapter of this manual.
637    An example of excluding with the WildFile option on Win32 machines is    
638    presented below.
639
640
641 \item [regex=\lt{}string\gt{}]
642 \index[dir]{regex}
643 \index[dir]{Directive!regex}
644    Specifies a POSIX extended regular expression to be applied to the
645    filenames and directory names, which include the full path.  If {\bf
646    Exclude} is not enabled, the regex will select which files are to be
647    included.  If {\bf Exclude=yes} is specified, the regex will select
648    which files are to be excluded.  Multiple regex directives may be
649    specified within an Options resource, and they will be applied in turn
650    until the first one that matches.  Note, if you exclude a directory, no
651    files or directories below it will be matched.
652
653    It is recommended to enclose the string in double quotes.
654
655    The regex libraries differ from one operating system to
656    another, and in addition, regular expressions are complicated,
657    so you may want to test your expressions prior to running your
658    backup by using the bregex program. Please see the
659    \ilink{Utilities}{bwild} chapter of this manual for
660    more. You can also test your full FileSet definition by using
661    the \ilink{estimate}{estimate} command in the Console        
662    chapter of this manual.
663
664
665 \item [regexfile=\lt{}string\gt{}]
666 \index[dir]{regexfile}
667 \index[dir]{Directive!regexfile}
668    Specifies a POSIX extended regular expression to be applied to
669    non-directories. No directories will be matched by this directive.  
670    However, note that the match is done against the full path and
671    filename, so your regex string must take into account that filenames
672    are preceded by the full path.
673    If {\bf Exclude} is not enabled, the regex will select which files are
674    to be included.  If {\bf Exclude=yes} is specified, the regex will
675    select which files are to be excluded.  Multiple regex directives may be
676    specified, and they will be applied in turn until the first one that
677    matches.
678
679    It is recommended to enclose the string in double quotes.
680
681    The regex libraries differ from one operating system to
682    another, and in addition, regular expressions are complicated,
683    so you may want to test your expressions prior to running your
684    backup by using the bregex program. Please see the
685    \ilink{Utilities}{bregex} chapter of this manual for
686    more.
687
688
689 \item [regexdir=\lt{}string\gt{}]
690 \index[dir]{regexdir}
691 \index[dir]{Directive!regexdir}
692    Specifies a POSIX extended regular expression to be applied to directory
693    names only.  No filenames will be matched by this directive.  Note, if
694    {\bf Exclude} is not enabled, the regex will select directories
695    files are to be included.  If {\bf Exclude=yes} is specified, the
696    regex will select which files are to be excluded.  Multiple
697    regex directives may be specified, and they will be applied in turn
698    until the first one that matches.  Note, if you exclude a directory, no
699    files or directories below it will be matched.
700
701    It is recommended to enclose the string in double quotes.
702
703    The regex libraries differ from one operating system to
704    another, and in addition, regular expressions are complicated,
705    so you may want to test your expressions prior to running your
706    backup by using the bregex program. Please see the
707    \ilink{Utilities}{bregex} chapter of this manual for
708    more.
709
710
711 \item [exclude=yes|no]
712 \index[dir]{exclude}
713 \index[dir]{Directive!exclude}
714    The default is {\bf no}.  When enabled, any files matched within the
715    Options will be excluded from the backup.
716
717 \label{ACLSupport}
718
719 \item [aclsupport=yes|no]
720 \index[dir]{aclsupport}
721 \index[dir]{Directive!aclsupport}
722    The default is {\bf no}.  If this option is set to yes, and you have the
723    POSIX {\bf libacl} installed on your system, Bacula will backup the file
724    and directory UNIX Access Control Lists (ACL) as defined in IEEE Std
725    1003.1e draft 17 and "POSIX.1e" (abandoned).  This feature is
726    available on UNIX only and depends on the ACL library.  Bacula is
727    automatically compiled with ACL support if the {\bf libacl} library is
728    installed on your system (shown in config.out).  While restoring the
729    files Bacula will try to restore the ACLs, if there is no ACL support
730    available on the system, Bacula restores the files and directories but
731    not the ACL information.  Please note, if you backup an EXT3 or XFS
732    filesystem with ACLs, then you restore them to a different filesystem
733    (perhaps reiserfs) that does not have ACLs, the ACLs will be ignored.
734
735 \item [ignore case=yes|no]
736 \index[dir]{ignore case}
737 \index[dir]{Directive!ignore case}
738    The default is {\bf no}.  On Windows systems, you will almost surely
739    want to set this to {\bf yes}.  When this directive is set to {\bf yes}
740    all the case of character will be ignored in wild-card and regex
741    comparisons.  That is an uppercase A will match a lowercase a.
742
743 \item [fstype=filesystem-type]
744 \index[dir]{fstype}
745 \index[dir]{Directive!fstype}
746    This option allows you to select files and directories by the
747    filesystem type.  The permitted filesystem-type names are:
748
749    ext2, jfs, ntfs, proc, reiserfs, xfs, usbdevfs, sysfs, smbfs,
750    iso9660.  For ext3 systems, use ext2.
751
752    You may have multiple Fstype directives, and thus permit matching
753    of multiple filesystem types within a single Options resource.  If
754    the type specified on the fstype directive does not match the
755    filesystem for a particular directive, that directory will not be
756    backed up.  This directive can be used to prevent backing up
757    non-local filesystems. Normally, when you use this directive, you
758    would also set {\bf onefs=no} so that Bacula will traverse filesystems.
759
760    This option is not implemented in Win32 systems.
761
762
763 \item [hfsplussupport=yes|no]
764 \index[dir]{hfsplussupport}
765 \index[dir]{Directive!hfsplussupport}
766    This option allows you to turn on support for Mac OSX HFS plus 
767    finder information.
768
769 \end{description}
770
771 {\bf \lt{}file-list\gt{}} is a list of directory and/or filename names
772 specified with a {\bf File =} directive. To include names containing spaces,
773 enclose the name between double-quotes. Wild-cards are not interpreted
774 in file-lists. They can only be specified in Options resources.
775
776 There are a number of special cases when specifying directories and files in a
777 {\bf file-list}. They are: 
778
779 \begin{itemize}
780 \item Any name preceded by an at-sign (@) is assumed to be the  name of a
781    file, which contains a list of files each preceded by a "File =".  The
782    named file is read once when the configuration file is parsed during the
783    Director startup.  Note, that the file is read on the Director's machine
784    and not on the Client's.  In fact, the @filename can appear anywhere
785    within the conf file where a token would be read, and the contents of
786    the named file will be logically inserted in the place of the @filename.
787    What must be in the file depends on the location the @filename is
788    specified in the conf file.  For example:
789
790 \footnotesize
791 \begin{verbatim}
792 Include {
793   Options { compression=GZIP }
794   @/home/files/my-files
795 }
796 \end{verbatim}
797 \normalsize
798
799 \item Any name beginning with a vertical bar (|) is  assumed to be the name of
800    a program.  This program will be executed on the Director's machine at
801    the time the Job starts (not when the Director reads the configuration
802    file), and any output from that program will be assumed to be a list of
803    files or directories, one per line, to be included.  
804
805    This allows you to have a job that, for example, includes all the local
806    partitions even if you change the partitioning by adding a disk.  The
807    examples below show you how to do this.  However, please note two
808    things: \\
809    1.  if you want the local filesystems, you probably should be
810    using the new {\bf fstype} directive, which was added in version 1.36.3 
811    and set {\bf onefs=no}.
812    \\
813
814    2.  the exact syntax of the command needed in the examples below is very
815    system dependent.  For example, on recent Linux systems, you may need to
816    add the -P option, on FreeBSD systems, the options will be different as
817    well.
818
819    In general, you will need to prefix your command or commands with a {\bf
820    sh -c} so that they are invoked by a shell.  This will not be the case
821    if you are invoking a script as in the second example below.  Also, you
822    must take care to escape (precede with a \textbackslash{}) wild-cards,
823    shell character, and to ensure that any spaces in your command are
824    escaped as well.  If you use a single quotes (') within a double quote
825    ("), Bacula will treat everything between the single quotes as one field
826    so it will not be necessary to escape the spaces.  In general, getting
827    all the quotes and escapes correct is a real pain as you can see by the
828    next example.  As a consequence, it is often easier to put everything in
829    a file and simply use the file name within Bacula.  In that case the
830    {\bf sh -c} will not be necessary providing the first line of the file
831    is {\bf \#!/bin/sh}.
832
833    As an  example: 
834
835 \footnotesize
836 \begin{verbatim}
837  
838 Include {
839    Options { signature = SHA1 }
840    File = "|sh -c 'df -l | grep \"^/dev/hd[ab]\" | grep -v \".*/tmp\" \
841       | awk \"{print \\$6}\"'"
842 }
843 \end{verbatim}
844 \normalsize
845
846    will produce a list of all the local partitions on a Red Hat Linux system.
847    Note, the above line was split, but should normally  be written on one line. 
848    Quoting is a real problem because you must quote for Bacula  which consists of
849    preceding every \textbackslash{} and every " with a \textbackslash{}, and 
850    you must also quote for the shell command. In the end, it is probably  easier
851    just to execute a small file with: 
852
853
854 \footnotesize
855 \begin{verbatim}
856 Include {
857   Options {
858     signature=MD5
859   }
860   File = "|my_partitions"
861 }
862 \end{verbatim}
863 \normalsize
864
865    where my\_partitions has: 
866
867 \footnotesize
868 \begin{verbatim}
869 #!/bin/sh
870 df -l | grep "^/dev/hd[ab]" | grep -v ".*/tmp" \
871       | awk "{print \$6}"
872 \end{verbatim}
873 \normalsize
874
875    If the vertical bar (|) in front of my\_partitions is preceded by a
876    backslash as in \textbackslash{}|, the program will be executed on the
877    Client's machine instead of on the Director's machine.
878    Please note that if the filename is given within quotes, you
879    will need to use two slashes.  An example, provided by John Donagher,
880    that backs up all the local UFS partitions on a remote system is:
881
882 \footnotesize
883 \begin{verbatim}
884 FileSet {
885   Name = "All local partitions"
886   Include {
887     Options { signature=SHA1; onefs=yes; }
888     File = "\\|bash -c \"df -klF ufs | tail +2 | awk '{print \$6}'\""
889   }
890 }
891 \end{verbatim}
892 \normalsize
893
894    The above requires two backslash characters after the double quote (one
895    preserves  the next one). If you are a Linux user, just change the {\bf ufs}
896    to  {\bf ext3} (or your preferred filesystem type), and you will be in 
897    business.  
898
899    If you know what filesystems you have mounted on your system, e.g. 
900    for Red Hat Linux normally only ext2 and ext3, you can backup
901    all local filesystems using something like:
902
903 \footnotesize
904 \begin{verbatim}
905  
906 Include {
907    Options { signature = SHA1; onfs=no; fstype=ext2 }
908    File = /
909 }
910 \end{verbatim}
911 \normalsize
912
913
914 \item Any file-list item preceded by a less-than sign (\lt{})  will be taken
915    to be a file. This file will be read on the Director's machine (see
916    below for doing it on the Client machine) at the time
917    the Job starts, and the  data will be assumed to be a list of directories or
918    files,  one per line, to be included. The names should start in  column 1 and
919    should not be quoted even if they contain  spaces. This feature allows you to
920    modify the external  file and change what will be saved without stopping and 
921    restarting Bacula as would be necessary if using the @  modifier noted above.
922    For example: 
923
924 \footnotesize
925 \begin{verbatim}
926 Include {
927   Options { signature = SHA1 }
928   File = "</home/files/local-filelist"
929 }
930 \end{verbatim}
931 \normalsize
932
933    If you precede the less-than sign (\lt{}) with a backslash as in
934    \textbackslash{}\lt{}, the file-list will be read on the Client machine
935    instead of on the Director's machine.  Please note that if the filename
936    is given within quotes, you will need to use two slashes.
937
938 \footnotesize
939 \begin{verbatim}
940 Include {
941   Options { signature = SHA1 }
942   File = "\\</home/xxx/filelist-on-client"
943 }
944 \end{verbatim}
945 \normalsize
946
947 \item If you explicitly specify a block device such as {\bf /dev/hda1},  then
948    Bacula (starting with version 1.28) will assume that this  is a raw partition
949    to be backed up. In this case, you are strongly  urged to specify a {\bf
950    sparse=yes} include option, otherwise, you  will save the whole partition
951    rather than just the actual data that  the partition contains. For example: 
952
953 \footnotesize
954 \begin{verbatim}
955 Include {
956   Options { signature=MD5; sparse=yes }
957   File = /dev/hd6
958 }
959 \end{verbatim}
960 \normalsize
961
962    will backup the data in device /dev/hd6.  
963
964    Ludovic Strappazon has pointed out that this feature can be  used to backup a
965    full Microsoft Windows disk. Simply boot into  the system using a Linux Rescue
966    disk, then load a statically  linked Bacula as described in the 
967    \ilink{ Disaster Recovery Using Bacula}{RescueChapter} chapter of
968    this manual. Then  save the whole disk partition. In the case of a disaster,
969    you  can then restore the desired partition by again booting with  the rescue
970    disk and doing a restore of the partition. 
971    \item If you explicitly specify a FIFO device name (created with mkfifo),  and
972    you add the option {\bf readfifo=yes} as an option, Bacula  will read the FIFO
973    and back its data up to the Volume. For  example: 
974
975 \footnotesize
976 \begin{verbatim}
977 Include {
978   Options {
979     signature=SHA1
980     readfifo=yes
981   }
982   File = /home/abc/fifo
983 }
984 \end{verbatim}
985 \normalsize
986
987    if {\bf /home/abc/fifo} is a fifo device, Bacula will open the fifo,
988    read it, and store all data thus obtained on the Volume.  Please note,
989    you must have a process on the system that is writing into the fifo, or
990    Bacula will hang, and after one minute of waiting, Bacula will give up
991    and go on to the next file.  The data read can be anything since Bacula
992    treats it as a stream.
993
994    This feature can be an excellent way to do a "hot" backup of a very
995    large database.  You can use the {\bf RunBeforeJob} to create the fifo
996    and to start a program that dynamically reads your database and writes
997    it to the fifo.  Bacula will then write it to the Volume.  Be sure to
998    read the \ilink{readfifo section}{readfifo} that gives a
999    tip to ensure that the RunBeforeJob does not block Bacula.
1000
1001    During the restore operation, the inverse is true, after Bacula creates
1002    the fifo if there was any data stored with it (no need to explicitly
1003    list it or add any options), that data will be written back to the fifo.
1004    As a consequence, if any such FIFOs exist in the fileset to be restored,
1005    you must ensure that there is a reader program or Bacula will block, and
1006    after one minute, Bacula will time out the write to the fifo and move on
1007    to the next file.
1008
1009 \item A file-list may not contain wild-cards. Use directives in the
1010    Options resource if you wish to specify wild-cards or regular expression
1011    matching.
1012 \end{itemize}
1013
1014 \section{FileSet Examples}
1015 \index[general]{Examples!FileSet }
1016 \index[general]{FileSet Examples}
1017
1018 The following is an example of a valid FileSet resource definition.  Note,
1019 the first Include pulls in the contents of the file {\bf /etc/backup.list}
1020 when Bacula is started (i.e.  the @), and that file must have each filename
1021 to be backed up preceded by a {\bf File =} and on a separate line.
1022
1023 \footnotesize
1024 \begin{verbatim}
1025 FileSet {
1026   Name = "Full Set"
1027   Include {
1028     Options {
1029       Compression=GZIP
1030       signature=SHA1
1031       Sparse = yes
1032     }
1033     @/etc/backup.list
1034   }
1035   Include {
1036      Options {
1037         wildfile = "*.o"
1038         wildfile = "*.exe"
1039         Exclude = yes
1040      }
1041      File = /root/myfile
1042      File = /usr/lib/another_file
1043   }
1044 }
1045 \end{verbatim}
1046 \normalsize
1047
1048 In the above example, all the files contained in /etc/backup.list will
1049 be compressed with GZIP compression, an SHA1 signature will be computed on the
1050 file's contents (its data), and sparse file handling will apply. 
1051
1052 The two directories /root/myfile and /usr/lib/another\_file will also be saved
1053 without any options, but all files in those directories with the extensions
1054 {\bf .o} and {\bf .exe} will be excluded. 
1055
1056 Let's say that you now want to exclude the directory /tmp. The simplest way
1057 to do so is to add an exclude directive that lists /tmp.  The example
1058 above would then become:
1059
1060 \footnotesize 
1061 \begin{verbatim}
1062 FileSet {
1063   Name = "Full Set"
1064   Include {
1065     Options {
1066       Compression=GZIP
1067       signature=SHA1
1068       Sparse = yes
1069     }
1070     @/etc/backup.list
1071   }
1072   Include {
1073      Options {
1074         wildfile = "*.o"
1075         wildfile = "*.exe"
1076         Exclude = yes
1077      }
1078      File = /root/myfile
1079      File = /usr/lib/another_file
1080   }
1081   Exclude {
1082      File = /tmp
1083   }
1084 }
1085 \end{verbatim}
1086 \normalsize
1087
1088
1089 You can add wild-cards to the File directives listed in the Exclude
1090 directory, but you need to take care because if you exclude a directory,
1091 it and all files and directories below it will also be excluded.
1092
1093 Now lets take a slight variation on the above and suppose
1094 you want to save all your whole filesystem except {\bf /tmp}. 
1095 The problem that comes up is that Bacula will not normally
1096 cross from one filesystem to another.
1097 Doing a {\bf df} command, you get the following output: 
1098
1099 \footnotesize
1100 \begin{verbatim}
1101 [kern@rufus k]$ df
1102 Filesystem      1k-blocks      Used Available Use% Mounted on
1103 /dev/hda5         5044156    439232   4348692  10% /
1104 /dev/hda1           62193      4935     54047   9% /boot
1105 /dev/hda9        20161172   5524660  13612372  29% /home
1106 /dev/hda2           62217      6843     52161  12% /rescue
1107 /dev/hda8         5044156     42548   4745376   1% /tmp
1108 /dev/hda6         5044156   2613132   2174792  55% /usr
1109 none               127708         0    127708   0% /dev/shm
1110 //minimatou/c$   14099200   9895424   4203776  71% /mnt/mmatou
1111 lmatou:/          1554264    215884   1258056  15% /mnt/matou
1112 lmatou:/home      2478140   1589952    760072  68% /mnt/matou/home
1113 lmatou:/usr       1981000   1199960    678628  64% /mnt/matou/usr
1114 lpmatou:/          995116    484112    459596  52% /mnt/pmatou
1115 lpmatou:/home    19222656   2787880  15458228  16% /mnt/pmatou/home
1116 lpmatou:/usr      2478140   2038764    311260  87% /mnt/pmatou/usr
1117 deuter:/          4806936     97684   4465064   3% /mnt/deuter
1118 deuter:/home      4806904    280100   4282620   7% /mnt/deuter/home
1119 deuter:/files    44133352  27652876  14238608  67% /mnt/deuter/files
1120 \end{verbatim}
1121 \normalsize
1122
1123 And we see that there are a number of separate filesystems (/ /boot
1124 /home /rescue /tmp and /usr not to mention mounted systems).
1125 If you specify only {\bf /} in your Include list, Bacula will only save the
1126 Filesystem {\bf /dev/hda5}. To save all filesystems except {\bf /tmp} with
1127 out including any of the Samba or NFS mounted systems, and explicitly
1128 excluding a /tmp, /proc, .journal, and .autofsck, which you will not want to
1129 be saved and restored, you can use the following: 
1130
1131 \footnotesize
1132 \begin{verbatim}
1133 FileSet {
1134   Name = Include_example
1135   Include {
1136     Options {
1137        wilddir = /proc
1138        wilddir = /tmp
1139        wildfile = "/.journal"
1140        wildfile = "/.autofsck"
1141        exclude = yes
1142     }
1143     File = /
1144     File = /boot
1145     File = /home
1146     File = /rescue
1147     File = /usr
1148   }
1149 }
1150 \end{verbatim}
1151 \normalsize
1152
1153 Since /tmp is on its own filesystem and it was not explicitly named in the
1154 Include list, it is not really needed in the exclude list. It is better to
1155 list it in the Exclude list for clarity, and in case the disks are changed so
1156 that it is no longer in its own partition. 
1157
1158 Now, lets assume you only want to backup .Z and .gz files and nothing 
1159 else. This is a bit trickier because Bacula by default will select 
1160 everything to backup, so we must exclude everything but .Z and .gz files.
1161 If we take the first example above and make the obvious modifications
1162 to it, we might come up with a FileSet that looks like this:
1163
1164 \footnotesize 
1165 \begin{verbatim}
1166 FileSet {
1167   Name = "Full Set"
1168   Include {                    !!!!!!!!!!!!
1169      Options {                    This
1170         wildfile = "*.Z"          example
1171         wildfile = "*.gz"         doesn't
1172                                   work
1173      }                          !!!!!!!!!!!!
1174      File = /myfile
1175   }
1176 }
1177 \end{verbatim}
1178 \normalsize
1179
1180 The *.Z and *.gz files will indeed be backed up, but all other files
1181 that are not matched by the Options directives will automatically
1182 be backed up too (i.e. that is the default rule).
1183
1184 To accomplish what we want, we must explicitly exclude all other files.
1185 We do this with the following:
1186
1187 \footnotesize
1188 \begin{verbatim}
1189 FileSet {
1190   Name = "Full Set"
1191   Include {
1192      Options {
1193         wildfile = "*.Z"
1194         wildfile = "*.gz"
1195      }
1196      Options {
1197         Exclude = yes
1198         RegexFile = ".*"
1199      }
1200      File = /myfile
1201   }
1202 }
1203 \end{verbatim}
1204 \normalsize
1205
1206 The "trick" here was to add a RegexFile expression that matches
1207 all files. It does not match directory names, so all directories in
1208 /myfile will be backed up (the directory entry) and any *.Z and *.gz
1209 files contained in them. If you know that certain directories do
1210 not contain any *.Z or *.gz files and you do not want the directory
1211 entries backed up, you will need to explicitly exclude those directories.
1212 Backing up a directory entries is not very expensive.
1213
1214 Bacula uses the system regex library and some of them are
1215 different on different OSes. The above has been reported not to work
1216 on FreeBSD. This can be tested by using the {\bf estimate job=job-name
1217 listing} command in the console and adapting the RegexFile expression
1218 appropriately. In a future version of Bacula, we will supply our own
1219 Regex code to avoid such system dependencies.
1220
1221 Please be aware that allowing Bacula to traverse or change file systems can be
1222 {\bf very} dangerous. For example, with the following: 
1223
1224 \footnotesize
1225 \begin{verbatim}
1226 FileSet {
1227   Name = "Bad example"
1228   Include {
1229     Options { onefs=no }
1230     File = /mnt/matou
1231   }
1232 }
1233 \end{verbatim}
1234 \normalsize
1235
1236 you will be backing up an NFS mounted partition ({\bf /mnt/matou}), and since
1237 {\bf onefs} is set to {\bf no}, Bacula will traverse file systems. Now if {\bf
1238 /mnt/matou} has the current machine's file systems mounted, as is often the
1239 case, you will get yourself into a recursive loop and the backup will never
1240 end. 
1241
1242 As a final example, let's say that you have only one or two 
1243 subdirectories of /home that you want to backup.  For example,
1244 you want to backup only subdirectories beginning with the letter
1245 a and the letter b -- i.e. /home/a* and /home/b*.  Now, you might first
1246 try:
1247 \footnotesize
1248 \begin{verbatim}
1249 FileSet {
1250   Name = "Full Set"
1251   Include {
1252      Options {
1253         wilddir = "/home/a*"
1254         wilddir = "/home/b*"
1255      }
1256      File = /home
1257   }
1258 }
1259 \end{verbatim}
1260 \normalsize
1261
1262 The problem is that the above will include everything in /home.  To get
1263 things to work correctly, you need to start with the idea of exclusion
1264 instead of inclusion.  So, you could simply exclude all directories
1265 except the two you want to use:
1266 \footnotesize
1267 \begin{verbatim}
1268 FileSet {
1269   Name = "Full Set"
1270   Include {
1271      Options {
1272         RegexDir = "^/home/[c-z]"
1273         exclude = yes
1274      }
1275      File = /home
1276   }
1277 }
1278 \end{verbatim}
1279 \normalsize
1280
1281 And assuming that all subdirectories start with a lowercase letter, this
1282 would work.
1283
1284 An alternative would be to include the two subdirectories desired and
1285 exclude everything else:
1286 \footnotesize
1287 \begin{verbatim}
1288 FileSet {
1289   Name = "Full Set"
1290   Include {
1291      Options {
1292         wilddir = "/home/a*"
1293         wilddir = "/home/b*"
1294      }
1295      Options {
1296         RegexDir = ".*"
1297         exclude = yes
1298      }
1299      File = /home
1300   }
1301 }
1302 \end{verbatim}
1303 \normalsize
1304
1305 \section{Backing up Raw Partitions}
1306 \index[general]{Backing up!Partitions }
1307 \index[general]{Backing up Raw Partitions }
1308
1309 The following FileSet definition will backup a raw partition: 
1310
1311 \footnotesize
1312 \begin{verbatim}
1313 FileSet {
1314   Name = "RawPartition"
1315   Include {
1316     Options { sparse=yes }
1317     File = /dev/hda2
1318   }
1319 }
1320 \end{verbatim}
1321 \normalsize
1322
1323 While backing up and restoring a raw partition, you should ensure that no
1324 other process including the system is writing to that partition. As a
1325 precaution, you are strongly urged to ensure that the raw partition is not
1326 mounted or is mounted read-only. If necessary, this can be done using the {\bf
1327 RunBeforeJob} directive. 
1328
1329
1330 \section{Excluding Files and Directories}
1331 \index[general]{Directories!Excluding Files and }
1332 \index[general]{Excluding Files and Directories }
1333
1334 You may also include full filenames or directory names in addition to using
1335 wild-cards and {\bf Exclude=yes} in the Options resource as specified above by
1336 simply including the files to be excluded in an Exclude resource within the
1337 FileSet. For example: 
1338
1339 \footnotesize
1340 \begin{verbatim}
1341 FileSet {
1342   Name = Exclusion_example
1343   Include {
1344     Options {
1345       Signature = SHA1
1346     }
1347     File = /
1348     File = /boot
1349     File = /home
1350     File = /rescue
1351     File = /usr
1352   }
1353   Exclude {
1354     File = /proc
1355     File = /tmp
1356     File = .journal
1357     File = .autofsck
1358   }
1359 }
1360 \end{verbatim}
1361 \normalsize
1362
1363 \label{win32}
1364 \section{Windows FileSets}
1365 \index[general]{Windows FileSets }
1366 \index[general]{FileSets!Windows }
1367 If you are entering Windows file names, the directory path may be preceded by
1368 the drive and a colon (as in c:). However, the path separators must be
1369 specified in Unix convention (i.e. forward slash (/)). If you wish to include
1370 a quote in a file name, precede the quote with a backslash
1371 (\textbackslash{}). For example you might use the following
1372 for a Windows machine to backup the "My Documents" directory: 
1373
1374 \footnotesize
1375 \begin{verbatim}
1376 FileSet {
1377   Name = "Windows Set"
1378   Include {
1379     Options {
1380        WildFile = "*.obj"
1381        WildFile = "*.exe"
1382        exclude = yes
1383      }
1384      File = "c:/My Documents"
1385   }
1386 }
1387 \end{verbatim}
1388 \normalsize
1389
1390 For exclude lists to work correctly on Windows, you must observe the following
1391 rules: 
1392
1393 \begin{itemize}
1394 \item Filenames are case sensitive, so you must use the correct case.  
1395 \item To 2~exclude a directory, you must not have a trailing slash on the 
1396    directory name.  
1397 \item I2~f you have spaces in your filename, you must enclose the entire name 
1398    in double-quote characters ("). Trying to use a backslash before  the space
1399    will not work.  
1400 \item If you are using the old Exclude syntax (noted below), you may not
1401    specify a drive letter in the exclude.  The new syntax noted above
1402    should work fine including driver letters.
1403 \end{itemize}
1404
1405 Thanks to Thiago Lima for summarizing the above items for us. If you are
1406 having difficulties getting includes or excludes to work, you might want to
1407 try using the {\bf estimate job=xxx listing} command documented in the 
1408 \ilink{Console chapter}{estimate} of this manual. 
1409
1410 On Win32 systems, if you move a directory or file or rename a file into the
1411 set of files being backed up, and a Full backup has already been made, Bacula
1412 will not know there are new files to be saved during an Incremental or
1413 Differential backup (blame Microsoft, not me). To avoid this problem, please
1414 {\bf copy} any new directory or files into the backup area. If you do not have
1415 enough disk to copy the directory or files, move them, but then initiate a
1416 Full backup. 
1417
1418
1419 \paragraph*{A Windows Example FileSet}
1420 \index[general]{FileSet!Windows Example }
1421 \index[general]{Windows Example FileSet }
1422
1423 The following example was contributed by Russell Howe. Please note that
1424 for presentation purposes, the lines beginning with Data and Internet 
1425 have been wrapped and should included on the previous line with one
1426 space.
1427
1428 \footnotesize
1429 \begin{verbatim}
1430 This is my Windows 2000 fileset:
1431 FileSet {
1432  Name = "Windows 2000"
1433  Include {
1434   Options {
1435    signature = MD5
1436    Exclude = yes
1437    IgnoreCase = yes
1438    # Exclude Mozilla-based programs' file caches
1439    WildDir = "[A-Z]:/Documents and Settings/*/Application 
1440 Data/*/Profiles/*/*/Cache"
1441    WildDir = "[A-Z]:/Documents and Settings/*/Application 
1442 Data/*/Profiles/*/*/Cache.Trash"
1443    WildDir = "[A-Z]:/Documents and Settings/*/Application
1444 Data/*/Profiles/*/*/ImapMail"
1445
1446    # Exclude user's registry files - they're always in use anyway.
1447    WildFile = "[A-Z]:/Documents and Settings/*/Local Settings/Application
1448 Data/Microsoft/Windows/usrclass.*"
1449    WildFile = "[A-Z]:/Documents and Settings/*/ntuser.*"
1450
1451    # Exclude directories full of lots and lots of useless little files
1452    WildDir = "[A-Z]:/Documents and Settings/*/Cookies"
1453    WildDir = "[A-Z]:/Documents and Settings/*/Recent"
1454    WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/History"
1455    WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/Temp"
1456    WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/Temporary
1457 Internet Files"
1458
1459    # These are always open and unable to be backed up
1460    WildFile = "[A-Z]:/Documents and Settings/All Users/Application
1461 Data/Microsoft/Network/Downloader/qmgr[01].dat"
1462
1463    # Some random bits of Windows we want to ignore
1464    WildFile = "[A-Z]:/WINNT/security/logs/scepol.log"
1465    WildDir = "[A-Z]:/WINNT/system32/config"
1466    WildDir = "[A-Z]:/WINNT/msdownld.tmp"
1467    WildDir = "[A-Z]:/WINNT/Internet Logs"
1468    WildDir = "[A-Z]:/WINNT/$Nt*Uninstall*"
1469    WildDir = "[A-Z]:/WINNT/sysvol"
1470    WildFile = "[A-Z]:/WINNT/cluster/CLUSDB"
1471    WildFile = "[A-Z]:/WINNT/cluster/CLUSDB.LOG"
1472    WildFile = "[A-Z]:/WINNT/NTDS/edb.log"
1473    WildFile = "[A-Z]:/WINNT/NTDS/ntds.dit"
1474    WildFile = "[A-Z]:/WINNT/NTDS/temp.edb"
1475    WildFile = "[A-Z]:/WINNT/ntfrs/jet/log/edb.log"
1476    WildFile = "[A-Z]:/WINNT/ntfrs/jet/ntfrs.jdb"
1477    WildFile = "[A-Z]:/WINNT/ntfrs/jet/temp/tmp.edb"
1478    WildFile = "[A-Z]:/WINNT/system32/CPL.CFG"
1479    WildFile = "[A-Z]:/WINNT/system32/dhcp/dhcp.mdb"
1480    WildFile = "[A-Z]:/WINNT/system32/dhcp/j50.log"
1481    WildFile = "[A-Z]:/WINNT/system32/dhcp/tmp.edb"
1482    WildFile = "[A-Z]:/WINNT/system32/LServer/edb.log"
1483    WildFile = "[A-Z]:/WINNT/system32/LServer/TLSLic.edb"
1484    WildFile = "[A-Z]:/WINNT/system32/LServer/tmp.edb"
1485    WildFile = "[A-Z]:/WINNT/system32/wins/j50.log"
1486    WildFile = "[A-Z]:/WINNT/system32/wins/wins.mdb"
1487    WildFile = "[A-Z]:/WINNT/system32/wins/winstmp.mdb"
1488
1489    # Temporary directories & files
1490    WildDir = "[A-Z]:/WINNT/Temp"
1491    WildDir = "[A-Z]:/temp"
1492    WildFile = "*.tmp"
1493    WildDir = "[A-Z]:/tmp"
1494    WildDir = "[A-Z]:/var/tmp"
1495
1496    # Recycle bins
1497    WildDir = "[A-Z]:/RECYCLER"
1498
1499    # Swap files
1500    WildFile = "[A-Z]:/pagefile.sys"
1501
1502    # These are programs and are easier to reinstall than restore from
1503    # backup
1504    WildDir = "[A-Z]:/cygwin"
1505    WildDir = "[A-Z]:/Program Files/Grisoft"
1506    WildDir = "[A-Z]:/Program Files/Java"
1507    WildDir = "[A-Z]:/Program Files/Java Web Start"
1508    WildDir = "[A-Z]:/Program Files/JavaSoft"
1509    WildDir = "[A-Z]:/Program Files/Microsoft Office"
1510    WildDir = "[A-Z]:/Program Files/Mozilla Firefox"
1511    WildDir = "[A-Z]:/Program Files/Mozilla Thunderbird"
1512    WildDir = "[A-Z]:/Program Files/mozilla.org"
1513    WildDir = "[A-Z]:/Program Files/OpenOffice*"
1514   }
1515
1516   # Our Win2k boxen all have C: and D: as the main hard drives.
1517   File = "C:/"
1518   File = "D:/"
1519  }
1520 }
1521 \end{verbatim}
1522 \normalsize
1523
1524 Note, the three line of the above Exclude were split to fit on the document
1525 page, they should be written on a single line in real use. 
1526
1527 \paragraph*{Windows NTFS Naming Considerations}
1528 \index[general]{Windows NTFS Naming Considerations }
1529 \index[general]{Considerations!Windows NTFS Naming }
1530
1531 NTFS filenames containing Unicode characters should now be supported
1532 as of version 1.37.30 or later.
1533
1534 \section{Testing Your FileSet}
1535 \index[general]{FileSet!Testing Your }
1536 \index[general]{Testing Your FileSet }
1537
1538 If you wish to get an idea of what your FileSet will really backup or if your
1539 exclusion rules will work correctly, you can test it by using the {\bf
1540 estimate} command in the Console program. See the 
1541 \ilink{estimate}{estimate} in the Console chapter of this
1542 manual.
1543
1544 As an example, suppose you add the following test FileSet:
1545
1546 \footnotesize
1547 \begin{verbatim}
1548 FileSet {
1549   Name = Test
1550   Include {
1551     File = /home/xxx/test
1552     Options {
1553        regex = ".*\.c$"
1554     }
1555   }
1556 }
1557 \end{verbatim}
1558 \normalsize
1559
1560 You could then add some test files to the directory {\bf /home/xxx/test}
1561 and use the following command in the console:
1562
1563 \footnotesize
1564 \begin{verbatim}
1565 estimate job=<any-job-name> listing client=<desired-client> fileset=Test
1566 \end{verbatim}
1567 \normalsize
1568
1569 to give you a listing of all files that match.