- Combine multiple Google Drives into one continuous storage space.
- Allows you to bind an infinite amount of Google Drives altogether.
- It splits a large file into small chunks and upload them on the Google Drives.
- The chunks are stored across all available Google Drives with no obvious sequences.
- The chunks can be encrypted(TODO) and the sequence is recorded locally.
- The Google Drives can be configured to be a RAID(TODO) in case you lose access to one of your Google Drives.
- If an attacker gains access to one of your Google Drives, they won't be able to access the complete data, as the chunks are obfuscated and mixed across Drives.
- Infinite Backups...
- Large sensitive files to be stored safely on cloud.
$ grive file: Show a list of files in Google Drives that's being uploaded by Grive.$ grive file upload [filename] [chunk size in MB]: Upload a file onto Google Drives.$ grive file get [filename]: Download a file from Google Drives.$ grive file delete [filename]: Remove a file from Google Drives.$ grive accounts: Shows the accounts details that is connected to Grive.$ grive space: Show Google Drives space usage.
- Install
Golangenvironment, and install dependencies for Google Drives:go get golang.org/x/oauth2andgo get google.golang.org/api/drive/v3. - Create two folders:
uploadedanddownloadedin this repo aftergit clone.uploadeddirectory will be used to store uploaded files' configurations, anddownloadeddirectory contains all files that are downloaded by Grive. - Goto https://developers.google.com/drive/api/v3/quickstart/go and click
ENABLE THE DRIVE API, thenDOWNLOAD CLIENT CONFIGURATIONand rename thecredential.jsoninto any JSON file you like. (In my case, I just renamed it to be my {AccountName}.json) - Place the JSON file into
accounts/folder. - Add the name of your JSON file without the suffix into
accounts/accounts.txtin a newline. (In my case, just {AccountName}) - Execute
$ grive accountsand Grive will ask you to click the link and paste the token in the terminal, do so. - You are good to go :D
- Easy, just run
$ go build -o grive *.go
- Utilize goroutines to increase network I/O efficiencies
- Craft a frontend & backend for Grive (use websocket)