brig

command module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2018 License: AGPL-3.0 Imports: 2 Imported by: 0

README

brig: Ship your data around the world

a brig

go reportcard GoDoc Build Status Documentation

Table of Contents

About

brig is a distributed & secure file synchronization tool with version control. It is based on IPFS, written in Go and will feel familiar to git users.

Key feature highlights:

  • Encryption of data in rest and transport + compression on the fly.
  • Simplified git version control.
  • Sync algorithm that can handle moved files and empty directories and files.
  • Your data does not need to be stored on the device you are currently using.
  • FUSE filesystem that feels like a normal (sync) folder.
  • No central server at all. Still, central architectures can be build with brig.
  • Simple user identification and discovery with users that look like email addresses.

Also take a look at the documentation for more details.

Installation

If you have a recent version of go (>= 1.9) installed, it should be as easy as this:

$ go get -d -v -u github.com/sahib/brig  # Download the sources.
$ cd $GOPATH/src/github.com/sahib/brig   # Go to the source directory.
$ make                                   # Build the software.
$ sudo make install                      # Install it system-wide (optional)

Please refer to the install docs for more details.

Getting started

asciicast

...If you want to know, what to do after you can read the Quickstart.

Status

This software is in a beta phase currently. All mentioned features should work. Things might still change rapdily and there will be no guarantee to change that until version 1.0.0. Do not use brig yet as only storage for your production data. There are still bugs, but it should be safe enough to toy around with it quite a bit.

This project has started end of 2015 and has seen many conceptual changes in the meantime. It started out as research project of two computer science students (me and qitta). After writing our master theses on it, it was put down for a few months until I (sahib) picked at up again and currently am trying to push it to usable software.

If you want to open a bug report, just type brig bug to get a readily filled template for you.

Documentation

All documentation can be found on ReadTheDocs.org.

Donations

I really would like to work more on brig, but my day job (and the money that comes with it) forbids that. If you're interested in the development and would think about supporting me financially, then please contact me! If you'd like to give me a small & steady donation, you can always use Liberapay:

Thank you!

Focus

brig tries to focus on being up conceptually simple, by hiding a lot of complicated details regarding storage and security. Therefore I hope the end result is easy and pleasant to use, while being secure by default. Since brig is a "general purpose" tool for file synchronization it of course cannot excel in all areas. This is especially true for efficiency, which is sometimes sacrificed to get the balance of usability and security right.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
ipfs
Package ipfs implements an interface to ipfs's codebase that also fulfills the backend.Backend interface.
Package ipfs implements an interface to ipfs's codebase that also fulfills the backend.Backend interface.
db
mio
Package mio (short for memory input/output) implements the layered io stack of brig.
Package mio (short for memory input/output) implements the layered io stack of brig.
mio/encrypt
Package encrypt implements the encryption layer of brig.
Package encrypt implements the encryption layer of brig.
nodes
Package nodes implements all nodes and defines basic operations on it.
Package nodes implements all nodes and defines basic operations on it.
vcs
cmd
pwd
tabwriter
Package tabwriter implements a write filter (tabwriter.Writer) that translates tabbed columns in input into properly aligned text.
Package tabwriter implements a write filter (tabwriter.Writer) that translates tabbed columns in input into properly aligned text.
Package fuse implements a FUSE layer for brig.
Package fuse implements a FUSE layer for brig.
net
peer
Package peer implements the basic data types needed to communicate with other brig instances.
Package peer implements the basic data types needed to communicate with other brig instances.
Package util implements small helper function that should be included in the stdlib in our opinion.
Package util implements small helper function that should be included in the stdlib in our opinion.
conductor
Package conductor is a small helper to execute work heavy operations in the backgrounds that deliver partial results ("result streaming").
Package conductor is a small helper to execute work heavy operations in the backgrounds that deliver partial results ("result streaming").
log
Package log implements utility methods for logging in a colorful manner.
Package log implements utility methods for logging in a colorful manner.
registry
Package registry contains shared utils between server and client regarding the registry opening and modification.
Package registry contains shared utils between server and client regarding the registry opening and modification.
trie
Package trie implements a general purpose Path-*Node.
Package trie implements a general purpose Path-*Node.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL