% bup-config(5) Bup 0.34 % Rob Browning rlb@defaultvalue.org % 0.34
NAME
bup-config - bup configuration options
DESCRIPTION
The following options may be set in the relevant git config
(git-config(1)). For example:
git --git-dir="$BUP_DIR" config bup.split.trees true
OPTIONS
bup.repo.id : When set, an identifier for the repository which should be unique across all repositories encountered. Because it is currently used in filesystem paths, it must consist of only the characters within double-quotes here: "0123456789_-", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", and "abcdefghijklmnopqrstuvwxyz". Two repo-ids must also not differ only in case ("something" vs "SOMETHING") unless all all relevant filesystems are case sensitive.
`bup init` now adds a random identifier when it creates new
repositories or refreshes a existing repository that doesn't have
a `bup.repo.id`, so you can add one to repositories created before
this became the norm by re-running `bup init`. If you do set your
own identifier, consider including randomized content to help
ensure uniqueness.
Note: you should always change the identifier of a copied
repository (e.g. locally via `cp`(1) or across hosts via
`rsync`(1)) since duplicate identifiers can cause significant
performance problems, if nothing else.
bup.server.deduplicate-writes (default true)
: When true bup-server(1) checks each incoming object against its
local index, and if the object already exists, the server suggests
to the client that it download the *.idx file that the object
was found in so that it can avoid sending duplicate data.
When false the server does not check its local index before
writing objects. To avoid writing duplicate objects, the server
tells the client to download all of its `*.idx` files at the start
of the session. This mode is useful on more limited server
hardware (i.e. routers, slow NAS devices, etc.).
If no value is set, and a `$BUP_DIR/dumb-server-mode` file exists,
then `bup` will act as if this setting were `false`.
bup.split.files (default legacy:13)
: Method used to split data for deduplication, for example by bup save or bup split. Should not normally be changed after adding
any data to the repository (see below).
This determines the "granularity" of the deduplication, with
larger values producing, on average, larger chunks. The value must
be a string like `legacy:N` where the integer `N` must be greater
than 12 and less than 22. The default of 13 provides backward
compatibility, but it is recommended to increase this for larger
repositories.
`N` specifies the number of fixed bits in the hash-split algorithm
that when all set to one produce a chunk boundary, and thus it
determines the average size of the deduplicated objects. This
represents a trade-off between the efficiency of the deduplication
(fewer bits means better deduplication) as compared to the amount
of metadata to keep on disk and the RAM usage during repo
operations (more bits means fewer objects, means less metadata
space and RAM use). The expected average blob size is 2^bits (1
<< bits). A sufficiently small change in a file would cause that
much new data to be saved (plus tree metadata). The maximum blob
size is four times that.
The historical default of `legacy:13` is probably small for many
current repositories. As mentioned above, setting it higher
should decrease the RAM required for many operations by roughly a
factor of two per increment while also increasing the repository's
size by some amount (because it exposes less potential
deduplication), but the effect depends on the data stored in the
repository (file sizes, deduplication rates, etc.). If you have
the space and time, you can always test different values for your
data by comparing `bup get --rewrite`s to new repositories with
different settings.
`legacy` refers to the current split method, which has an
unintentional, but harmless quirk. See DESIGN in the source tree
for further details.
*NOTE:* Changing this value in an existing repository will
duplicate data because it causes the split boundaries to change,
so subsequent saves will not deduplicate against the existing
data; they will just store the data again.
*NOTE:* As with `bup.split.trees` below (see NOTE), using the same
index for repositories with different `bup.split.files` settings
will result in the index optimizations not working correctly, and
so `bup save` will have to completely re-read files that haven't
been modified, which is expensive.
bup.split.trees
: When this boolean option is set to true, bup will attempt to
split trees (directories) when writing to the repository during,
for example bup save ..., bup gc .., etc. This can notably
decrease the size of the new data added to the repository when
large directories have changed (e.g. large active Maildirs). See
"Handling large directories" in the DESIGN in the bup source for
additional information.
*NOTE:* Using the same index to save to repositories that have
differing values for this option can decrease performance because
the index includes hashes for directories that have been saved and
changing this option changes the hashes for directories that are
affected by splitting.
A directory tree's hash allows bup to avoid traversing the
directory if the index indicates that it didn't otherwise change
and the tree object with that hash already exists in the
destination repository. Since the the value of this setting
changes the hashes of splittable trees, the hash in the index
won't be found in a repository that has a different
`bup.split.trees` value from the one to which that tree was last
saved. As a result, any (usually big) directory subject to tree
splitting will have to be re-read and its related hashes
recalculated.
core.compression
: The default pack file compression level if core.compression
isn't set. If this isn't set either, the default is 1 (unlike
git, which defaults to -1). A compression level given on the
command-line overrides this. See also git-config(1).
pack.compression
: The default pack file compression level. If not given, falls back
to core.compression. See also git-config(1).
pack.packSizeLimit
: Limits the maximum pack size (see git-config(1)) when writing
pack files (e.g. via bup save). This setting is relevant when
set in the destination repository (which may be remote). The
default value is 1e9 bytes, i.e. about 0.93 GiB, and bup may
exceed this limit by a chunk. However, setting it to e.g. "2g" (2
GiB) will still mean that all objects in the pack can be addressed
by a 31-bit offset, and thus need no large offset in the idx file.
ENVIRONMENT
BUP_DIR
: When set, the default repository location, unless overridden by
bup -d on the command line.
XDG_CACHE_HOME/bup : The preferred cache location.
FILES
$XDG_CACHE_HOME/bup/remote
~/.cache/bup/remote \
$BUP_DIR/index-cache
: The client index cache locations, in order of precedence. Remote
repository data is stored here during operations like bup save -r. Currently bup looks for existing data in precedence order,
and if none is found for the repository of interest then bup
will use $XDG_CACHE_HOME/bup/remote if $XDG_CACHE_HOME is set
and ~/.cache/bup/remote otherwise.
SEE ALSO
git-config(1)
BUP
Part of the bup(1) suite.