All Projects → harababurel → Gcsf

harababurel / Gcsf

Licence: mit
a FUSE file system based on Google Drive

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to Gcsf

Google Drive Ocamlfuse
FUSE filesystem over Google Drive
Stars: ✭ 4,447 (+97.56%)
Mutual labels:  google-drive, fuse, filesystem
stremio-gdrive
Stremio addon for fetching videos from your google drive.
Stars: ✭ 73 (-96.76%)
Mutual labels:  google-drive, drive, google-drive-api
Plexdrive
Plexdrive mounts your Google Drive FUSE filesystem (optimized for media playback)
Stars: ✭ 1,324 (-41.18%)
Mutual labels:  google-drive, fuse
Docker Volume Ipfs
🐳 This is an open source volume plugin that allows using an ipfs filesystem as a volume.
Stars: ✭ 99 (-95.6%)
Mutual labels:  fuse, filesystem
Plexidrive
Scripts to facilitate the use of cloud storage (such as Google Drive) as storage for Plex media server
Stars: ✭ 118 (-94.76%)
Mutual labels:  google, google-drive
Onedrive Fuse Fs
Script to mount Microsoft OneDrive (formerly known as SkyDrive) folder as a FUSE filesystem
Stars: ✭ 68 (-96.98%)
Mutual labels:  fuse, filesystem
Polyfuse
A FUSE (Filesystem in Userspace) library for Rust
Stars: ✭ 76 (-96.62%)
Mutual labels:  fuse, filesystem
Litfs
A FUSE file system in Go extended with persistent file storage
Stars: ✭ 116 (-94.85%)
Mutual labels:  fuse, filesystem
Moosefs
MooseFS – Open Source, Petabyte, Fault-Tolerant, Highly Performing, Scalable Network Distributed File System (Software-Defined Storage)
Stars: ✭ 1,025 (-54.46%)
Mutual labels:  fuse, filesystem
Gindex V4
A Vue Js Based G Index with Improved Dark Mode, Search and Video Player
Stars: ✭ 143 (-93.65%)
Mutual labels:  google, google-drive
Gocryptfs
Encrypted overlay filesystem written in Go
Stars: ✭ 2,088 (-7.24%)
Mutual labels:  fuse, filesystem
Phoenixfs
🔥 a versioning filesystem inspired by git
Stars: ✭ 191 (-91.51%)
Mutual labels:  fuse, filesystem
Psgsuite
Powershell module for Google / G Suite API calls wrapped in handy functions. Authentication is established using a service account via P12 key to negate the consent popup and allow for greater handsoff automation capabilities
Stars: ✭ 184 (-91.83%)
Mutual labels:  google, google-drive
Googledriveuploadtool
A tool for Windows to upload and manage files in Google Drive. It resumes uploads in case of an error or failure. Perfect for uploading large files or if your connection is unstable.
Stars: ✭ 58 (-97.42%)
Mutual labels:  google, google-drive
Go Fuse
FUSE bindings for Go
Stars: ✭ 1,267 (-43.71%)
Mutual labels:  fuse, filesystem
Kaitai fs
KaitaiFS: mount any filesystem specified with a .ksy as a real file system
Stars: ✭ 45 (-98%)
Mutual labels:  fuse, filesystem
Cryfs
Cryptographic filesystem for the cloud
Stars: ✭ 1,560 (-30.7%)
Mutual labels:  fuse, filesystem
Containerfs
a cluster filesystem for containers
Stars: ✭ 264 (-88.27%)
Mutual labels:  fuse, filesystem
Fusell Seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 9 (-99.6%)
Mutual labels:  fuse, filesystem
Multipart Related
MIME multipart/related as defined in RFC 2387
Stars: ✭ 10 (-99.56%)
Mutual labels:  google, google-drive

Build Status Crates.io Docs
GitHub Issues Downloads MIT License

GCSF is a virtual filesystem that allows users to mount their Google Drive account locally and interact with it as a regular disk partition. You can find out more in this paper

Update (April 2019): I am currently still using and maintaining this project but I have very little time to dedicate to it. As such, it might take a while before I get around to fixing known bugs / implementing feature requests / responding to open issues. Thank you for understanding and for expressing sustained interest in this project!

