-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make mount
command available on more platforms
#971
Comments
FUSE is a *nix solution, we discussed on discord a while ago how to go forward on |
@darkdragon-001 If you are willing to self-compile rustic in combination with a local `rustic_core', you can try #973 in combination with rustic-rs/rustic_core#106. Note this is WIP, but I'm happy to get feedback on it! WebDAV should be almost as easy to implement, but the API is async Rust and needs a bit more boilerplate... |
webdav is now also implemented in #973 |
If I want to try this, should I just build |
@robsmith11 There is another PR in rustic_core needed for mount: rustic-rs/rustic_core#156. I updated #973 and it now uses the needed rustic_core branch. So, to try out the |
Just an FYI that sadly WebDAV is not very usable on Windows, it is extremely slow and there are limits on file sizes that can be copied from a WebDAV share. I wonder if WinFsp could be explored for Windows users as it likely will provide a better experience. Cheers |
|
@fgimian There is the vfs support in rustic_core which is already used in webdav and in the mount implementation, see #973. For WinSFP, there seems to be the winfsp crate https://crates.io/crates/winfsp. So, to support it, it should be sufficient to implement the FileSystemContext trait using the vfs support (check e.g. the mount command for details how to actually use that; note that only the read-only part can/needs to be implemented) and add some copy&paste boilerplate code to some new The other issue (like with the |
This PR adds the `mount` command to rustic to access snapshot contents as a read-only filesystem when the feature-flag `mount` is chosen. As for the `webdav` command, there are following options: - Access to a concrete snapshot/path, e.g. `rustic mount /mnt 37a63e5b:/my/path`. - Access to all snapshots (maybe restricted by filters) by using templates to define a virtual directory structure where snapshots are located. Example: `rustic mount /mnt --path-template "[{hostname}]/[{label}]/{time}" --time-template "%Y-%m-%d_%H-%M-%S"` (these are also defined as default). Note that for all dirs containing only snapshots, also a `latest` entry is generated. `latest` and identical subsequent snapshots are symlinks when using `mount`. This PR uses fuse_mt which is not optimal as it introduces some overhead (e.g. needs to save whole Paths in-memory). Note: Requires rustic-rs/rustic_core#331 to properly show all data of files (without it builds and runs, but files are truncated and return error when reading). Note: Building with the `mount` feature flag requires special dependencies and is only possible on supported platforms, see https://github.com/cberner/fuser closes #971 --------- Co-authored-by: simonsan <[email protected]>
Reopening, as I think this should probably not be closed, until we have widespread platform support, at least for the main missing one's - OSX and Windows. Support for |
mount
commandmount
command available on more platforms
There is fuse-rs and this is one of the few missing features to feature parity with Restic. I sometimes find it very handy to just browse a snapshot with all my available tools.
The text was updated successfully, but these errors were encountered: