#range #fuse #file #fs

应用 rangefs

一种基于 fuse 的文件系统,将文件中的范围映射到单独的文件

9 个不稳定版本 (3 个重大更改)

0.4.4 2024 年 6 月 26 日
0.4.3 2024 年 1 月 8 日
0.3.1 2023 年 12 月 26 日
0.2.0 2023 年 12 月 26 日
0.1.0 2023 年 12 月 25 日

文件系统 中排名 611

Download history 1/week @ 2024-05-18 1/week @ 2024-05-25 176/week @ 2024-06-22 3/week @ 2024-06-29 77/week @ 2024-07-06 4/week @ 2024-07-13

每月下载量 474

AGPL-3.0

26KB
477

rangefs

crates.io

一种基于 FUSE 的只读文件系统,将文件中的范围映射到单独的文件。

安装

预构建的二进制文件可在 GitHub 发布页面找到。

您也可以使用 cargo 安装它

cargo install rangefs

如果您使用 Nix,您也可以从 NUR 软件包 nur.repos.dcsunset.rangefs 安装。NUR 仓库还提供了一个 NixOS 模块

programs.rangefs = {
  enable = true;
  fileSystems = {
    "/mntpoint" = {
      source = "/src";
      config = [
        {
          name = "dest";
          offset = 32;
          size = 64;
        }
      ];
      extraOptions = [ "allow_other" ];
    };
  };
};

使用方法

将具有范围文件的文件挂载到挂载点

# mount a range as a new file
rangefs --config offset=16:size=16 <file> <mount_point>
# multiple ranges with different names
rangefs -c offset=4:name=range1 -c offset=8:size=8:name=range2 <file> <mount_point>

# unmount
fusermount -u <mount_point>

# To adjust log level and run at foreground
RANGEFS_LOG=debug rangefs -c offset=1:size=1 --foreground <file> <mount_point>

挂载点将是一个只读文件系统,其中包含对应于源文件中指定范围的文件。重复使用 --config 选项来挂载多个范围。

请注意,程序默认在后台运行。使用标志 --foreground 在前台运行它。

如果程序未使用 fusermount 退出,即使在程序退出后,也需要使用 fusermount。您还可以使用 - 选项在程序退出时自动卸载 fs。

请注意,rangefs 还支持挂载块特殊文件。但是,您需要指定范围长度。否则,默认长度将为 0(与块文件元数据中的大小相同)。

rangefs 还支持通过 mount.fuse/etc/fstab 挂载。要指定配置,以 config:: 开头,并使用双冒号分隔配置。对于超时、标准输出和标准错误,使用 <option>::<value> 来设置它。使用 :: 而不是 = 来区分自定义选项和现有挂载选项。以下是一个 fstab 配置示例

/source_file /mount_point fuse./path/to/rangefs nofail,allow_other,config::name=r1:offset=1::name=r2:offset=2:size=2 0 0

使用 rangefs --help 查看可用选项。

许可证

AGPL-3.0。版权声明

rangefs
Copyright (C) 2023-2024  DCsunset

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

依赖关系

~6-15MB
~170K SLoC