All Projects → aos-dev → Go Storage

aos-dev / Go Storage

Licence: apache-2.0
An application-oriented unified storage layer for Golang.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Go Storage

go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service.
Stars: ✭ 387 (+344.83%)
Mutual labels:  files, dropbox, storage, fs, s3, cloud-storage
Cakephp File Storage
Abstract file storage and upload plugin for CakePHP. Write to local disk, FTP, S3, Dropbox and more through a single interface. It's not just yet another uploader but a complete storage solution.
Stars: ✭ 202 (+132.18%)
Mutual labels:  s3, storage, dropbox
Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+35004.6%)
Mutual labels:  s3, cloud-storage, dropbox
Cloudexplorer
Cloud Explorer
Stars: ✭ 170 (+95.4%)
Mutual labels:  s3, cloud-storage, storage
rclone-drive
☁️Simple web cloud storage based on rclone, transform cloud storage (s3, google drive, one drive, dropbox) into own custom web-based storage
Stars: ✭ 30 (-65.52%)
Mutual labels:  dropbox, s3, cloud-storage
Uppy
The next open source file uploader for web browsers 🐶
Stars: ✭ 24,829 (+28439.08%)
Mutual labels:  files, dropbox
Minio
High Performance, Kubernetes Native Object Storage
Stars: ✭ 30,698 (+35185.06%)
Mutual labels:  s3, storage
Temperment
Get a random temporary file or directory path that will delete itself
Stars: ✭ 21 (-75.86%)
Mutual labels:  files, fs
Radosgw Admin4j
A Ceph Object Storage Admin SDK / Client Library for Java ✨🍰✨
Stars: ✭ 50 (-42.53%)
Mutual labels:  s3, storage
S5cmd
Parallel S3 and local filesystem execution tool.
Stars: ✭ 565 (+549.43%)
Mutual labels:  s3, storage
Drive
☁️ A distributed cloud based lazy drive to files integrated with Dropbox, Google Drive.
Stars: ✭ 36 (-58.62%)
Mutual labels:  storage, dropbox
Arc
📎 Flexible file upload and attachment library for Elixir
Stars: ✭ 1,087 (+1149.43%)
Mutual labels:  s3, storage
Filegator
Powerful Multi-User File Manager
Stars: ✭ 587 (+574.71%)
Mutual labels:  files, storage
Libaums
Open source library to access USB Mass Storage devices on Android without rooting your device
Stars: ✭ 769 (+783.91%)
Mutual labels:  files, storage
S3fs Fuse
FUSE-based file system backed by Amazon S3
Stars: ✭ 5,733 (+6489.66%)
Mutual labels:  s3, cloud-storage
Minio Hs
MinIO Client SDK for Haskell
Stars: ✭ 39 (-55.17%)
Mutual labels:  s3, cloud-storage
Wsend
wsend: The opposite of wget
Stars: ✭ 64 (-26.44%)
Mutual labels:  files, storage
Cyberduck
Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
Stars: ✭ 1,080 (+1141.38%)
Mutual labels:  s3, dropbox
Terraform Aws S3 Log Storage
This module creates an S3 bucket suitable for receiving logs from other AWS services such as S3, CloudFront, and CloudTrail
Stars: ✭ 65 (-25.29%)
Mutual labels:  s3, storage
Zbox
Zero-details, privacy-focused in-app file system.
Stars: ✭ 1,185 (+1262.07%)
Mutual labels:  storage, fs

storage

Build Status Go dev License Join the chat

An application-oriented unified storage layer for Golang.

Goal

  • Production ready
  • High performance
  • Vendor agnostic

Features

Widely services support

Servicer operation support

  • List: list all Storager in service
  • Get: get a Storager via name
  • Create: create a Storager
  • Delete: delete a Storager

Storager operation support

Basic operations

  • Metadata: get storager metadata
  • Read: read file content
  • Write: write content into file
  • Stat: get file's metadata
  • Delete: delete a file or directory
  • List: list file in prefix or dir styles

Extended operations

  • Copy: copy a file inside storager
  • Move: move a file inside storager
  • Reach: generate a public accessible url

Multi object modes support

  • Multipart: allow doing multipart uploads
  • Append: allow appending to an object
  • Block: allow combining an object with block ids.
  • Page: allow doing random writes

Object metadata support

Common metadata

  • id: unique key in service
  • name: relative path towards service's work dir
  • type: object type cloud be file, dir, link or unknown

Optional metadata

  • size: object's content size.
  • updated-at: object's last updated time.
  • content-md5: md5 digest as defined in rfc2616
  • content-type: media type as defined in rfc2616
  • etag: entity tag as defined in rfc2616
  • storage-class: object's storage class as defined in storage proposal

Quick Start

import (
    "log"

    "github.com/aos-dev/go-storage/v3"
    "github.com/aos-dev/go-storage/v3/pairs"
    "github.com/aos-dev/go-services-fs"
)

// Init a service.
store, err := fs.NewStorager(pairs.WithWorkDir("/tmp"))
if err != nil {
    log.Fatalf("service init failed: %v", err)
}

// Use Storager API to maintain data.
var buf bytes.Buffer

n, err := store.Read("path/to/file", &buf)
if err != nil {
    log.Printf("storager read: %v", err)
}

Sponsor

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].