Can someone explain FUSE and mounting

I do not understand what is actually happening when I perform

restic mount <my_local_path>

In my specific case, I want to be able to mount my repository to my local drive so that I can “look around in it”. I am about to get rid of an older computer that is backed up, and I would love to be able to just keep the repo in the cloud (restic is connected to BackBlaze as the repo in my case), and perform restic mount <my_local_path> to grab specific files that I need off of the old computer.

I am the sort of person who just copies the whole user directory when getting a new computer, and over the years, clutter has piled up. I am hoping that intelligent usage of Restic can avoid that. (I am trying to “Marie Kondo” my digital life a little.)

So here are my main questions, but knowing my use case, maybe you all have some other important things to tell me:

  1. When I perform restic mount /mnt/oldComputer, will all of the files sitting in BackBlaze be brought down onto my computer in the /mnt/oldComputer path? Or are pointers and file hierarchy the only thing copied, and nothing is really copied until I find my file of interest and explicitly copy it via something like cp /mnt/oldComputer/cute_video.mp4 ~/Videos?
    • Also, is there a way to only mount a particular backup via restic mount, or is everything mounted? If the mount itself takes up little disk space, this may be moot.
    • When I umount and remove that FUSE connection, is everything removed from that /mnt/oldComputer path? Is that the best way to interact: restic mount, look for the file of interest, then umount?
  2. Is my workflow robust / acceptable, assuming I can trust BackBlaze not to lose any files/objects. (And I am assuming I can.)
    • Can I treat the repository as the only backup, and just mount to it whenever I want files?
    • The benefit of reducing electronic clutter is, for me at this point, almost as important as ensuring I do not lose anything important to me.
  3. If I look up FUSE on Wikipedia or something, it “just” seems like an interface to deal with privileges and security related things. I don’t really see (a) why restic specifically mentions fuse in its documentation, or (b) why it is important in understanding what is happening.
    • I guess what I am saying is this: is the documentation just assuming we all know what fuse is, and if we do not, is the documentation therefore more confusing than helpful?
    • As a curious person, is there something of interest I should take away from FUSE that makes it cool in a particular way that Restic cleverly utilizes?
  1. NOTHING is copied to your disk when you mount. What you get is a “virtual file system” which shows what is in your repo. If you want something locally, you need to copy.
  2. You need to decide your level of “paranoia”, if only one backup at Backblaze is good enough for you.
  3. FUSE makes it possible for non-root users to mount stuff. And it is a way of representing stuff which are not a regular file system, which is the case with restic mount. Your backup is a bunch of files which in no way have a one-to-one relationship with the files you backed up, but restic mount is doing some “magic” to show you the files and folders as they were at the time of your backup.

For practical intents and purposes, consider it a regular mount that you do of a disk or whatever at a path. Not much different, it’s just that it’s done through FUSE.

Thank you very much, @martinleben and @rawtaz !!

I had thought that nothing was copied, but just wanted to double check. :slight_smile:

Regarding the reason why restic uses FUSE (primarily because it is not a “normal” file system and instead file chunks being represented as normal files via FUSE’s magic), that makes total sense and helps me appreciate what is happening and why.

Thanks again, y’all!