internals.rst 1.2 KB

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