This is a fork of the original knoxite with a few edits in the storage code. I had to do this because the dropbox code repo it was looking for is no longer available and would cause it not to compile. So I removed that piece from the storage code and now it compiles without issues.
knoxite is a secure data storage & backup system.
Join the discussion in #knoxite (irc.freenode.net) or our Gitter room!
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 and supports multiple compression algorithms.
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.
To install knoxite, simply run:
go get github.com/indoes/knoxite
To compile it from source:
cd $GOPATH/src/github.com/indoes/knoxite
go get -u -v
go build && go test -v
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 repo init
Enter password:
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 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 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 store [volume ID] $HOME -d "Backup of all my data"
document.txt 5.69 MiB / 5.69 MiB [#########################################] 100.00%
other.txt 4.17 MiB / 4.17 MiB [#########################################] 100.00%
...
Snapshot cebc1213 created: 9 files, 8 dirs, 0 symlinks, 0 errors, 1.23 GiB Original Size, 1.23 GiB Storage Size
Now you can get an overview of all snapshots stored in this volume:
$ ./knoxite -r /tmp/knoxite snapshot list [volume ID]
ID Date Original Size Storage Size Description
----------------------------------------------------------------------------------------------
cebc1213 2016-07-29 02:27:15 1.23 GiB 1.23 GiB Backup of all my data
----------------------------------------------------------------------------------------------
1.23 GiB 1.23 GiB
Running the following command lists the entire content of a snapshot:
$ ./knoxite -r /tmp/knoxite ls [snapshot ID]
Perms User Group Size ModTime Name
----------------------------------------------------------------------------------------------
-rw-r--r-- user group 5.69 MiB 2016-07-29 02:06:04 document.txt
-rw-r--r-- user group 4.17 MiB 2016-07-29 02:05:22 other.txt
...
To restore the latest snapshot to /tmp/myhome, run:
$ ./knoxite -r /tmp/knoxite restore [snapshot ID] /tmp/myhome
document.txt 5.69 MiB / 5.69 MiB [#########################################] 100.00%
other.txt 4.17 MiB / 4.17 MiB [#########################################] 100.00%
...
Restore done: 9 files, 8 dirs, 0 symlinks, 0 errors, 1.23 GiB Original Size, 1.23 GiB Storage Size
It's easy to clone an existing snapshot, adding files to or updating existing files in it:
$ ./knoxite -r /tmp/knoxite clone [snapshot ID] $HOME
document.txt 5.89 MiB / 5.89 MiB [#########################################] 100.00%
other.txt 5.10 MiB / 5.10 MiB [#########################################] 100.00%
...
Snapshot aefc4591 created: 9 files, 8 dirs, 0 symlinks, 0 errors, 1.34 GiB Original Size, 1.34 GiB Storage Size
You can even mount a snapshot (currently read-only, read-write is work-in-progress):
$ ./knoxite -r /tmp/knoxite mount [snapshot ID] /mnt
API docs can be found here.