Files
l-s/README.md
2026-04-03 21:36:51 +08:00

98 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`的格式如下:
```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.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``licsber-bak.json`(兼容旧工具) | 以 `Thumb_` 开头的缩略图文件 |
**子目录递归优化**
遍历目录时,如果某个子目录下已存在 `meta.json`,程序会直接加载并快速校验该子目录的元数据,而不是重新计算所有文件。这有助于加快大型目录树的处理速度。