PACKINGRULES(5) File Formats and Configurations PACKINGRULES(5)
NAME
packingrules - packing rules file for filesync
SYNOPSIS
$HOME/.packingrulesDESCRIPTION
$HOME/.packingrules is a packing rules file for
filesync.
$HOME/.packingrules contains a list of directories and files that are
to be packed and synchronized. It also contains a list of
directories and files that are to be specifically excluded from
packing and synchronization. See
filesync(1).
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
permanently 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 expressions 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
following formats:
PACKINGRULES major.
minor. This line is not actually 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
file(1).
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 specified. 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 environment variables.
LIST name ...
This line enumerates a list of files and sub-directories
(beneath the current
BASE) that are to be kept synchronized.
This specification is recursive, in that specifying the name of a
directory automatically includes all files and subdirectories it
contains. Regular expressions (as described in
glob and
gmatch)
are permitted. See
glob(1) and
gmatch(3GEN).
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 directories. 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
exclamation 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
executed as a command. The command will be run in the current
BASE directory. 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.
EXAMPLES
Example 1: A sample $HOME.packingrules file.
The use of these statements is illustrated in the following
$HOME.packingrules file.
#
# 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
LIST work
# a few of my favorite mail boxes should be replicated
LIST m/incoming
LIST m/action
LIST m/pending
#
# 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
IGNORE *.ps
#
# 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
SEE ALSO
file(1),
filesync(1) September 8, 2015 PACKINGRULES(5)