Include and exclude option processing
The IBM® Storage Protect 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.
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.



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.
When performing an incremental backup, the client evaluates all
exclude.dir statements first, and removes the excluded directories and files from
the list of objects available for processing.



When performing an incremental backup, the client
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.
After evaluating all exclude.dir statements, the
client 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.



After evaluating all exclude.fs and
exclude.dir statements, the client 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, the client 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:
- Files are checked; directories are only checked if the exclude.dir option is specified.
- 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.
- 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.




- Example 1
- Assume that
La Pommeis 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:- Rule 3 (the last include or exclude statement
defined) is checked first because of bottom-up processing. The pattern
/Volumes/La Pomme/Foo/Junk/*.cppdoes not match the file name that is being processed. - Processing moves to Rule 2 and checks. This time, pattern
/Volumes/La Pomme/Foo/.../*.cppmatches the file name that is being processed. Processing stops, the option is checked, and it is included. - File
/Volumes/La Pomme/Foo/Dev/test.cppis backed up.
- Rule 3 (the last include or exclude statement
defined) is checked first because of bottom-up processing. The pattern
- Example 2
- Assume that
La Pommeis 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:- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and finds no match.
- Because a match is not found,
Volumes/La Pomme/Widget/Sample Fileis 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/*.oThe file being processed is:
/home/foo/dev/test.o. Processing follows these steps:- Rule 3 (the last statement defined) is checked first because of
bottom-up processing. The pattern
/home/foo/junk/*.odoes not match the file name that is being processed. - Processing moves to Rule 2 and checks. This time, pattern
/home/foo/.../*.omatches the file name that is being processed. Processing stops, the option is checked, and it is include. - File
/home/foo/dev/test.ois backed up.
- Rule 3 (the last statement defined) is checked first because of
bottom-up processing. The pattern
- 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/*.oThe file being processed is:
/home/widg/copyit.txt. Processing follows these steps:- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and finds no match.
- Because a match is not found, file
/home/widg/copyit.txtis 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/*.oThe current file being processed is:
/home/lib/objs/printf.o. Processing follows these steps:- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and a match is found.
- Processing stops, the option is checked, and it is excluded.
- File
/home/lib/objs/printf.ois 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/*.oThe current file being processed is: /home/lib/objs/printf.o. Processing follows these steps:
- 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.
- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and a match is found.
- Processing stops, the option is checked, and it is excluded.
- File /home/lib/objs/printf.o is not backed up.

- 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\*.objThe file being processed is:
c:\foo\dev\test.obj. Processing follows these steps:- Rule 3 (the last statement defined) is checked first because of
bottom-up processing. The pattern
c:\foo\junk\*.objdoes not match the file name that is being processed. - Processing moves to Rule 2 and checks. This time, pattern
c:\foo\...\*.objmatches the file name that is being processed. Processing stops, the option is checked, and it is included. - File
c:\foo\dev\test.objis backed up.
- Rule 3 (the last statement defined) is checked first because of
bottom-up processing. The pattern
- 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\*.objThe file being processed is:
c:\widg\copyit.bat. Processing follows these steps:- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and finds no match.
- Because a match is not found, file
c:\widg\copyit.batis 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\*.objThe current file being processed is:
c:\lib\objs\printf.obj. Processing follows these steps:- Rule 3 is checked and finds no match.
- Rule 2 is checked and finds no match.
- Rule 1 is checked and a match is found.
- Processing stops, the option is checked, and it is excluded.
- File
c:\lib\objs\printf.objis not backed up.