2011-11-05 18:42:28 +00:00
|
|
|
Welcome to Darc's documentation!
|
|
|
|
================================
|
|
|
|
|
|
|
|
Darc is a Deduplicating ARChiver written in Python.
|
|
|
|
The main goal of Darc is to provide an efficient and secure way to backup data.
|
|
|
|
|
|
|
|
Features
|
|
|
|
--------
|
|
|
|
Space efficient storage
|
|
|
|
Variable block size `deduplication <http://en.wikipedia.org/wiki/Data_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 added to the store.
|
|
|
|
|
|
|
|
Secure
|
|
|
|
All data is encrypted using `AES256 <http://en.wikipedia.org/wiki/Advanced_Encryption_Standard>`_
|
|
|
|
and the data integrity and authenticity is verified using
|
|
|
|
`HMAC-SHA256 <http://en.wikipedia.org/wiki/HMAC>`_.
|
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
Remote stores
|
|
|
|
Darc can store data on remote hosts over SSH as long as Darc is installed on
|
|
|
|
the remote host. The following syntax is used to specify a remote store::
|
|
|
|
|
|
|
|
$ darc list hostname:path
|
|
|
|
$ darc extract hostname:path::archive-name
|
|
|
|
$ darc extract username@hostname:path::archive-name
|
|
|
|
|
|
|
|
|
2011-11-05 18:42:28 +00:00
|
|
|
Definitions
|
|
|
|
-----------
|
|
|
|
Deduplication
|
|
|
|
Deduplication is a technique for improving storage utilization by eliminating
|
|
|
|
redundant data.
|
|
|
|
|
|
|
|
Archive
|
|
|
|
A Darc archive is a collection of files along with metadata that include file
|
|
|
|
permissions, directory structure and various file attributes.
|
|
|
|
|
|
|
|
Store
|
|
|
|
A Darc store is a filesystem directory storing data from zero or more archives.
|
|
|
|
The data in a store is both deduplicated and encrypted making it both
|
|
|
|
efficient and safe.
|
|
|
|
|
|
|
|
Key file
|
|
|
|
When a Darc store is initialized a key file containing a password protected
|
|
|
|
encryption key is created. It is vital to keep this file safe since the store
|
|
|
|
data is totally inaccessible without it.
|
|
|
|
|
|
|
|
|
|
|
|
Requirements
|
|
|
|
------------
|
|
|
|
* Python >= 2.5
|
|
|
|
* pycrypto
|
|
|
|
* msgpack-python
|
|
|
|
* paramiko (for remote store support)
|
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
|
2011-11-05 18:42:28 +00:00
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
The following instructions will install Darc in ``/usr/local/darc/`` without interfering
|
|
|
|
with the rest of the system.
|
|
|
|
|
|
|
|
1. Initialize a new python environment::
|
|
|
|
|
|
|
|
$ virtualenv /usr/local/darc
|
|
|
|
|
|
|
|
2. Extract the source code using GIT or a release tarball::
|
|
|
|
|
|
|
|
$ mkdir /usr/local/darc/src/
|
|
|
|
$ cd /usr/local/darc/src/
|
|
|
|
$ tar -xvzf darc-x.y.tar.gz
|
|
|
|
OR
|
|
|
|
$ git clone git://github.com/jborg/darc.git
|
|
|
|
|
|
|
|
3. Install Darc::
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
$ cd darc-x.y/
|
|
|
|
$ ../../bin/python setup.py install
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
4. Add /usr/local/darc/bin to $PATH
|
|
|
|
|
|
|
|
|
|
|
|
Basic Usage
|
|
|
|
===========
|
|
|
|
|
|
|
|
Initializing a store
|
|
|
|
--------------------
|
|
|
|
Before the first archive can be created a store needs to be initialized::
|
2011-11-05 18:42:28 +00:00
|
|
|
|
|
|
|
$ darc init /data/my-backup.darc
|
|
|
|
Initializing store "/data/my-backup.darc"
|
|
|
|
Key file password (Leave blank for no password): *****
|
|
|
|
Key file password again: *****
|
2011-11-06 15:59:14 +00:00
|
|
|
Key file "/home/YOU/.darc/keys/data_my_backup_darc" created.
|
2011-11-05 18:42:28 +00:00
|
|
|
Remember that this file (and password) is needed to access your data. Keep it safe!
|
|
|
|
|
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
Archive creation
|
|
|
|
----------------
|
|
|
|
The following command will create a new archive called ``backup-2011-09-10`` containing
|
|
|
|
all files in ``~/Documents`` and ``~/src``::
|
|
|
|
|
|
|
|
$ darc create -v /data/my-backup.darc::backup-2011-09-10 ~/Documents ~/src
|
|
|
|
|
|
|
|
Extract an archive
|
|
|
|
------------------
|
|
|
|
The following command will extract the archive ``backup-2011-09-10``::
|
|
|
|
|
|
|
|
$ darc extract -v /data/my-backup.darc::backup-2011-09-10
|
|
|
|
|
|
|
|
Delete an archive
|
|
|
|
-----------------
|
|
|
|
The following command will delete archive ``backup-2011-09-10``::
|
|
|
|
|
|
|
|
$ darc delete /data/my-backup.darc::backup-2011-09-10
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
List store contents
|
|
|
|
-------------------
|
|
|
|
The following command will list the names of all archives in the store::
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
$ darc list /data/my-backup.darc
|
|
|
|
backup-2011-09-09
|
|
|
|
backup-2011-09-10
|
|
|
|
...
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
List archive contents
|
|
|
|
---------------------
|
|
|
|
The following command will list the contents of the ``backup-2011-09-10`` archive::
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
$ darc list /data/my-backup.darc::backup-2011-09-10
|
|
|
|
-rw-r--r-- YOU users 280 May 14 2010 home/YOU/Documents/something.txt
|
|
|
|
-rw-r--r-- YOU users 280 May 14 2010 home/YOU/Documents/something-else.pdf
|
|
|
|
...
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
Purge old archives
|
|
|
|
------------------
|
|
|
|
When performing automatic backups it is important to periodically purge old backup
|
|
|
|
archives to stop the store from growing too big.
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
The following command will purge old archives and only keep the
|
|
|
|
seven latest end of day archives and the five latest end of week archives::
|
2011-11-05 18:42:28 +00:00
|
|
|
|
2011-11-06 15:59:14 +00:00
|
|
|
$ darc purge --daily=7 --weekly=5 /data/my-backup.darc
|
2011-11-05 18:42:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
Indices and tables
|
|
|
|
==================
|
|
|
|
|
|
|
|
* :ref:`genindex`
|
|
|
|
* :ref:`search`
|
|
|
|
|