Dropbox Infinite

Hi I tought I post this here just for inspiration… Dropbox has anounced new feature: https://blogs.dropbox.com/business/2016/04/announcing-project-infinite/ HN discussion: Dropbox Project Infinite | Hacker News

Looks like BTSync has something similar…

Iknow this feature has already been discussed here and that syncthing is opensource community effort without resources of these two conpanies… so I dont want to imply any pressure… :slight_smile:

Clarifying what this actually is about, it looks to me like on demand download of files when they are opened/read (of course coupled with cloud storage, it being Dropbox).

That’s very similar to the syncthing-fuse project @burkemw3 hacks on.

SyncthingFUSE allows you to see all of the files in shared Syncthing folders, but only stores a fixed amount of data locally.

When you open a file, the contents are served from a local cache, if possible. If the contents are not in the cache, then SyncthingFUSE asks peers for the contents and adds them to the cache. If no peers are currently available for the file, then opening the file will fail.

We just suck at doing press releases for cool stuff people create. :upside_down:

3 Likes

Wow I didnt know about that…

Is it only for PCs or is there any chance to have something similar on android?

Unfortunately, there is no PC nor mobile support right now. It’s Linux and OS X for the moment.

Windows support appears possible via Dokan, but I don’t have any Windows machines, so just developing it would be exceedingly difficult. SyncthingFUSE has the currently closed issue #7 for this.

Android support also appears possible, although, it will likely take a rather different implementation. There is additional discussion about Android in syncthing #193 Selective Sync and syncthing-android #81 Selective download.

Could you change SyncthingFUSE so that there’s a Rest API to access files, and the whole FUSE runs outside of Syncthing? Then we could just use that same API on Android.

Edit: And it could also be integrated into eg Synctrayzor for Windows support.

We could probably integrate that into Syncthing as well. Consider a folder that by default doesn’t sync or scan. A rest call could tell Syncthing to “activate” a given file, which it would then start treating as usual (downloading updates for and scanning for local changes). Something similar to remove and unregister a file from the local device.

Presenting the fuse or android api layer could then happen outside.

In that case, there should probably be an equivalent call to “deactivate” the file again. Or deactivate when it isn’t used any more.

My idea was to do the file access via the Rest API (with methods like /file/read, /file/write etc). I’m not sure which option is better though.

If we’d add a “External File Storage” mode (similar to the “External File Versioning”) mode, we could also do cool stuff (on Android and on Linux).

Make it so, that the first argument is the desired operation (e.g. list, write, read, delete) and content of the file to be modified can be read via stdin / stdout and exit codes. This would be a “virtual filesystem” via scripts / external processes. A very easy filesystem could even be implemented in bash then. :slight_smile:

It’s Not Quite That Simple™, but a virtual filesystem is in the works. :wink:

https://github.com/calmh/syncthing/blob/changeset/lib/fs/filesystem.go#L23-L44

2 Likes

This might also be of interest.

They say they are opensourcing the project…

Also I find this interesting - FUSE version for Windows - Dokany:

1 Like