This is a very interesting problem, espeicially since consumer computing devices quickly shunted to small storage space when SSD's arrived. A few years ago, a laptop with 500GB of hard drive space was rather small! Nowadays, a 500GB SSD is top-tier. Granted, SSD capacity is quickly rising, but with the combination of small computing like phones and tablets, space is at a premium.
Funnily enough, this problem has been solved before! If you look at distributed file systems, especially something like Coda (http://en.wikipedia.org/wiki/Coda_(file_system)), they are designed to make the local computer a "thin client for storage". Basically, local storage is used as a cache for the main copy on the server, and this behavior is transparent to user applications via the FS driver.
Dropbox uses a user-space program to sync the files and cannot intercept system calls. As such, they had no choice but to synchronize all of it rather than bringing things in "on-demand" and releasing local copies that are not used. Nowadays, this can easily be done via FUSE driver in Linux. I do not know if something like FUSE exists on other platforms though.
Overall, I personally love the idea of a local machine being a "cache" for the server copy. However, the technical challenges are greater than a simple mirroring scheme, and there may be UX issues as well.
Funnily enough, this problem has been solved before! If you look at distributed file systems, especially something like Coda (http://en.wikipedia.org/wiki/Coda_(file_system)), they are designed to make the local computer a "thin client for storage". Basically, local storage is used as a cache for the main copy on the server, and this behavior is transparent to user applications via the FS driver.
Dropbox uses a user-space program to sync the files and cannot intercept system calls. As such, they had no choice but to synchronize all of it rather than bringing things in "on-demand" and releasing local copies that are not used. Nowadays, this can easily be done via FUSE driver in Linux. I do not know if something like FUSE exists on other platforms though.
Overall, I personally love the idea of a local machine being a "cache" for the server copy. However, the technical challenges are greater than a simple mirroring scheme, and there may be UX issues as well.