IBM Tivoli Storage Manager, Version 7.1

Include and exclude option processing

The Tivoli® Storage Manager server can define include-exclude options using the inclexcl parameter in a client option set.

The include-exclude statements specified by the server are evaluated along with those in the client options file. The server include-exclude statements are always enforced and placed at the bottom of the include-exclude list and evaluated before the client include-exclude statements.

Windows operating systems If the client options file include-exclude list contains one or more inclexcl options that specify include-exclude files, the include-exclude statements in these files are placed in the list position occupied by the inclexcl option and processed accordingly.

AIX operating systems HP-UX operating systems Linux operating systems Oracle Solaris operating systems Mac OS X operating systems If the dsm.sys file include-exclude list contains one or more inclexcl options that specify include-exclude files, the include-exclude statements in these files are placed in the list position occupied by the inclexcl option and processed accordingly.

A very large include-exclude list can decrease backup performance. Use wildcards and eliminate unnecessary include statements to keep the list as short as possible.

Windows operating systems When performing an incremental backup, Tivoli Storage Manager evaluates all exclude.dir statements first, and removes the excluded directories and files from the list of objects available for processing.

AIX operating systems HP-UX operating systems Linux operating systems Oracle Solaris operating systems Mac OS X operating systems When performing an incremental backup, Tivoli Storage Manager evaluates all exclude.fs and exclude.dir statements first, and removes the excluded file spaces, directories, and files from the list of objects available for processing.

Windows operating systems After evaluating all exclude.dir statements, Tivoli Storage Manager evaluates the include-exclude list from the bottom up and stops when it finds an include or exclude statement that matches the file it is processing. The order in which the include and exclude options are entered therefore affects which files are included and excluded.

AIX operating systems HP-UX operating systems Linux operating systems Oracle Solaris operating systems Mac OS X operating systems After evaluating all exclude.fs and exclude.dir statements, Tivoli Storage Manager evaluates the include-exclude statements for controlling symbolic link or alias processing (exclude.attribute.symlink and include.attribute.symlink) from the bottom up and stops if it finds an include or exclude statement that matches the file it is processing. After the include-exclude statements for controlling symbolic link or alias processing are processed, Tivoli Storage Manager evaluates the remaining include-exclude list from the bottom up and stops when it finds an include or exclude statement that matches the file it is processing. The order in which the include and exclude options are entered therefore affects which files are included and excluded.

To display a list of all include-exclude statements in effect on your client workstation in the actual order they are processed, use the query inclexcl command.

The client program processes the list of include-exclude statements according to the following rules:

  1. Files are checked; directories are only checked if the exclude.dir option is specified.
  2. File names are compared to the patterns in the include-exclude list from the bottom up. When a match is found, the processing stops and checks whether the option is include or exclude. If the option is include, the file is backed up. If the option is exclude, the file is not backed up.
    Note: If a match is not found, files are implicitly included and backed up.
  3. When a file is backed up, it is bound to the default management class unless it matched an include statement that specified a different management class name, in which case the file is bound to that management class.