Requirements

GCSF requires the stable branch of the Rust programming language, which can be installed following the instructions on rustup.rs. If you already have Rust installed, make sure that it is updated to the latest version (≥1.26):

$ rustup update stable

OSX

On Mac OSX, GCSF requires osxfuse and pkg-config:

$ brew update; brew install pkg-config; brew tap homebrew/cask; brew install --cask osxfuse

Ubuntu

On Ubuntu, GCSF requires libfuse-dev, libssl-dev and pkg-config:

sudo apt-get install -y libfuse-dev libssl-dev pkg-config

Arch Linux

An AUR package is maintained by axionl: gcsf-git.

SUSE

sudo zypper install -y fuse-devel fuse rust pkgconf-pkg-config

Other linux distros

Make sure you have pkg-config and the fuse library installed. These are usually found in the package repositories of major distributions.

FreeBSD

Rust can be installed via the lang/rust port. You will need to install sysutils/fusefs-libs for the cairo install command to succeed.

Windows

Unfortunately, Windows is not supported at the time being. See issue #19.

Installation

After all requirements are met, GCSF can be installed using cargo:

$ cargo install gcsf

This will generate the gcsf binary in $HOME/.cargo/bin. Make sure that this directory is in your PATH variable: export PATH=$PATH:$HOME/.cargo/bin

Alternatively, you can download a release binary for your platform.

Configuration

GCSF will attempt to create a configuration file in $XDG_CONFIG_HOME/gcsf/gcsf.toml, which is usually defined as $HOME/.config/gcsf/gcsf.toml. Credentials are stored in the same directory.

GCP

  1. Visit console.developers.google.com and create a new project
  2. Add the Google Drive API to the project
  3. Configure an OAuth consent screen. Verification should not be required. Should be external unless this project is something internal to your GSuite
  4. Configure an OAuth2.0 credential. Do not use WEB as the token type if adding gcsf to a headless server - you want to be using the urn:* URI (note: if using WEB, you'll need to set the accepted domains to include http://localhost:8081)
  5. Configure GCSF to use the new client_id, client_secret, and project_id. You should have all these values after creating the credential.
  6. Configure GCSF authorize_using_code=True if configuring for headless servers. If you do this, completing the OAuth flow in a different browser will provide you a code that you can give to GCSF.

Running gcsf login some_session_name at this point should show a URL with your client_id query parameter.

Usage

The first step is to log in to Drive and authorize the application. A name must be provided for the session:

$ gcsf login some_session_name
Please direct your browser to https://accounts.google.com/o/oauth2/[...] and follow the instructions displayed there.
Successfully logged in. Saved credentials to "$HOME/.config/gcsf/some_session_name"

You can also list all existing sessions:

$ gcsf list
Sessions:
        - personal
        - some_session_name
        - work

And then mount one (or more) of them:

$ gcsf mount /mnt/gcsf -s some_session_name
INFO  gcsf > Creating and populating file system...
INFO  gcsf > File system created.
INFO  gcsf > Mounting to /mnt/gcsf
INFO  gcsf > Mounted to /mnt/gcsf

You can now find the contents of your Drive account in /mnt/gcsf:

GCSF ls

Using Ranger:

GCSF in Ranger

Or Thunar:

GCSF in Thunar

Why GCSF?

GCSF stands for "Google Conduce Sistem de Fișiere" which translated from Romanian is "Google Drive Filesystem". However GDFS already exists so it remains GCSF.

Troubleshooting

Could not mount to $mountpoint: Operation not permitted (os error 1)

This error occurs when user_allow_other is not set in /etc/fuse.conf or the file has improper permissions. Fix by running (as root):

# echo 'user_allow_other' >> /etc/fuse.conf
# chmod 644 /etc/fuse.conf
# sudo chown root:root /etc/fuse.conf

libssl.so.1.0.0

You installed the prebuilt binaries but couldn't run it. Fix by installing rust and building from source.

Contributing

Contributions are welcome. Documentation available on docs.rs/gcsf. You can also help by reporting or fixing issues.

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