NAME¶
fpart
—
Sort and pack files into partitions.
SYNOPSIS¶
fpart |
[-h ] [-V ]
-n num |
-f files |
-s size
[-i infile]
[-a ] [-o
outfile] [-e ]
[-v ] [-l ]
[-b ] [-y
pattern] [-Y
pattern] [-x
pattern] [-X
pattern] [-z ]
[-Z ] [-d
depth] [-D ]
[-L ] [-w
cmd] [-W
cmd] [-p
num] [-q
num] [-r
num] [FILE or DIR...] |
DESCRIPTION¶
The fpart
utility helps you sort file trees and pack
them into bags (called "partitions").
GENERAL OPTIONS¶
-h
- Print help
-V
- Print version
PARTITION CONTROL¶
-n
num
- Create exactly num partitions and try to generate
partitions with the same size and number of files. This option cannot be
used in conjunction with
-f
,
-s
or -L
.
-f
files
- Create partitions containing at most files files.
This option can be used in conjunction with
-s
and
-L
.
-s
size
- Create partitions with a maximum size of size bytes.
With this option, partition 0 may be used to handle files that do not fit
in a regular partition, given the provided size
limit. This option can be used in conjunction with
-f
and -L
.
-i
infile
- Read file list from infile. If
infile is “
-
”,
then list is read from stdin.
-a
- Input contains arbitrary values; just sort them (do not crawl filesystem).
Input must follow the
“
size(blank)path
” scheme. This
option is incompatible with crawling-related options.
OUTPUT CONTROL¶
-o
outfile
- Output partitions' contents to outfile template.
Multiple files will be generated given that template. Each
outfile will get partition number as a suffix. If
outfile is
“
-
”, then partitions will be printed
to stdout, with partition number used as a prefix (so you can grep
partitions you are interested in, or do whatever you want).
-e
- When adding directories (see
DIRECTORY HANDLING ), add an
ending “
/
” to each directory
entry.
-v
- Verbose mode (may be specified more than once).
FILESYSTEM CRAWLING CONTROL¶
-l
- Follow symbolic links (default: do not follow).
-b
- Do not cross filesystem boundaries (default: cross).
-y
pattern
- Include files or directories matching pattern only
(and discard all other files). This option may be specified several times.
It does not apply when computing size of directories to be added as leaf
entries (the computed size will then include every file within
directory).
-Y
pattern
- Same as
-y
but case insensitive. This option may
not be available on your platform (at least FreeBSD and GNU/Linux support
it, Solaris does not).
-x
pattern
- Exclude files or directories matching pattern. This
option can be used in conjunction with
-y
and
-Y
. In this case, exclusion is performed after.
This option may be specified several times. It does not apply when
computing size of directories to be added as leaf entries (the computed
size will then include every file within directory).
-X
pattern
- Same as
-x
but case insensitive. This option may
not be available on your platform (at least FreeBSD and GNU/Linux support
it, Solaris does not).
DIRECTORY HANDLING¶
-z
- Pack empty directories. By default, fpart will pack files only (except
when using the
-d
or -D
options). This option can be useful for tools such as
rsync(1) to be able to recreate a full file tree when
used with fpart (e.g. using rsync's --files-from option). See the
-Z
option to also pack un-readable
directories.
-Z
- Implies
-z
. Treat un-readable directories as
empty, causing them to be packed anyway.
-d
depth
- After a certain depth, pack directories instead of
files (directories themselves will be added to partitions, instead of
their content).
-D
- Implies
-z
. Pack leaf directories: if a directory
contains files only, it will be packed as a single entry.
LIVE MODE¶
-L
- Live mode (default: disabled). When using this mode, partitions will be
generated while crawling filesystem. This option saves time and memory,
but does not give partition 0 a special meaning (see option
-s
). As a consequence, it can generate partitions
larger than the size specified with option -s
.
This option can be used in conjunction with options
-f
and -s
, but not with
option -n
.
-w
cmd
- When using live mode, execute cmd when starting a
new partition (before having opened next output file, if any).
cmd is run in a specific environment that provides
several variables describing the state of the program:
FPART_HOOKTYPE
("pre-part" or
"post-part"), FPART_PARTFILENAME
(current partition's output file name),
FPART_PARTNUMBER
(current partition number),
FPART_PARTSIZE
(current partition size),
FPART_PARTNUMFILES
(number of files in current
partition), FPART_PID
(PID of fpart). Note that
variables may or may not be defined, depending of requested options and
current partition's state when the hook is triggered. Also, note that
hooks are executed in a synchronous way while crawling filesystem, so 1)
avoid executing commands that take a long time to return as it slows down
filesystem crawling and 2) do not presume cwd (PWD) is the one fpart has
been started in, as it is regularly changed to speed up crawling (use
abolute paths within hooks).
-W
cmd
- Same as
-w
, but executes cmd
when finishing a partition (after having closed last output file, if
any).
SIZE HANDLING¶
-p
num
- Preload each partition with num bytes.
-q
num
- Overload each file size with num bytes.
-r
num
- Round each file size up to next num bytes multiple.
This option can be used in conjunction with overloading, which is done
*before* rounding.
EXAMPLES¶
Here are some examples:
fpart
-n 3 -o var-parts /var
- Produce 3 partitions, with (hopefully) the same size and number of files.
Three files: var-parts.0, var-parts.1 and var-parts.2 are generated as
output.
fpart
-s 4724464025 -o music-parts /path/to/music ./*.mp3
- Produce partitions of 4.4 GB, containing music files from /path/to/music
as well as MP3 files from current directory; with such a partition size,
each partition content will be ready to be burnt to a DVD. Files
music-parts.0 to music-parts.n, are generated as output.
find
/usr ! -type d | fpart -f 10000 -i - /home | grep '^0:'
- Produce partitions containing 10000 files each by examining /usr first and
then /home and display only partition 0 on stdout.
du
* | fpart -n 2 -a
- Produce two partitions by using du(1) output. Fpart will
not examine the file system but instead use arbitrary values printed by
du(1) and sort them.
BUGS¶
No bug known (yet).