The following examples demonstrate bottom up processing. Mac OS X operating systems AIX operating systems HP-UX operating systems Linux operating systems Oracle Solaris operating systems
Example 1
Assume that La Pomme is not the startup disk.
   EXCLUDE /.../*.cpp 
   INCLUDE "/Volumes/La Pomme/Foo/.../*.cpp" 
   EXCLUDE "/Volumes/La Pomme/Foo/Junk/*.cpp"

The file being processed is: /Volumes/La Pomme/Foo/Dev/test.cpp. Processing follows these steps:

  1. Rule 3 (the last include or exclude statement defined) is checked first because of bottom-up processing. The pattern /Volumes/La Pomme/Foo/Junk/*.cpp does not match the file name that is being processed.
  2. Processing moves to Rule 2 and checks. This time, pattern /Volumes/La Pomme/Foo/.../*.cpp matches the file name that is being processed. Processing stops, the option is checked, and it is included.
  3. File /Volumes/La Pomme/Foo/Dev/test.cpp is backed up.
Example 2
Assume that La Pomme is not the startup disk.
   EXCLUDE /.../*.cpp 
   INCLUDE "/Volumes/La Pomme/Foo/.../*.cpp" 
   EXCLUDE "/Volumes/La Pomme/Foo/Junk/*.cpp"

The file being processed is: /Volumes/La Pomme/Widget/Sample File. Processing follows these steps:

  1. Rule 3 is checked and finds no match.
  2. Rule 2 is checked and finds no match.
  3. Rule 1 is checked and finds no match.
  4. Because a match is not found, Volumes/La Pomme/Widget/Sample File is implicitly included and is backed up.
Example 3
Assume that you defined the following statements for the include and exclude options:
   exclude *.o
   include /home/foo/.../*.o
   exclude /home/foo/junk/*.o

The file being processed is: /home/foo/dev/test.o. Processing follows these steps:

  1. Rule 3 (the last statement defined) is checked first because of bottom-up processing. The pattern /home/foo/junk/*.o does not match the file name that is being processed.
  2. Processing moves to Rule 2 and checks. This time, pattern /home/foo/.../*.o matches the file name that is being processed. Processing stops, the option is checked, and it is include.
  3. File /home/foo/dev/test.o is backed up.
Example 4
Assume that you defined the following statements for the include and exclude options:
   exclude *.obj
   include /home/foo/.../*.o
   exclude /home/foo/junk/*.o

The file being processed is: /home/widg/copyit.txt . Processing follows these steps:

  1. Rule 3 is checked and finds no match.
  2. Rule 2 is checked and finds no match.
  3. Rule 1 is checked and finds no match.
  4. Because a match is not found, file /home/widg/copyit.txt is implicitly included and backed up.
Example 5
Assume that you defined the following statements for the include and exclude options:
   exclude /.../*.o
   include /home/foo/.../*.o
   exclude /home/foo/junk/*.o

The current file being processed is: /home/lib/objs/printf.o. Processing follows these steps:

  1. Rule 3 is checked and finds no match.
  2. Rule 2 is checked and finds no match.
  3. Rule 1 is checked and a match is found.
  4. Processing stops, the option is checked, and it is excluded.
  5. File /home/lib/objs/printf.o is not backed up.
Example 6
Assume that you defined the following statements for the include and exclude options:
  exclude.attribute.symlink /.../*
  exclude /.../*.o
  include /home/foo/.../*.o
  exclude /home/foo/junk/*.o

The current file being processed is: /home/lib/objs/printf.o. Processing follows these steps:

  1. The exclude.attribute.symlink statement is checked first. If the printf.o file is a symbolic link it is excluded, otherwise proceed to the next step. Note that the exclude.attribute.symlink statements are always processed before the other include-exclude statements, regardless of their position in the include-exclude list.
  2. Rule 3 is checked and finds no match.
  3. Rule 2 is checked and finds no match.
  4. Rule 1 is checked and a match is found.
  5. Processing stops, the option is checked, and it is excluded.
  6. File /home/lib/objs/printf.o is not backed up.
Windows operating systems
Example 1
Assume that you defined the following statements for the include and exclude options:
   exclude ?:\*.obj
   include c:\foo\...\*.obj
   exclude c:\foo\junk\*.obj

The file being processed is: c:\foo\dev\test.obj. Processing follows these steps:

  1. Rule 3 (the last statement defined) is checked first because of bottom-up processing. The pattern c:\foo\junk\*.obj does not match the file name that is being processed.
  2. Processing moves to Rule 2 and checks. This time, pattern c:\foo\...\*.obj matches the file name that is being processed. Processing stops, the option is checked, and it is included.
  3. File c:\foo\dev\test.obj is backed up.
Example 2
Assume that you defined the following statements for the include and exclude options:
   exclude ?:\*.obj
   include c:\foo\...\*.obj
   exclude c:\foo\junk\*.obj

The file being processed is: c:\widg\copyit.bat. Processing follows these steps:

  1. Rule 3 is checked and finds no match.
  2. Rule 2 is checked and finds no match.
  3. Rule 1 is checked and finds no match.
  4. Because a match is not found, file c:\widg\copyit.bat is implicitly included and backed up.
Example 3
Assume that you defined the following statements for the include and exclude options:
   exclude ?:\...\*.obj
   include c:\foo\...\*.obj
   exclude c:\foo\junk\*.obj

The current file being processed is: c:\lib\objs\printf.obj. Processing follows these steps:

  1. Rule 3 is checked and finds no match.
  2. Rule 2 is checked and finds no match.
  3. Rule 1 is checked and a match is found.
  4. Processing stops, the option is checked, and it is excluded.
  5. File c:\lib\objs\printf.obj is not backed up.


Feedback