server & client for working with our images, was rfs before
Find a file
rawdaGastan 89f0b28230
All checks were successful
Unit and Integration Test / test (push) Successful in 4m42s
Merge pull request 'add workflows' (#7) from main_workflows into main
Reviewed-on: #7
2026-01-08 15:41:47 +00:00
.forgejo/workflows add workflows 2026-01-08 13:58:12 +02:00
code_from_herolib initial 2025-12-27 20:07:22 +01:00
docs Add ADR-003: FUSE error handling improvements 2026-01-06 23:15:19 +01:00
frontend add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
schema add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
scripts add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
src fix test 2026-01-08 17:35:54 +02:00
templates add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
test-website add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
tests fix test 2026-01-08 17:35:54 +02:00
.gitignore add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
build.rs add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
Cargo.lock Cleanup: fix build, remove bollard, rename docker to container 2025-12-30 15:08:50 +01:00
Cargo.toml Cleanup: fix build, remove bollard, rename docker to container 2025-12-30 15:08:50 +01:00
docker-compose.yml add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
Dockerfile add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
LICENSE add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
README MyFS.md add rfs to myfs renamed 2025-12-29 12:30:25 +02:00
README.md update the README docs 2026-01-06 18:20:43 +02:00

myfs

A modern filesystem server with deduplication and list-based management capabilities. Previously known as RFS (Redundant File System), myfs provides a unified interface for managing container images with support for multiple storage backends including S3 and local filesystems.

Overview

myfs is a Rust-based filesystem server that handles:

  • File Deduplication: Efficient storage by detecting and managing duplicate files
  • Image Lists: Organize and track image layers and metadata
  • Multiple Storage Backends: Support for S3, local filesystems, SSH, and WebDAV
  • Server Component: HTTP server that maps image operations to storage backends
  • Built-in Metadata Store: Integrated metadata management for images and layers

Architecture

The project consists of three main components:

1. Server Component

The HTTP server that provides APIs for image operations and manages the connection between clients and storage backends (S3 or local filesystem).

2. Client Library

Rust-based client library for interacting with the image server and managing image operations.

3. Storage Backends

Pluggable storage backends supporting:

  • Local filesystem
  • S3-compatible object storage

Features

Mount Operations

  • Mount image layers from various sources
  • Support for multiple mount types (Local, SSH, S3, WebDAV)
  • Mount options configuration
  • List active mounts
  • Unmount individual or all mounts

Packing and Unpacking

  • Pack directories into compressed image layers
  • Unpack image layers to directories
  • Verify image integrity
  • List image contents

Deduplication

  • Automatic detection of duplicate files
  • Efficient storage through content-based deduplication
  • Metadata tracking for duplicate files

Building

Prerequisites

  • Rust 1.92
  • Linux (primary supported platform)

Linux Build

# Build the project in release mode with binary features
cargo build --release --features build-binary

# The binary will be available at:
./target/release/myfs

Development Build

# Build in debug mode (includes debug symbols)
cargo build --features build-binary

# Run tests
cargo test

Usage

As a Library

Add to your Cargo.toml:

[dependencies]
myfs = { path = "." }

Then use in your code:

use myfs::{MyImageBuilder, MountType};

// Create a mount
let builder = MyImageBuilder::new(
    "s3://bucket/image",
    "/mnt/image",
    MountType::S3
);

As a Server

# Start the server (default port 8080)
./myfs server

# The server will provide REST APIs for image operations

Command Line Interface

The project provides command-line tools for common operations:

# Pack a directory
myfs pack <directory> <output> --store-spec <spec>

# Unpack an image
myfs unpack <input> <output>

# List image contents
myfs list <image-path>

# Verify image integrity
myfs verify <image-path>

Configuration

Images are configured using StoreSpec which defines:

  • Storage type (local, S3, SSH, WebDAV)
  • Location and credentials
  • Access permissions and options

Future Roadmap

  • Integrate RFS codebase from GitHub
  • Performance optimizations for large images
  • Enhanced deduplication algorithms