5个版本 (3个破坏性更新)
0.4.0 | 2024年8月15日 |
---|---|
0.3.0 | 2024年7月9日 |
0.2.0 | 2024年6月26日 |
0.1.1 | 2024年6月26日 |
0.1.0 | 2024年6月24日 |
#155 in 文件系统
每月143次下载
27KB
550 行
transformfs
一个只读的FUSE文件系统,可以将输入文件通过Lua脚本转换为输出文件。
在transformfs中,输入文件可以通过用户定义的Lua脚本按需转换。输入是传递给用户脚本的文件列表,用户脚本返回动态生成的文件列表。
此文件系统适用于在不复制或修改原始文件的情况下转换数据。
安装
Cargo
cargo install transformfs
Nix
Transformfs还打包为NUR包 nur.repos.dcsunset.transformfs
。您可以通过将其包含在您的nix配置中安装它。
用法
# mount transformfs
transformfs -s <lua_script> [-i <input1>...] <mnt_point>
# umount
fusermount -u <mnt_point>
输入可以是零个、一个或多个文件或目录(目录解析为单个文件)。
用户Lua脚本必须返回一个包含以下函数作为字段的模块(表)
transform(inputs)
:将输入(文件路径列表)转换为输出的函数。它应该返回一个Output
列表。
每个Output
都是一个具有以下字段的表
path
:文件路径metadata
:返回文件的元数据作为FileMetadata
。open()
:(可选)如果定义,则在打开文件时调用。用于提前打开文件以提高性能close()
:(可选)如果定义,则在关闭文件时调用。用于回收资源read(offset, size)
:在特定位置返回文件内容作为字符串。
FileMetadata字段
size
:文件大小block_size
:(可选)文件块大小(默认:512)
Transformfs出于性能原因使用LuaJIT,因为Lua代码在大文件中执行非常频繁。因此,它可能不支持在编写时的Lua 5.3或5.4中的新功能。
请参阅 examples
目录中的示例脚本以获取更多详细信息,并使用 transformfs --help
命令获取帮助。
许可证
AGPL-3.0
依赖项
~6–16MB
~208K SLoC