packingrules(4) File Formats packingrules(4)
packingrules - packing rules file for cachefs and filesync
$HOME/.packingrules is a packing rules file for filesync and cachefs-
pack. $HOME/.packingrules contains a list of directories and files that
are to be packed and synchronized. It also contains a list of directo-
ries and files that are to be specifically excluded from packing and
synchronization. See filesync(1) and cachefspack(1M).
The $HOME/.packingrules file is automatically created if users invoke
filesync with filename arguments. By using filesync options, users can
augment the packing rules in $HOME/.packingrules.
Many users choose to manually create the packing rules file and edit it
by hand. Users can edit $HOME/.packingrules (using any editor) to per-
manently change the $HOME/.packingrules file, or to gain access to more
powerful options that are not available from the command line (such as
IGNORE commands). It is much easier to enter complex wildcard expres-
sions by editing the $HOME/.packingrules file.
Blank lines and lines that begin with a pound sign (`#') are ignored.
Any line can be continued by placing a backslash (`\') immediately
before the NEWLINE.
All other lines in the $HOME/.packingrules file have one of the fol-
PACKINGRULES major. minor. This line is not actu-
ally required, but it should be the
first line of every packing rules
file. This line identifies the packing
rules file for the file(1) command and
specifies a format version number. The
current version number is 1.1. See
BASE directory-1 [directory-2] This line identifies a directory (or
pair of directories) under which files
should be packed and synchronized. At
least one directory name must be speci-
fied. For rules that are to be used by
filesync a second directory name (where
the copies are to be kept) must also be
specified. The arguments must be fully
qualified path names, and may include
LIST name ... This line enumerates a list of files
and sub-directories (beneath the cur-
BASE) that are to be kept synchro-
nized. This specification is recursive,
in that specifying the name of a direc-
tory automatically includes all files
and subdirectories it contains. Regular
expressions (as described in glob and
gmatch) are permitted. See glob(1) and
IGNORE name ... This line enumerates a list of files
that are not to be kept synchronized.
Regular expressions (using glob and
gmatch) are permitted.
There are important differences between the arguments to LIST and
IGNORE statements. The arguments to a LIST statement can contain
slashes and are interpreted as file names relative to the BASE direc-
tories. The arguments to an IGNORE statement are simpler names or
expressions that cannot contain slashes. An IGNORE statement will not
override a LIST statement. IGNORE statements only exclude files that
are found beneath LISTed directories.
If the first name argument to a LIST statement begins with an exclama-
tion point (`!'), the remainder of the statement will be executed as a
command. The command will be run in the current BASE directory. The
output of the command will be treated as a list of newline separated
file names to be packed/synchronized. The resulting file names will be
interpreted relative to the enclosing BASE directory.
If the first name argument to an IGNORE statement begins with an
exclamation point (`!'), the remainder of the statement will be exe-
cuted as a command. The command will be run in the current BASE direc-
tory. The command will be expected to figure out which names should not
be synchronized. The output of the command will be treated as a list of
newline separated file names that should be excluded from the packing
and synchronization list.
Commands will be broken into distinct arguments and run directly with
sh -c. Blanks can be embedded in an argument by escaping them with a
backslash (`\') or enclosing the argument in double quotes (` " ').
Double quotes can be passed in arguments by escaping the double quotes
with a backslash (`\').
LIST lines only apply to the BASE statement that precedes them. IGNORE
lines can appear before any BASE statement (in which case they apply
to all BASEs) or after a BASE statement (in which case they only
apply to the BASE that precedes them). Any number of these statements
can occur in any combination. The order is not important.
Example 1: A sample $HOME.packingrules file.
The use of these statements is illustrated in the following $HOME.pack-
# junk files, not worth copying
IGNORE core *.o *.bak *%
# most of the stuff I want to keep in sync is in my $HOME
BASE /net/bigserver/export/home/myname $HOME
# everything in my work sub-directory should be maintained
# a few of my favorite mail boxes should be replicated
# I like to carry around a couple of project directories
# but skip all the postscript output
BASE /net/bigserver/export/projects $HOME/projects
LIST poindexter epiphany
# the foonly package should always be kept on every machine
BASE /net/bigserver/opt/foonly /opt/foonly
LIST !cat .packinglist
# and the latest executables for the standard build environment
BASE /net/bigserver/export/buildenv $HOME/buildenv
LIST !find . -type f -a -perm -111 -a -print
file(1), filesync(1), cachefspack(1M)
SunOS 5.10 23 Dec 1996 packingrules(4)