All Projects → talhof8 → gasper

talhof8 / gasper

Licence: GPL-3.0 License
Gasper is a CLI for safe, privacy-aware file storage based on Shamir's Secret Sharing

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to gasper

awesome-storage
A curated list of storage open source tools. Backups, redundancy, sharing, distribution, encryption, etc.
Stars: ✭ 324 (+775.68%)
Mutual labels:  backup, storage
kipp
A flexible file storage server
Stars: ✭ 33 (-10.81%)
Mutual labels:  storage, file-upload
minio-rclone-webdav-server
A @rclone served WebDAV server with @minio as the s3 storage backend docker example
Stars: ✭ 17 (-54.05%)
Mutual labels:  backup, storage
Now Storage
Use Now static deployments to upload and store files.
Stars: ✭ 91 (+145.95%)
Mutual labels:  storage, file-upload
paperback
Paper backup generator suitable for long-term storage.
Stars: ✭ 517 (+1297.3%)
Mutual labels:  backup, shamir-secret-sharing
React Firebase File Uploader
An image uploader for react that uploads images to your firebase storage
Stars: ✭ 155 (+318.92%)
Mutual labels:  storage, file-upload
Shrine
File Attachment toolkit for Ruby applications
Stars: ✭ 2,903 (+7745.95%)
Mutual labels:  storage, file-upload
aws-backup-automation
AWS CloudFormation templates and Python code for AWS blog post on how to automate centralized backup at scale across AWS services using AWS Backup.
Stars: ✭ 12 (-67.57%)
Mutual labels:  backup, storage
esop
Cloud-enabled backup and restore tool for Apache Cassandra
Stars: ✭ 40 (+8.11%)
Mutual labels:  backup, storage
konsave
Konsave lets use save your Linux customization and restore them very easily!
Stars: ✭ 336 (+808.11%)
Mutual labels:  backup
nestjs-file-streaming
NestJS File Streaming With MongoDB
Stars: ✭ 28 (-24.32%)
Mutual labels:  file-upload
Ionic-2-sqlite-demo
Simple demo to show how to work with Sqlite Storage in Ionic 2
Stars: ✭ 20 (-45.95%)
Mutual labels:  storage
tag-storage
🗄CNCF Storage TAG
Stars: ✭ 94 (+154.05%)
Mutual labels:  storage
OpenBackupExtractor
A free program for extracting data (like voicemails) from iPhone and iPad backups.
Stars: ✭ 111 (+200%)
Mutual labels:  backup
xfsvol
Local Docker Volumes with XFS Project Quota
Stars: ✭ 24 (-35.14%)
Mutual labels:  storage
openHAB-utils
Utilities for use with openHAB
Stars: ✭ 14 (-62.16%)
Mutual labels:  backup
Meteor-Files-Demos
Demos for ostrio:files package
Stars: ✭ 51 (+37.84%)
Mutual labels:  file-upload
lolisafe
Blazing fast file uploader and awesome bunker written in node! 🚀
Stars: ✭ 181 (+389.19%)
Mutual labels:  file-upload
file-storage-system
一个基于 Go 语言实现的分布式云存储服务,慕课网实战仿百度网盘项目。
Stars: ✭ 149 (+302.7%)
Mutual labels:  storage
laravel-backup-shield
🔒Password protection (and encryption) for your laravel backups.
Stars: ✭ 32 (-13.51%)
Mutual labels:  backup

Gasper Logo

Gasper

Back-up & encrypt your files in a distributed manner, across multiple stores of your choice, by splitting them to shares. Retrieve them at any point, with only a minimum number of shares required for retrieval.

Each file is being split to multiple shares, all of which are distributed to different destinations defined by you (be it AWS S3, Dropbox, Google Drive, your local filesystem, FTP Server, etc...). You can retrieve your file at any given moment, even if you only have access to a part of the stores you originally used (down to a minimium threshold of your choice).

Gasper is based on the awesome Shamir's Secret Sharing algorithm.

Shamir's Secret Sharing
Source: Robin's Snippet blog

Demo

Using local store

Supported stores

Type Description Attributes
local Store share in a local directory directory-path (string)

Feel free to contribute your own stores - S3, Google Drive, Twitter, FTP, or anything else you'd like :)

Adding a new store

  1. Implement the Store interface (pkg/storage/stores/store.go):
// Store lets you store shares.
type Store interface {
	// Store type.
	Type() string

	// Is store available?
	// Useful especially for remote stores, such as ftp servers or s3 buckets.
	Available() (bool, error)

	// Puts a share in store.
	Put(share *shares.Share) error

	// Retrieves a share from store.
	// If no share with the given File ID exists, returns ErrShareNotExists.
	Get(fileID string) (*shares.Share, error)

	// Deletes a share from store.
	// If no share with the given File ID exists, returns ErrShareNotExists.
	Delete(fileID string) error
}
  1. Add it to the stores factory function FromConfig() (pkg/storage/stores/factory.go), so it can be used out-of-the-box in the CLI.
  2. Enjoy!

For an example, see pkg/storage/stores/local.go.

Installation

go get -u github.com/talhof8/gasper

Usage

Store

gasper store --stores-config </path/to/stores.json> --file <file> [--encrypt --salt <valid-aes-salt> --share-count <count> --shares-threshold <min-threshold> --verbose]

Outputs file ID and checksum on success which should be used for retrieval.

Retrieve

gasper retrieve --stores-config </path/to/stores.json> --file-id <file-id> --destination <some-destination> [--checksum <some-checksum> --encrypt --salt <valid-aes-salt> --verbose]

Delete

Best effort deletion.

gasper delete --stores-config </path/to/stores.json> --file-id <file-id> [--verbose]

Stores configuration file:

{
  "stores": [
    {
      "type": "<type>",
      "<attribute>": "<value>",
      "<attribute>": "<value>",
      "<attribute>": "<value>"
    },
    {
      "type": "<type>",
      "<attribute>": "<value>",
      ...
    }
  ]
}

License

Gasper is released under GPL. See LICENSE.txt.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].