internals.rst 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. .. include:: global.rst.inc
  2. .. _internals:
  3. Internals
  4. =========
  5. .. toctree::
  6. internals/security
  7. internals/data-structures
  8. This page documents the internal data structures and storage
  9. mechanisms of |project_name|. It is partly based on `mailing list
  10. discussion about internals`_ and also on static code analysis.
  11. Borg uses a low-level, key-value store, the :ref:`repository`, and
  12. implements a more complex data structure on top of it, which is made
  13. up of the :ref:`manifest <manifest>`, :ref:`archives <archive>`,
  14. :ref:`items <item>` and data :ref:`chunks`.
  15. Each repository can hold multiple :ref:`archives <archive>`, which
  16. represent individual backups that contain a full archive of the files
  17. specified when the backup was performed.
  18. Deduplication is performed globally across all data in the repository
  19. (multiple backups and even multiple hosts), both on data and metadata,
  20. using :ref:`chunks` created by the chunker using the Buzhash_
  21. algorithm.
  22. To actually perform the repository-wide deduplication, a hash of each
  23. chunk is checked against the :ref:`cache`, which is a hash-table of
  24. all chunks that already exist.