l-s-0.5.1 is not a library.
l-s
为任意文件或文件夹生成和校验元数据(meta 信息)的工具。
使用说明
程序接受一个命令行参数,作为文件或文件夹路径。如果未提供参数,则默认处理当前目录。
元数据信息以 json 格式保存,且采用美观(pretty)打印以方便阅读。
如果输入的是文件:
- 元数据文件与原文件同名,仅添加
.json扩展名,存放在文件所在目录下的meta子文件夹内(文件夹不存在则自动创建)。 - 若不存在相应元数据文件,则自动计算并保存。
- 若元数据文件已存在,则仅校验其中的
xxh128哈希值。- 校验通过将提示“校验通过”。
- 校验不通过时,会重新计算并输出当前元数据到标准输出,同时保留原元数据文件不变。
如果输入的是文件夹:
- 若不存在
meta.json,则按字母序遍历目录树,计算全部文件元数据并写入meta.json。 - 若
meta.json已存在:- 程序会先将其重命名为
meta-old.json,提示用户正在校验旧数据; - 遍历当前目录结构,仅计算每个文件的
xxh128并与旧元数据对比; - 发现校验失败、新增或缺失的文件都会即时打印到标准输出;
- 若全部一致,则将
meta-old.json重命名回meta.json;如有异常则保留meta-old.json供排查(不会生成新的meta.json)。
- 程序会先将其重命名为
标准meta.json的格式如下:
字段说明:
basename: 文件名size: 文件大小(字节)friendly_size: 人类可读的文件大小mtime: 文件修改时间(Unix 时间戳)head_115: 115网盘头部哈希(固定 128KB 缓冲区的 SHA1;文件不足 128KB 时尾部按 0 填充后计算)head_baidu: 百度网盘头部哈希(固定 256KB 缓冲区的 MD5;文件不足 256KB 时尾部按 0 填充后计算)ed2k: ED2K 哈希md5: MD5 哈希sha1: SHA1 哈希sha256: SHA256 哈希xxh128: XXH3-128 哈希(用于快速校验)v: 元数据格式版本号
其他说明
进度显示
处理过程中会显示实时进度条,包括当前文件名、处理速度和剩余时间等信息。
软链接处理
程序会自动跳过所有软链接(符号链接),不进行递归处理。
自动排除的文件和目录
以下条目会在扫描时跳过(与 constants.rs 中 SKIP_* 及 should_skip_file 规则一致):
| 系统 / 环境 | 目录名(整段跳过) | 文件名(精确匹配) | 文件名模式 |
|---|---|---|---|
| 群晖等 NAS | @Recently-Snapshot(快照)、@Recycle(回收站)、.@__thumb(缩略图缓存)、@Transcode(转码) |
— | — |
| Windows | $RECYCLE.BIN |
Thumbs.db、desktop.ini |
— |
| macOS | — | .DS_Store |
以 ._ 开头(AppleDouble 资源叉) |
| 本工具 | meta(元数据子目录) |
meta.json、meta-old.json |
以 .l-s-tmp- 开头的临时写入文件 |
| 兼容旧工具 | — | licsber-bak.json |
— |
| 缩略图 | — | — | 以 Thumb_ 开头的缩略图文件 |
子目录递归优化
遍历目录时,如果某个子目录下已存在 meta.json,程序会直接加载并快速校验该子目录的元数据,而不是重新计算所有文件。这有助于加快大型目录树的处理速度。