I have a laptop with a humble amount of disk-space and a desktop with a massive amount of disk-space.<p>I would like for the desktop to be a logically infinite source of storage, while the laptop stores only what I am currently using.<p>For example, if I have a "photos" folder with 10tb of photos, I would like to see a list of all the photos when I open the folder on my laptop. If I then select a specific photo to open, my laptop checks if it already has it downloaded locally and if not, silently pulls it from the server. If I do that thousands of times and run out of space on my laptop, the laptop should automatically purge the LRU photo to load the new one.<p>From the laptop's perspective, it has an unlimited amount of space - the only noticeable thing is that some files take longer to load than others.<p>A critical component of this is that both systems are automatically synched. If a folder is created on the laptop, it is also created on the desktop. If a file is created on the laptop it is automatically backed up to the desktop. If a file is added to the desktop, its metadata is automatically synched to the laptop. Etc.<p>The desktop stores a superset of the the laptop and nothing else. The laptop always knows all the files on the desktop.<p>What self-hosted, preferably FOSS, software does this?
You're describing a "distributed filesystem with client-side whole-file caching". The Andrew File System (AFSv2) did this back in the 1990s.<p><a href="https://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf" rel="nofollow">https://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf</a><p>FWIW, complexity is introduced when the server is unavailable and the client-side caches need to be synced with the remote.<p>Sshfs, NFS, and SMB are substantially easier to set up and live with, so you're not fighting conflict resolutions inherent in multi-primary repositories.
I've been looking for software that does this myself, but I don't think it exists.<p>There used to be a project, <a href="https://bazil.org/" rel="nofollow">https://bazil.org/</a>, that promised to do it. The website is still up, but it has not been updated in years.<p>The existing tool closest to what I envision is git-annex. It tracks what files live where, and you can sync single files or as much content as will fit on the local harddrive with a few commands. There is also git-annex-assistant for a more dropbox-like experience, although I haven't used it myself.
After some research it looks like seafile [1] and nextcloud virtual file mode [2] are viable candidates.<p>[1] <a href="https://www.seafile.com/en/home/" rel="nofollow">https://www.seafile.com/en/home/</a>
[2] <a href="https://nextcloud.com/blog/nextcloud-desktop-client-3-2-with-status-feature-and-virtual-files-available-now/" rel="nofollow">https://nextcloud.com/blog/nextcloud-desktop-client-3-2-with...</a>
I used to use dropbox...I then spent years using raspberry pi's as storage devices, rclone, gdrive, s3 storage, syncthing and other solutions...I am now using dropbox again :-) (with rclone thrown in where needed)