#incron #abandoned #rewrite #time #rsincrond #rsincrontab #masks

bin+lib rsincron

Rust 重写的非常实用但已废弃的 incron 软件

9 个版本

0.0.10 2024 年 2 月 29 日
0.0.9 2023 年 3 月 14 日
0.0.1 2023 年 2 月 28 日

363文件系统

每月 29 次下载

GPL-3.0-or-later

33KB
791

rsincron

crates.io

尝试在 Rust 中复活 incron

安装

Cargo

运行 cargo install rsincron

使用方法

rsincrond

只需使用 rsincrond 运行守护程序。程序不会将其自身置于后台。日志被写入标准错误。使用 RUST_LOG 环境变量自定义目标和日志级别(见 env_logger crate)。

rsincrontab

管理监视的工具。使用方法

rsincrontab <mode>

其中模式是 editlistremove 之一。

edit

使用您的 $EDITOR(如果未找到,则默认为 /usr/bin/vi)打开一个临时文件以编辑/添加新的 rsincron。使用的格式是

<path-to-folder-or-file>  <MASKS,ATTRS>  <command-to-execute ARGS>

您可以使用空格或制表符分隔字段。以 # 开头的行被视为注释。

MASKS(以下段落由 man incrontab.5 提供)

可以监视以下事件(指定时只使用逗号分隔;不要使用空格或制表符)

  • * IN_ACCESS;文件被访问(读取)
  • * IN_ATTRIB;元数据已更改(权限、时间戳、属性等)
  • * IN_CLOSE_WRITE;打开用于写入的文件已关闭
  • * IN_CLOSE_NOWRITE;未打开用于写入的文件已关闭
  • * IN_CREATE;在监视目录中创建了文件/目录
  • * IN_DELETE;从监视目录中删除了文件/目录
  • IN_DELETE_SELF;监视的文件/目录本身被删除
  • * IN_MODIFY;文件已修改
  • IN_MOVE_SELF;被监视的文件/目录自身被移动
  • * IN_MOVED_FROM;文件从被监视的目录移动出去
  • * IN_MOVED_TO;文件移动到被监视的目录
  • * IN_OPEN;文件被打开

带星号的触发事件,在监视文件夹时,会触发被监视类别的文件。

ATTRS

请将它们与掩码一起指定,也仅以逗号分隔

  • recursive=true;是否递归地在子目录中添加监视,或者只保留根目录的监视
ARGS

您可以使用以下占位符将有关事件的详细信息传递给提供的命令

  • $$ -> 单个 $
  • $@ -> 被监视的路径
  • $# -> 触发事件的文件名;如果事件由被监视的文件夹触发,则为''
  • $% -> 触发事件掩码的文本表示
  • $& -> 触发事件掩码的位表示

list

仅列出解析无误的行。

remove

删除用户的 rsincron.table(默认为 $HOME/.local/share/rsincron.table)。

配置

无论是 rsincrond 还是 rsincrontab 都会在 $HOME/.config/rsincron.toml 下查找配置文件。

# Missing values from a config file default to the following
watch_table = "$HOME/.local/share/rsincron.table"

路线图

  • rsincrontab:与 incrontab 兄弟

    • 添加用于
      • 递归的标志
      • 点目录
    • 添加更多详细的输出
  • 写入每种类型的测试

  • 清理和重新组织代码以允许更多模块化

  • 编写文档

关于

这是一个 非常不成熟 的软件。请准备好应对不符合预期的情况。

由于 rsincron 将在我业余时间进行开发,所以我目前还没有一个预计时间表。请随时向我提出建议、批评、提示或贡献问题。

此外,我以前没有公共仓库。如果您想分享一些关于如何维护一个公共仓库的经验,请随时分享。

请预期会有很多错误,rsincron 还不是 alpha 版本。目前它看起来更像是一个概念验证。

已知问题

  • 如果启动时被监视的文件夹不可用,守护程序会跳过监视
  • mkdir -p watched_dir/{1,2,3}/2/3不会在子文件夹上触发

依赖项

~11–21MB
~279K SLoC