WinFsp · Windows File System Proxy
github.com
github.com
This enables one implementation of a FUSE filing system to work on lots of OSes.
Bill Zissimopoulos also wrote cgofuse which rclone uses to access the FUSE compatibility layer. It's a FUSE library for Go. We use that on Windows and macOS (via macFUSE or fuse-T) too. It runs on Linux too but isn't the default as it needs CGO (linking with C).
I've worked a lot with Bill and he knows more about Windows file systems and Windows internals than anyone I've ever met!
Really handy for my backups that are stored there, it's a bit slow though. But that's why there is a cache.
If the storage provider doesn't offer snapshots you could backup to a rolling target, say one subdirectory per day of the week/month/year, though here you lose the protection of snapshots being less mutable – someone taking control of a machine can kill all the backups as it has full access to them.
I do a soft-offline backup³ where the source machines don't have access to the backups directly and so the snapshots. The source machines backup to one external service, just a server connected to via ssh, the backups being maintained using rsync (other tools like rclone already mentioned would do just as well), then another external server reads the backups from there it itself and creates snapshots. The source and backup machines both have credentials to access the intermediate backup but can't authenticate against each other so malware or a human attacker getting access to the source can't corrupt the backups from there or corrupt the source if they hack into the backups. It isn't perfect: there isn't the immutability promise given by some storage providers, verifying backups takes extra steps (but can still be automated), a really determined attacker could still do damage if they get both sets of keys or access to my accounts on the server providers (though that would have to be a very directed attack and I'm not interesting enough to attract one of them!), and I have to be careful about those passwords/keys: I need to be able to authenticate against the final backup service if all else is compromised and for maintenance.
--
[1] breaking the backups subtly, so you don't notice and delaying hitting the encrypt-and-ransom switch until after the standard snapshot retention window² has expired
[2] assuming this is short, like a month or less, this is less of a concern with longer retention but you still stand to lose recent data
[3] I must write properly about that somewhere permanent-ish, so I can just post a link instead of re-describing it in every backup discussion I have!
I backup to the day folder ,( eg. 01-31)
And to the latest folder
https://learn.microsoft.com/en-us/windows/win32/projfs/proje...
On a completely different note, there's also "Windows Projected File System", which sounds a lot like a user-mode file system, but it's not. It requires that files be backed by real files on your disk.
I think it would work if your data is in memory or backed by a 10G+ lan.
[1] https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-dis...
Why would somebody need to use this instead of like, smb or however normal Windows machines on the same network share drives/files/folders (even with other Mac machines on the network, or Linux, etc.)?
For example, you could make a "filesystem" where everything inside looks like an uncompressed BMP file, but the actual files backing them are some other image format. Then ancient software would be able to use the newest image formats.
I've never written an SMB server, but I assume it is a lot more complicated than using WinFsp or Fuse.
WSL 2 uses the 9P network filesystem to share files between Linux & Windows. Supposedly this is a simple protocol to implement. I've searched, but can't find any documentation on using 9P without WSL.
Both OSes treat network filesystems differently from local disks. The FUSE-T implementation is very speedy, but it shows up in the finder as a connection to "localhost", not as a properly named mount. In addition, macOS creates .DS_Store files on network drives by default (there is a setting you can change from the CLI to prevent this). On Windows, the filesystems can be mounted as local drives or network drives. When mounted as network drives, they can have issues with indexing and trust. All-in-all, drives you expect to function as local drives work best when they're actually local device filesystems and not network mounts.
Think transparent backups like RAID 1 or depending on how you structure the data you could even use joins to do RAID 0 and get a performance boost.
Obviously this won't be as fast a real RAID cluster but throwing random storage at it like old usb sticks etc might be a bit of fun and an easy way to expand it over time to bigger devices.
select * from files where filePath="d:\data"
https://learn.microsoft.com/en-us/windows/win32/cfapi/build-...