A project that leverages Google Drive's API and "0 size file" rules for native Docs for unlimited storage space. - A SteelHacks 2019 Project
As of June 1, 2021, Google counts Google Docs files towards the 15GB storage quota granted to each Google account for free. Since InfiniDrive relied on Google not counting Docs towards the storage quota, it is no longer possible for the project to remain fully functional. Any InfiniDrive uploads made before this date will remain accessible, but users will be limited to performing basic file operations including renaming, downloading, querying for size, and deleting. Additionally, InfiniDrive will no longer be maintained. All pull requests and bug reports will not be accepted. The final release and recommended version of InfiniDrive for all users is InfiniDrive v1.0.22. Thank you to everyone who used and supported the InfiniDrive project during its 1.5 years of development.
For archival purposes, this repository will permanently remain available at https://github.com/DavidBerdik/InfiniDrive and the associated README documentation for the project will be retained below.
For more information on Google's quota changes, please see the following pages:
,,, ,,,
&@@@@@@@@@@@@@ @@@@@@@@@@@@@@
@@@@@@@# %@@@@@# @@@@@@@@@@@@@@@@@@@@
@@@@@@ #@@@ &@@@@@@@ @@@@@@
@@@@@ @@@@ @@@@@@@ @@@@@
@@@@ @@@@@@@@@ @@@@@
@@@@@ @@@@@@@ @@@@
@@@@@ @@@@@@ @@@@#
@@@@@ @@@@@@ @@@@,
&@@@@ &@@@@@@@@ *@@@@
@@@@@ @@@@@@@ @@@ @@@@@
@@@@@ *@@@@@@# @@@ @@@@@
@@@@@@# @@@@@@@@ @@@@# @@@@@@
*@@@@@@@@@@@@@@@@@@ @@@@@@@@%@@@@@@@@
#@@@@@@@@@@@@ *@@@@@@@@@@@*
InfiniDrive is a project that leverages Google Drive's API and "0 size file" rules for native Docs for unlimited storage space.
Based on a SteelHacks 2019 project by David Berdik, Steven Myrick, and Noah Greenberg
InfiniDrive takes advantage of Google Drive's storage policy for Docs stored in Google's native format, which states that native Doc files do not count towards an account's 15GB storage quota. This rule has been previously used to store unlimited data by converting files to base64 strings that are then stored in fragments across as many Docs as necessary. This implementation, although functional, has several disadvantages. Specifically...
These limitations mean that very little data can be stored in a single Doc file, which in turn means that performance is decreased since more Drive API interactions are necessary. Drive's API, however, allows for Doc files to be at most 10MB in size (at most 50MB in size when uploaded manually not via the Drive API). Since Google's character limit is much less than 10MB, InfiniDrive achieves close to this size by converting data to images that are stored in Docs. This approach has several advantages over the aforementioned base64 approach because...
pip install -r requirements.txt
python -m pip install -r requirements.txt
python InfiniDrive.py
to authenticate your account.python InfiniDrive.py
again to get a list of available commands.Although InfiniDrive is an improvement over the base64 storage approach, it is certainly not perfect. Here are some of its weaknesses. There are probably more as well. This list represents the known weaknesses of InfiniDrive at the time of the project's termination.
Unfortunately, InfiniDrive is no longer maintained and therefore contributions in the form of pull requests or bug reports will not be accepted. If you have used InfiniDrive or one of our other projects and would like to show your appreciation in the form of a monetary contribution, you may do so here.
InfiniDrive was developed as a proof-of-concept project. Although an effort has been made to ensure that any data stored using InfiniDrive will have its integrity maintained, there is no guarantee a lurking edge case did not slip through our testing. By trusting your data's integrity to InfiniDrive, you assume all responsibility if it fails.
Please note: InfiniDrive is not compatible with Python 2.
The base64 storage approach, referenced throughout this README, is available at https://github.com/stewartmcgown/uds.
InfiniDrive is based on a SteelHacks 2019 project submission by David Berdik, Steven Myrick, and Noah Greenberg.