2026-04-03 21:36:51 +08:00
2024-09-26 10:05:03 +08:00
2025-11-21 00:14:11 +08:00
2026-04-03 21:36:51 +08:00

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的格式如下:

{
  "dir_name": "test",
  "dirs": [
    {
      "dir_name": "child",
      "dirs": [],
      "files": [
        {
          "basename": "233",
          "size": 4,
          "friendly_size": "4.00B",
          "mtime": 1763654099,
          "head_115": "28AAB5A575FA1138E2CE5B1366AE697685775011",
          "head_baidu": "1490AAA92CB684B2110DDB29D7A1AC15",
          "ed2k": "6CB03133656BDB8DFC780EBBD4FF47CC",
          "md5": "9F3D9739B11C2A4B08EA48512AC467F6",
          "sha1": "10E25C6EC9A30C731BF82E5DBA37BC693E9F615D",
          "sha256": "5F8064636753265C7F1B1EE075DF77E1AE9BCE7E94831DE583784A0C13EB902F",
          "xxh128": "B92C6051418D532F7E933C08C44C4C88"
        }
      ]
    }
  ],
  "files": [],
  "v": "2025-11-21"
}

字段说明:

  • basename: 文件名
  • size: 文件大小(字节)
  • friendly_size: 人类可读的文件大小
  • mtime: 文件修改时间Unix 时间戳)
  • head_115: 115网盘头部哈希前128KB的SHA1
  • head_baidu: 百度网盘头部哈希前256KB的MD5
  • ed2k: ED2K 哈希
  • md5: MD5 哈希
  • sha1: SHA1 哈希
  • sha256: SHA256 哈希
  • xxh128: XXH3-128 哈希(用于快速校验)
  • v: 元数据格式版本号

其他说明

进度显示

处理过程中会显示实时进度条,包括当前文件名、处理速度和剩余时间等信息。

软链接处理

程序会自动跳过所有软链接(符号链接),不进行递归处理。

自动排除的文件和目录

以下条目会在扫描时跳过(与 constants.rsSKIP_*should_skip_file 规则一致):

系统 / 环境 目录名(整段跳过) 文件名(精确匹配) 文件名模式
群晖等 NAS @Recently-Snapshot(快照)、@Recycle(回收站)、.@__thumb(缩略图缓存)、@Transcode(转码)
Windows $RECYCLE.BIN Thumbs.dbdesktop.ini
macOS .DS_Store ._ 开头AppleDouble 资源叉)
本工具 meta(元数据子目录) meta.jsonmeta-old.jsonlicsber-bak.json(兼容旧工具) Thumb_ 开头的缩略图文件

子目录递归优化

遍历目录时,如果某个子目录下已存在 meta.json,程序会直接加载并快速校验该子目录的元数据,而不是重新计算所有文件。这有助于加快大型目录树的处理速度。

Description
No description provided
Readme 130 KiB
Languages
Rust 100%