An open source Linux client for Google Drive
github.com
github.com
https://github.com/astrada/google-drive-ocamlfuse/
https://github.com/jcline/fuse-google-drive
Didn't get much attention when it was posted here 267 days ago:
'userspace filesystem'?
The problem is right there. Always has been. People who think that userspace filesystems are realistic for anything but toys are just misguided." --LT[1]
[1] http://www.spinics.net/lists/linux-fsdevel/msg46078.html
The fact is that without being in the I/O path you can't detect and propagate updates as they happen - even with inotify, which doesn't scale well to very large filesystems anyway. There will always be some lag, and some reordering. Whether those matter to you depends a lot on your specific needs, but I for one don't like to rely on storage software that don't even try to guarantee correct behavior and might fail me at the most inopportune moment.
FUSE is the way to get in the I/O path without having to become a kernel developer (which I am BTW, since before Linus, since you happen to like appeals to authority). A FUSE-based result will give better functional guarantees and better performance than a hacked rsync. Whether it might have some disadvantages compared to kernel code isn't even the right question. Compared to what this thread is about, FUSE actually is a better answer.
When Linus says that user-space filesystems are just toys, he's simply wrong. If he were to say the same thing about FUSE in particular he'd be closer to mark, but a large part of the reason FUSE has lagged is Linus. You don't get credit for predicting an outcome you control, in my book. It's worse than it needs to be because Al Viro and others actively resist any changes that would make it better. Linus, who delegated this part of the kernel to others nearly twenty years ago, backs them up. Making the VFS layer look more exactly like what XFS or even NFS needs is par for the course. Making the smallest concession to what FUSE needs is verboten. I guess some folks are afraid of losing their niche if those artificial obstacles were removed so that more people could build filesystems without begging for keys from the gatekeepers.
Also, have you noticed that git is in user space? Must be a toy, then. Just ask Linus.
> fuse works fine if the thing being exported is some random low-use interface to a fundamentally slow device. But for something like your root filesystem? Nope. Not going to happen.
"Random low-use interface to a fundamentally slow device" (like say a remote server in some faraway "cloud") sounds exactly like the situation at hand. Compared to a "real" filesystem (like something you'd mount on /), GDrive is very much a toy, and seems to me like an ideal candidate for a FUSE filesystem.
In this context, yes, for exactly the same reasons as GDrive. No one with any sense is going to be running a relational database or MapReduce out of either one.
Note that when I say "toy" in this context it's not really anything pejorative -- I use such "toy" filesystems all the time (sshfs most often, but also encfs and s3ql), and they're awesome and highly useful. But they're the kind of thing where, say, lock contention (or hell, even being single-threaded) isn't much of a big deal because they're not performance-critical.
FUSE is a natural choice if you want fully integrated and transparent access to so-called "cloud storage" services. Performance overhead isn't so much of an issue, you'll probably manage to max out most home broadband services even with the several layers of syscalls.
You'll have less to remember, throw a line in fstab (or mount it in your shell's rc) and it's all just there, no sync commands to remember, just grab your favourite application and start hammering away at your files.
Correlation, or causation? It's complicated.
But part of the attraction for Drive, Dropbox, and Ubuntu One is that the data is all on your local disk, so should still be accessible even if you're offline or there is a problem with the service.
Making access to the local copy of the files depend on the client program being up is inherently more fragile.
Now if you want to _not_ have them local, but rather fetch them lazily on demand, Fuse would be a good choice. It does open up a fair bit more complexity to do with scheduling and abandoning requests when programs assume the filesystem is as fast and reliable as a local one, similar to NFS.
I think a read-through client could be good for v2.0, but getting local sync to a real filesystem working well would be better for 1.0.
Or am I being trolled? I'm probably being trolled. I'm being trolled, right guys? Right?
I should say there have been non-fuse related hitches with the integration with Ubuntu (grub problems).
It works really well in my experience. Not quite as slick as the install-and-forget-it nature of Google Drive for Win/Mac, or Dropbox for Win/Mac/Linux, but it does what it says on the tin and I like that because it is fully FOSS I can easily take it with me on ARM/Linux.
Still not quite as nice as the other clients which subscribe to file change notifications, but more seamless than running it manually for sure.
Or that the biz guys don't think that Linux leads to monetization of the product?
There was an article from a while back as to why Google wasn't working on gdrive faster and one of their engineering managers was quoted as saying something to the effect of "why are we syncing files? Who needs files, we have everything on the web". But unfortunately I can't find that reference right now.
But it doesn't seem too far a stretch to think that some web-heavy companies prefer web solutions with as "stateless" clients as possible.
Still, an interesting implementation and an alternative for python-gdata.