BorgBackup - Backup dédupliqué
Find a file
Thomas Waldmann 1e1d80c7b0 use AES-GCM (an AEAD single-pass mac&cipher)
This has special and extremely fast HW acceleration on e.g recent Intel CPUs: AES-NI and PCLMULQDQ.

Notes:

a) I had to kill AES.iv method, it just did not work for aes-gcm as done by openssl.
As the incremented IV (counter) can't be read back, we have to keep and manually increment it in Key.enc_iv.

b) there is a hack in AES.compute_tag_and_encrypt to add 16B of zero to the right of the gmac (which is also 16B)
because the current callers expects 32B. AES.check_tag_and_encrypt is tolerant of such a 32B tag, but will only
use the left 16B and ignore the right 16B if needed. this is a bit dirty, but I didn't want to change the header layout
within this changeset.

c) switched from mac&encrypt to encrypt-then-mac (using aes-gcm) for the keyfile 'data' entry

d) also added a test that creates the testdata needed for the constants at top of testsuite/key.py

e) I kept enc_hmac_key although it is not used by the code in this changeset. But we'll need to
keep supporting the old algorithms, too.
2015-03-06 03:29:29 +01:00
attic use AES-GCM (an AEAD single-pass mac&cipher) 2015-03-06 03:29:29 +01:00
docs Fix documentation 'snapshot' to 'checkpoint' 2014-12-25 13:23:30 +01:00
scripts Project rename 2013-07-09 20:14:18 +02:00
.gitattributes Added .gitattributes 2013-08-12 15:12:14 +02:00
.gitignore Remove some autogenerated files 2014-02-18 23:10:32 +01:00
.travis.yml travis: Enable python 3.4 2014-05-01 14:08:12 +02:00
AUTHORS chunker: optimized the barrel shift 2014-05-13 23:05:13 +02:00
CHANGES hashindex: Fix issue with file sizes larger than 2GB. 2015-01-06 22:28:04 +01:00
LICENSE Fix sorting of segment names to ignore NFS left over files. 2014-01-03 14:47:44 +01:00
MANIFEST.in Include missing pyx files in dist file. 2015-01-04 22:25:11 +01:00
README.rst Move website to attic-backup.org 2014-03-09 15:12:07 +01:00
setup.py Add MacPorts' path to the default openssl search path 2014-08-01 14:48:49 +02:00
tox.ini Add python 3.4 to the tox environment list 2014-05-03 14:21:10 +02:00
versioneer.py Start using versioneer for version numbers 2013-08-05 23:05:15 +02:00

What is Attic?
--------------
Attic is a deduplicating backup program. The main goal of Attic is to provide
an efficient and secure way to backup data. The data deduplication
technique used makes Attic suitable for daily backups since only changes
are stored.

Easy to use
~~~~~~~~~~~
Initialize backup repository and create a backup archive::

    $ attic init /usbdrive/my-backup.attic
    $ attic create -v /usbdrive/my-backup.attic::documents ~/Documents

Main features
~~~~~~~~~~~~~
Space efficient storage
  Variable block size deduplication is used to reduce the number of bytes 
  stored by detecting redundant data. Each file is split into a number of
  variable length chunks and only chunks that have never been seen before are
  compressed and added to the repository.

Optional data encryption
    All data can be protected using 256-bit AES encryption and data integrity
    and authenticity is verified using HMAC-SHA256.

Off-site backups
    Attic can store data on any remote host accessible over SSH.  This is
    most efficient if Attic is also installed on the remote host.

Backups mountable as filesystems
    Backup archives are mountable as userspace filesystems for easy backup
    verification and restores.

What do I need?
---------------
Attic requires Python 3.2 or above to work. Besides Python, Attic also requires 
msgpack-python and sufficiently recent OpenSSL (>= 1.0.0).
In order to mount archives as filesystems, llfuse is required.

How do I install it?
--------------------
::

  $ pip install Attic

Where are the docs?
-------------------
Go to https://attic-backup.org/ for a prebuilt version of the documentation.
You can also build it yourself from the docs folder.

Where are the tests?
--------------------
The tests are in the attic/testsuite package. To run the test suite use the
following command::

  $ fakeroot -u python -m attic.testsuite.run