refactor check logic.
This commit is contained in:
43
README.md
43
README.md
@@ -1,40 +1,29 @@
|
||||
# l-s
|
||||
|
||||
Summary any file‘s meta.
|
||||
为任意文件或文件夹生成和校验元数据(meta 信息)的工具。
|
||||
|
||||
## 使用说明
|
||||
|
||||
接收1个命令行参数,为文件/文件夹路径,如命令行参数为空,则默认为当前路径。
|
||||
程序接受一个命令行参数,作为文件或文件夹路径。如果未提供参数,则默认处理当前目录。
|
||||
|
||||
元数据均以json格式保存,且经过pretty打印,以方便人类阅读。
|
||||
元数据信息以 json 格式保存,且采用美观(pretty)打印以方便阅读。
|
||||
|
||||
对于输入参数是文件的情况:
|
||||
**如果输入的是文件:**
|
||||
|
||||
文件的元数据命名与原文件相同,仅新增json拓展名。
|
||||
- 元数据文件与原文件同名,仅添加 `.json` 扩展名,存放在文件所在目录下的 `meta` 子文件夹内(文件夹不存在则自动创建)。
|
||||
- 若不存在相应元数据文件,则自动计算并保存。
|
||||
- 若元数据文件已存在,则仅校验其中的 `xxh128` 哈希值。
|
||||
- 校验通过将提示“校验通过”。
|
||||
- 校验不通过时,会重新计算并输出当前元数据到标准输出,同时保留原元数据文件不变。
|
||||
|
||||
文件的元数据保存路径是其所在路径下的meta子文件夹,如果元数据保存路径不存在,则新建。
|
||||
**如果输入的是文件夹:**
|
||||
|
||||
如果文件的元数据不存在,则计算元数据并保存。
|
||||
|
||||
如果文件的元数据存在,则对元数据中的xxh128部分进行校验。
|
||||
|
||||
如果校验通过,则打印校验成功。
|
||||
|
||||
如果校验不通过,计算当前的元数据并打印到标准输出,保留原元数据文件不动。
|
||||
|
||||
对于输入参数是文件夹的情况:
|
||||
|
||||
遍历这个文件夹,以字母序遍历遇到的每一个子文件夹和文件。
|
||||
|
||||
文件夹的元数据文件就保存在其中,命名为`meta.json`。
|
||||
|
||||
如果文件夹的元数据不存在,则遍历计算并保存。
|
||||
|
||||
如果文件夹的元数据存在,则对原元数据文件重命名为`meta-old.json`,并对其中所有文件的xxh128部分校验。
|
||||
|
||||
遍历如果发现有新增文件或删除文件,都应打印到标准输出提示用户。
|
||||
|
||||
如果全部校验一致,则重新命名回`meta.json`。
|
||||
- 若不存在`meta.json`,则按字母序遍历目录树,计算全部文件元数据并写入`meta.json`。
|
||||
- 若`meta.json`已存在:
|
||||
- 程序会先将其重命名为`meta-old.json`,提示用户正在校验旧数据;
|
||||
- 遍历当前目录结构,仅计算每个文件的`xxh128`并与旧元数据对比;
|
||||
- 发现校验失败、新增或缺失的文件都会即时打印到标准输出;
|
||||
- 若全部一致,则将`meta-old.json`重命名回`meta.json`;如有异常则保留`meta-old.json`供排查(不会生成新的`meta.json`)。
|
||||
|
||||
标准`meta.json`的格式如下:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user