This commit introduces a new 'borg mount' command that allows users to mount an archive as a read-only FUSE filesystem.
Key changes include:
- Added the 'hanwen/go-fuse/v2' library.
- Created new 'mount' and 'unmount' Cobra commands.
- Implemented a FUSE filesystem layer in a new 'pkg/fusefs' package.
- Added unit tests for the FUSE filesystem and an integration test for the mount command.
Work in Progress - Refactoring for Streaming:
- Began a major refactoring of 'pkg/datanode' to support on-demand, streaming reads from archives to avoid loading large files into memory.
- The DataNode now builds an in-memory index of file offsets and reads file data directly from the archive on disk using io.SectionReader.
Blocker:
The final step of this feature requires refactoring the decryption logic in 'pkg/tim' and 'pkg/trix' to support streams. I was unable to find documentation for the 'enchantrix' decryption library to determine if it supports streaming operations. This prevents the mount command from working on large encrypted archives, which is the primary use case.
Co-authored-by: Snider <631881+Snider@users.noreply.github.com>