]> arthur.barton.de Git - bup.git/blob - Documentation/bup-margin.md
042c1825ff954c4c671f1b4fb29e960fc18d6a59
[bup.git] / Documentation / bup-margin.md
1 % bup-margin(1) Bup %BUP_VERSION%
2 % Avery Pennarun <apenwarr@gmail.com>
3 % %BUP_DATE%
4
5 # NAME
6
7 bup-margin - figure out your deduplication safety margin
8
9 # SYNOPSIS
10
11 bup margin
12
13 # DESCRIPTION
14
15 `bup margin` iterates through all objects in your bup
16 repository, calculating the largest number of prefix bits
17 shared between any two entries.  This number, `n`,
18 identifies the longest subset of SHA-1 you could use and still
19 encounter a collision between your object ids.
20
21 For example, one system that was tested had a collection of
22 11 million objects (70 GB), and `bup margin` returned 45.
23 That means a 46-bit hash would be sufficient to avoid all
24 collisions among that set of objects; each object in that
25 repository could be uniquely identified by its first 46
26 bits.
27
28 The number of bits needed seems to increase by about 1 or 2
29 for every doubling of the number of objects.  Since SHA-1
30 hashes have 160 bits, that leaves 115 bits of margin.  Of
31 course, because SHA-1 hashes are essentially random, it's
32 theoretically possible to use many more bits with far fewer
33 objects.
34
35 If you're paranoid about the possibility of SHA-1
36 collisions, you can monitor your repository by running `bup
37 margin` occasionally to see if you're getting dangerously
38 close to 160 bits.
39
40 # EXAMPLE
41
42     $ bup margin
43     Reading indexes: 100.00% (11188299/11188299), done.
44     45
45     
46
47 # SEE ALSO
48
49 `bup-midx`(1), `bup-save`(1)
50
51 # BUP
52
53 Part of the `bup`(1) suite.