{"id":13400833,"url":"https://github.com/astrada/google-drive-ocamlfuse","last_synced_at":"2025-05-13T17:11:29.690Z","repository":{"id":3651641,"uuid":"4719523","full_name":"astrada/google-drive-ocamlfuse","owner":"astrada","description":"FUSE filesystem over Google Drive","archived":false,"fork":false,"pushed_at":"2025-04-21T19:16:01.000Z","size":1728,"stargazers_count":5699,"open_issues_count":263,"forks_count":357,"subscribers_count":145,"default_branch":"beta","last_synced_at":"2025-04-21T20:29:59.502Z","etag":null,"topics":["filesystem","fuse","google-drive","ocaml"],"latest_commit_sha":null,"homepage":"https://astrada.github.io/google-drive-ocamlfuse/","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astrada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-06-19T21:37:09.000Z","updated_at":"2025-04-21T19:16:07.000Z","dependencies_parsed_at":"2023-11-08T02:11:23.157Z","dependency_job_id":"84b967c1-c2a6-4ff1-a208-83e79463461c","html_url":"https://github.com/astrada/google-drive-ocamlfuse","commit_stats":{"total_commits":631,"total_committers":21,"mean_commits":"30.047619047619047","dds":0.03803486529318545,"last_synced_commit":"b7764ced7a43a24dead91bc0a895c491343f39cf"},"previous_names":[],"tags_count":107,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrada%2Fgoogle-drive-ocamlfuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrada%2Fgoogle-drive-ocamlfuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrada%2Fgoogle-drive-ocamlfuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrada%2Fgoogle-drive-ocamlfuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astrada","download_url":"https://codeload.github.com/astrada/google-drive-ocamlfuse/tar.gz/refs/heads/beta","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250529259,"owners_count":21445596,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filesystem","fuse","google-drive","ocaml"],"created_at":"2024-07-30T19:00:56.006Z","updated_at":"2025-04-23T23:19:27.770Z","avatar_url":"https://github.com/astrada.png","language":"OCaml","funding_links":[],"categories":["OCaml","others","OCaml (14)","Built On","网络服务","Cloud Storage"],"sub_categories":["Kafka","网络服务_其他","Subtitles Automation"],"readme":"FUSE filesystem over Google Drive\n=================================\n\n[![Join the chat at https://gitter.im/google-drive-ocamlfuse/Lobby](https://badges.gitter.im/google-drive-ocamlfuse/Lobby.svg)](https://gitter.im/google-drive-ocamlfuse/Lobby)\n[![Docker Pulls](https://img.shields.io/docker/pulls/maltokyo/docker-google-drive-ocamlfuse)](https://hub.docker.com/r/maltokyo/docker-google-drive-ocamlfuse)\n\n**google-drive-ocamlfuse** is a FUSE filesystem for Google Drive,\nwritten in OCaml. It lets you mount your Google Drive on Linux.\n\n### Features (see [what's new](https://github.com/astrada/google-drive-ocamlfuse/wiki/What%27s-new))\n\n* Full read/write access to ordinary files and folders\n* Read-only access to Google Docs, Sheets, and Slides (exported to\n  configurable formats)\n* Multiple account support\n* Duplicate file handling\n* Access to trash (`.Trash` directory)\n* Unix permissions and ownership\n* Symbolic links\n* Read-ahead buffers when streaming\n* Accessing content shared with you (requires [configuration](doc/Configuration.md))\n* Team Drive [Support](https://github.com/astrada/google-drive-ocamlfuse/wiki/Team-Drives)\n* Service Account [Support](https://github.com/astrada/google-drive-ocamlfuse/wiki/Service-Accounts)\n* OAuth2 for Devices [Support](https://github.com/astrada/google-drive-ocamlfuse/wiki/OAuth2-for-Devices)\n\n### Resources\n\n* [Homepage](https://astrada.github.io/google-drive-ocamlfuse/)\n* [Wiki](https://github.com/astrada/google-drive-ocamlfuse/wiki): includes\n  installation instructions, and more details about configuration, and\n  authorization\n\n### Authorization\n\nPlease be sure to have a look at the\n[authorization](https://github.com/astrada/google-drive-ocamlfuse/wiki/Authorization)\npage, to understand how the authorization process works, and to discover all\nthe available options.\n\nGetting started\n---------------\n\n### Installation\n\nI've uploaded .deb packages for Ubuntu to my\n[PPA](https://launchpad.net/~alessandro-strada/+archive/ppa). In order to to\ninstall it, use the commands below:\n\n    sudo add-apt-repository ppa:alessandro-strada/ppa\n    sudo apt-get update\n    sudo apt-get install google-drive-ocamlfuse\n\nNew beta versions are available on this\n[PPA](https://launchpad.net/~alessandro-strada/+archive/ubuntu/google-drive-ocamlfuse-beta).\nIf you want to test them, use the commands below:\n\n    sudo add-apt-repository ppa:alessandro-strada/google-drive-ocamlfuse-beta\n    sudo apt-get update\n    sudo apt-get install google-drive-ocamlfuse\n\nFor other installation options, please refer to the [wiki](https://github.com/astrada/google-drive-ocamlfuse/wiki/Installation).\n\nHow to build\n------------\n\n### Requirements\n\n* [OCaml][] \u003e= 4.02.3\n* [Findlib][] \u003e= 1.2.7\n* [ocamlfuse][] \u003e= 2.7.1\n* [gapi-ocaml][] \u003e= 0.3.6\n* [sqlite3-ocaml][] \u003e= 1.6.1\n\n[OCaml]: http://caml.inria.fr/ocaml/release.en.html\n[Findlib]: http://projects.camlcity.org/projects/findlib.html/\n[ocamlfuse]: https://github.com/astrada/ocamlfuse\n[gapi-ocaml]: https://github.com/astrada/gapi-ocaml\n[sqlite3-ocaml]: https://mmottl.github.io/sqlite3-ocaml/\n\n### Configuration and installation\n\nTo build the executable, run\n\n    dune build @install\n\nTo install it, run (as root, if your user doesn't have enough privileges)\n\n    dune install\n\nTo uninstall anything that was previously installed, execute\n\n    dune uninstall\n\nUsage\n-----\n\nFirst, you must [set up OAuth\n2.0](https://support.google.com/cloud/answer/6158849?hl=en):\n\n1. [Activate](https://cloud.google.com/service-usage/docs/enable-disable) the\n   `Google Drive API`.\n1. Create an OAuth client ID.\n1. Choose `Desktop` as `Application type`.\n1. Set the `Name` to anything you like.\n\nThis way you will get a `Client ID` and `Client secret` that you can use to\naccess your Drive. To authorize `google-drive-ocamlfuse`, pass the client ID\nand the client secret on the command line, e.g.:\n\n    google-drive-ocamlfuse -id xxxxxxxxxx.apps.googleusercontent.com -secret XXX-YYY-ZZZ\n\nThis command will create the default application directory\n(`~/.gdfuse/default`), containing the configuration file `config` (see the\n[wiki\npage](https://github.com/astrada/google-drive-ocamlfuse/wiki/Configuration)\nfor more details about configuration). And it will start a web browser to\nobtain authorization to access your Google Drive. This way, you can modify the\ndefault configuration before mounting the filesystem.\n\nThen, you can choose a local directory to mount your Google Drive (e.g.: `~/GoogleDrive`).\n\nCreate the mount point, if it doesn't exists:\n\n    mkdir ~/GoogleDrive\n\nThen, you can mount the filesystem:\n\n    google-drive-ocamlfuse ~/GoogleDrive\n\nIf you have more than one account, you can run:\n\n    google-drive-ocamlfuse -label [label] ~/GoogleDrive\n\nUsing `label` to distinguish different accounts. The program will use the\ndirectory `~/.gdfuse/[label]` to host the configuration, the application\nstate, and the file cache. No file is shared among different accounts, so you\ncan have a different configuration for each one.\n\nTo unmount the filesystem, issue this command:\n\n    fusermount -u ~/GoogleDrive\n\n### Troubleshooting\n\nThis application is still under testing, so there are probably bugs to\ndiscover and fix. To be extra sure, if you want, you can mount the filesystem\nin read-only mode, modifying the configuration (see the\n[documentation](https://github.com/astrada/google-drive-ocamlfuse/wiki/Configuration)),\nto avoid any write attempt to the server. Anyway, the `rm` command will simply\ntrash your file, so you should always be able to rollback any changes. If you\nhave problems, you can turn on debug logging:\n\n    google-drive-ocamlfuse -debug mountpoint\n\nIn `~/.gdfuse/default` you can find `curl.log` that will track every request\nto the Google Drive API, and `gdfuse.log` that will log FUSE operations and\ncache management. If something goes wrong, you can try clearing the cache,\nwith this command:\n\n    google-drive-ocamlfuse -cc\n\nIf something still doesn't work, try starting from scratch removing everything\nin `~/.gdfuse/default`. In this case you will need to reauthorize the\napplication.\n\nNote that in order to reduce latency, the application will query the server\nand check for changes only every 60 seconds (configurable). So, if you make a\nchange to your documents (server side), you won't see it immediately in the\nmounted filesystem.\n\nNote also that Google Documents will be exported read-only.\n\n### Support\n\nIf you have questions, suggestions or want to report a problem, you may want\nto open an [issue](https://github.com/astrada/google-drive-ocamlfuse/issues)\non github.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrada%2Fgoogle-drive-ocamlfuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrada%2Fgoogle-drive-ocamlfuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrada%2Fgoogle-drive-ocamlfuse/lists"}