fsspec integration
I was only recently made aware of this library. Fsspec has some similar concerns, but is primarily used for interacting with remote storage systems, whereas most of the FS-like targets here are local file containers. Would you like to provide a shim such that fsspec.filesystem or fsspec.open can deal with a dissect target filesystem type? It could have a benefit to you, maybe opening a filesystem container file in a remote store.
I am also interested in the FUSE integration. fsspec also has this, but it is flaky, experimental and rarely used. Perhaps the solution here is more robust, and all fsspec filesystem types could be exposed.
cc @mxmlnkn of ratarmount
Hi @martindurant, thanks for reaching out! Apologies for the delayed response, I also saw the other thread where Dissect was mentioned and wanted to give an in-depth reply there, but some things came up and I just couldn't get around to it yet. When I have some more time I'd still like to elaborate some of our decisions and goals in further detail there.
To give a short response, this looks interesting to us and something we'd be interested in exploring. Could you perhaps give a short overview of the necessary tasks or some API references so we can make an estimate on how much work this would be?
FYI, our FUSE implementation isn't flawless (or particularly fast), but it does get used very heavily and seems to be pretty stable overall.
The fsspec API is essentially https://github.com/fsspec/filesystem_spec/blob/master/fsspec/spec.py#L96 , with various user functions. It is not dissimilar to yours! Indeed, we have some built in implementations for file-based filesystems like libarchive, but nowhere near as comprehensive a set at dissect.
The work would be to write a wrapper for a dissect implementation class ( https://github.com/fox-it/dissect.target/blob/main/dissect/target/filesystem.py#L34 ?) to allow fsspec to use it or vice-versa. Going fsspec->dissect would be the route that would allow for your implementation of FUSE on top of our storage implementations.