knoxite is a data storage, security & backup system.
knoxite uses AES-encryption to safely store your data.
You can always extend your storage size or move your stored data to another machine.
knoxite cleverly de-duplicates your data before storing it.
You can use multiple storage backends, even parallely: local disks, Dropbox, Amazon S3 & others.
knoxite is free software. Contribute and spread the word!
Make sure you have a working Go environment. Follow the Go install instructions.
First of all you need to checkout the source code:
go get github.com/knoxite/knoxite
cd $GOPATH/src/github.com/knoxite/knoxite
Now we need to get the required dependencies:
go get -v
Let's build knoxite:
cd knoxite
go build
Run knoxite --help to see a full list of options.
First of all we need to initialize an empty directory (in this case /tmp/knoxite) as a repository:
$ ./knoxite -r /tmp/knoxite -p "my_password" repo init
Created new repository at /tmp/knoxite
knoxite encrypts all the data in the repository with the supplied password. Be warned: if you lose this password, you won't be able to access any of your data.
Each repository can contain several volumes, which store our data organized in snapshots. So let's create one:
$ ./knoxite -r /tmp/knoxite -p "my_password" volume init "Backups" -d "My system backups"
Volume 66e03034 (Name: Backups, Description: My system backups) created
Now you can get a list of all volumes stored in this repository:
$ ./knoxite -r /tmp/knoxite -p "my_password" volume list
ID Name Description
----------------------------------------------------------------------------------------------
66e03034 Backups My system backups
Run the following command to create a new snapshot and store your home directory in the newly created volume:
$ ./knoxite -r /tmp/knoxite -p "my_password" store [volume ID] $HOME -d "Backup of all my data"
document.txt 5.669 MiB / 5.669 MiB [#############################################] 100.00%
other.txt 4.137 MiB / 4.137 MiB [#############################################] 100.00%
...
Snapshot cebc1213 created: 1337 files, 69 dirs, 0 symlinks, 0 errors, 9.772 GiB Original Size, 9.772 GiB Storage Size
Now you can get an overview of all snapshots stored in this volume:
$ ./knoxite -r /tmp/knoxite -p "my_password" snapshot list [volume ID]
ID Date Original Size Storage Size Description
--------------------------------------------------------------------------------------------------------------
cebc1213 2016-07-29 02:27:15 9.772 GiB 9.772 GiB Backup of all my data
--------------------------------------------------------------------------------------------------------------
9.772 GiB 9.772 GiB
Running the following command lists the entire content of a snapshot:
$ ./knoxite -r /tmp/knoxite -p "my_password" ls [snapshot ID]
Perms User Group Size ModTime Name
---------------------------------------------------------------------------------------------------------------
-rwxr-xr-x user group 9.756 MiB 2016-07-29 02:06:04 knoxite
-rw-r--r-- user group 1.309 KiB 2016-07-29 02:05:22 main.go
...
To restore the latest snapshot to /tmp/myhome, run:
$ ./knoxite -r /tmp/knoxite -p "my_password" restore [snapshot ID] -t /tmp/myhome
Creating directory /tmp/myhome
Creating file /tmp/myhome/knoxite (10 chunks).
Creating file /tmp/myhome/main.go (1 chunks).
...
Restore done: 1337 files, 69 dirs, 0 symlinks, 0 errors, 9.772 GiB Original Size, 9.772 GiB Storage Size
It's easy to clone an existing snapshot, adding files to or updating existing files in it:
$ ./knoxite -r /tmp/knoxite -p "my_password" clone [snapshot ID] $HOME
document.txt 2.779 MiB / 2.779 MiB [#############################################] 100.00%
other.txt 6.196 MiB / 6.196 MiB [#############################################] 100.00%
...
Snapshot aefc4591 created: 1337 files, 69 dirs, 0 symlinks, 0 errors, 9.775 GiB Original Size, 9.775 GiB Storage Size
You can even mount a snapshot (currently read-only, read-write is work-in-progress):
$ ./knoxite -r /tmp/knoxite -p "my_password" mount [snapshot ID] /mnt
API docs can be found here.