9 个版本
0.0.10 | 2024 年 2 月 29 日 |
---|---|
0.0.9 | 2023 年 3 月 14 日 |
0.0.1 | 2023 年 2 月 28 日 |
363 在 文件系统 中
每月 29 次下载
33KB
791 行
rsincron
尝试在 Rust 中复活 incron
。
安装
Cargo
运行 cargo install rsincron
。
使用方法
rsincrond
只需使用 rsincrond
运行守护程序。程序不会将其自身置于后台。日志被写入标准错误。使用 RUST_LOG
环境变量自定义目标和日志级别(见 env_logger
crate)。
rsincrontab
管理监视的工具。使用方法
rsincrontab <mode>
其中模式是 edit
、list
或 remove
之一。
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