borg/docs/internals.rst

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

47 lines
1.6 KiB
ReStructuredText
Raw Permalink Normal View History

.. include:: global.rst.inc
.. _internals:
Internals
=========
2017-06-19 08:01:55 +00:00
The internals chapter describes and analyses most of the inner workings
of Borg.
2015-06-07 00:15:13 +00:00
Borg uses a low-level, key-value store, the :ref:`repository`, and
implements a more complex data structure on top of it, which is made
up of the :ref:`manifest <manifest>`, :ref:`archives <archive>`,
:ref:`items <item>` and data :ref:`chunks`.
2015-06-07 00:15:13 +00:00
Each repository can hold multiple :ref:`archives <archive>`, which
represent individual backups that contain a full archive of the files
specified when the backup was performed.
2017-02-17 18:29:03 +00:00
Deduplication is performed globally across all data in the repository
(multiple backups and even multiple hosts), both on data and file
metadata, using :ref:`chunks` created by the chunker using the
Buzhash_ algorithm ("buzhash" chunker) or a simpler fixed blocksize
algorithm ("fixed" chunker).
2015-06-07 00:15:13 +00:00
To perform the repository-wide deduplication, a hash of each
chunk is checked against the :ref:`chunks cache <cache>`, which is a
hash-table of all chunks that already exist.
.. figure:: internals/structure.png
2017-06-04 23:00:41 +00:00
:figwidth: 100%
:width: 100%
Layers in Borg. On the very top commands are implemented, using
a data access layer provided by the Archive and Item classes.
The "key" object provides both compression and authenticated
encryption used by the data access layer. The "key" object represents
the sole trust boundary in Borg.
The lowest layer is the repository, either accessed directly
(Repository) or remotely (RemoteRepository).
.. toctree::
:caption: Internals contents
internals/security
internals/data-structures
2017-02-26 00:20:03 +00:00
internals/frontends