{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/core/issues/6760","repository_url":"https://api.github.com/repos/owncloud/core","labels_url":"https://api.github.com/repos/owncloud/core/issues/6760/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/core/issues/6760/comments","events_url":"https://api.github.com/repos/owncloud/core/issues/6760/events","html_url":"https://github.com/owncloud/core/issues/6760","id":25546251,"number":6760,"title":"Feature Request: On-Demand Sync","user":{"login":"Gankro","id":1136864,"avatar_url":"https://avatars.githubusercontent.com/u/1136864?v=3","gravatar_id":"","url":"https://api.github.com/users/Gankro","html_url":"https://github.com/Gankro","followers_url":"https://api.github.com/users/Gankro/followers","following_url":"https://api.github.com/users/Gankro/following{/other_user}","gists_url":"https://api.github.com/users/Gankro/gists{/gist_id}","starred_url":"https://api.github.com/users/Gankro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gankro/subscriptions","organizations_url":"https://api.github.com/users/Gankro/orgs","repos_url":"https://api.github.com/users/Gankro/repos","events_url":"https://api.github.com/users/Gankro/events{/privacy}","received_events_url":"https://api.github.com/users/Gankro/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/owncloud/core/labels/enhancement","name":"enhancement","color":"02e10c"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/owncloud/core/milestones/11","html_url":"https://github.com/owncloud/core/milestones/backlog","labels_url":"https://api.github.com/repos/owncloud/core/milestones/11/labels","id":697149,"number":11,"title":"backlog","description":"","creator":{"login":"MTRichards","id":1818977,"avatar_url":"https://avatars.githubusercontent.com/u/1818977?v=3","gravatar_id":"","url":"https://api.github.com/users/MTRichards","html_url":"https://github.com/MTRichards","followers_url":"https://api.github.com/users/MTRichards/followers","following_url":"https://api.github.com/users/MTRichards/following{/other_user}","gists_url":"https://api.github.com/users/MTRichards/gists{/gist_id}","starred_url":"https://api.github.com/users/MTRichards/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MTRichards/subscriptions","organizations_url":"https://api.github.com/users/MTRichards/orgs","repos_url":"https://api.github.com/users/MTRichards/repos","events_url":"https://api.github.com/users/MTRichards/events{/privacy}","received_events_url":"https://api.github.com/users/MTRichards/received_events","type":"User","site_admin":false},"open_issues":547,"closed_issues":193,"state":"open","created_at":"2014-06-20T19:52:03Z","updated_at":"2016-02-17T17:43:16Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2014-01-14T01:20:20Z","updated_at":"2016-02-17T18:51:16Z","closed_at":null,"body":"My Apologies if there is a better place to put this.\r\n\r\nEver since I read [this article](http://arstechnica.com/information-technology/2013/07/skydrive-in-windows-8-1-cloud-storage-the-way-its-meant-to-be/) on new skydrive functionality, I've been very excited by the idea of on-demand syncing of files. \r\n\r\nThe relevant excerpt is this:\r\n\r\n> SkyDrive now shows all your files as if they had been synced locally. They just look like normal files. They have thumbnails, filenames, all the usual metadata. What they don't do is take up space on disk.\r\n\r\n> As soon as an app opens a file (and this applies to both Metro apps and desktop apps), SkyDrive pulls it from the server. Modifications are then synced back normally. The same occurs if a file is copied or moved; it gets automatically retrieved.\r\n\r\n> Instead of the normal selective sync options, folders can be right clicked (in both the Metro app and Explorer) and set as available offline, forcing files to be downloaded, or online only, removing local copies and doing on-demand downloads.\r\n\r\n> Behind the scenes, the first time a PC syncs with SkyDrive, it pulls down all the basic metadata: the tree structure, filenames, and so on. Then, it pulls down special metadata, such as thumbnails and full text. In many ways, this makes the files act like normal files. They can be found in searches; they have the right icons in Explorer.\r\n\r\n> The files themselves use the reparse point mechanism first introduced in Windows 2000. During that first sync, stub files (\"reparse points\") are created to mimic the directory structure stored on SkyDrive. Any operation on these files is intercepted automatically, allowing SkyDrive to download the file on-demand.\r\n\r\n> The use of this (rather low-level) mechanism makes SkyDrive in Windows 8.1 very transparent. Virtually any application should work correctly, with only a download delay disclosing that a file isn't stored locally. Even the command-line can work with SkyDrive files. The system should even work correctly with backup applications. Backup software should understand reparse points and treat them specially, so backing up your SkyDrive folder shouldn't cause the entire thing to be downloaded.\r\n\r\n> As a result, you can have tens or hundreds of gigabytes of files stored on a server, while still retaining pseudo-instant access. There's no long sync process.\r\n\r\nIn summary, it would be very desirable to be able to configure OwnCloud to always sync metadata stubs for all files that appear to be full files when browsed by the user, and only actually sync the contents of files *after they have been requested at least once*.\r\n\r\nHere's a more concrete usecase if you want:\r\n\r\nI am a member of a lab with several desktops. Each system has Ubuntu and all software locally installed on the machines, but the contents of each user's home folder are in fact stored on a central remote server that is just mounted over NFS. Unsurprisingly, this has substantial performance consequences, especially since this is largely pointless when 99.99% of the time everyone uses the same machine as they did the last day. \r\n\r\nThe alternative would be to sync the home folder locally, but then if we need to change workstation (perhaps to use some special hardware), we experience the all-too-familiar lock-up of a massive syncing, where the vast majority of the files aren't needed (I don't need all my music and code to use the lab's scanner).\r\n\r\nThis is exactly where on-demand syncing would be desirable. A user logs into a machine they haven't used before, and only the files they request are downloaded as they (or applications) request them. If that machine becomes their new regular machine, all their files will become locally cached/synced as they access them.\r\n\r\nTo avoid machines getting clogged up with tons of files from random people logging in a couple times, it would also be desirable to be able to \"garbage collect\" files that haven't been accessed after a while, at least when space is running low.\r\n\r\nSome of these things are, of course, probably beyond the scope of ownCloud, but some of this certainly seems to be within scope. Would it be possible to introduce some on-demand functionality to ownCloud?"},"comment":{"url":"https://api.github.com/repos/owncloud/core/issues/comments/185346076","html_url":"https://github.com/owncloud/core/issues/6760#issuecomment-185346076","issue_url":"https://api.github.com/repos/owncloud/core/issues/6760","id":185346076,"user":{"login":"MTRichards","id":1818977,"avatar_url":"https://avatars.githubusercontent.com/u/1818977?v=3","gravatar_id":"","url":"https://api.github.com/users/MTRichards","html_url":"https://github.com/MTRichards","followers_url":"https://api.github.com/users/MTRichards/followers","following_url":"https://api.github.com/users/MTRichards/following{/other_user}","gists_url":"https://api.github.com/users/MTRichards/gists{/gist_id}","starred_url":"https://api.github.com/users/MTRichards/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MTRichards/subscriptions","organizations_url":"https://api.github.com/users/MTRichards/orgs","repos_url":"https://api.github.com/users/MTRichards/repos","events_url":"https://api.github.com/users/MTRichards/events{/privacy}","received_events_url":"https://api.github.com/users/MTRichards/received_events","type":"User","site_admin":false},"created_at":"2016-02-17T18:51:16Z","updated_at":"2016-02-17T18:51:16Z","body":"I would consider this a good use case for a virtual filesystem, so I wouldn't close the issue - but not sure how to handle long term conversations of this kind.\r\n\r\n@karlitschek @dragotin @danimo "}}