Skip to content

Commit b83787f

Browse files
committed
docs: add Chinese README with usage and architecture overview
1 parent a9f7266 commit b83787f

1 file changed

Lines changed: 74 additions & 1 deletion

File tree

README.md

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,75 @@
11
# LiteSnap
2-
LiteSnap is a simple snapshot for folder
2+
3+
简易文件夹快照工具,诞生于 [PCL CE](https://github.com/PCL-Community) 的存档备份需求。
4+
5+
## 由来
6+
7+
玩 Minecraft 的玩家都懂 —— 进新版本前备份存档,模组搞炸了回滚,这是刻在骨子里的习惯。LiteSnap 最初就是为 PCL CE 的 .minecraft/saves 文件夹快照备份而写,后来抽离为通用工具,可以对任意文件夹做文件级快照管理。
8+
9+
## 原理
10+
11+
```
12+
{target_folder}/
13+
└── .litesnap/
14+
├── index.db # LiteDB 索引:版本列表 + 每个版本的文件清单
15+
└── objects/ # 内容寻址存储(SHA-512 去重)
16+
└── {hash[:2]}/ # 前缀子目录
17+
└── {hash} # 原始文件内容
18+
```
19+
20+
- **创建快照**:扫描目标文件夹,按 SHA-512 哈希去重存储文件,版本清单写入 LiteDB
21+
- **回滚快照**:根据版本清单从 `objects/` 还原文件到目标目录
22+
- **导出**:支持导出为 ZIP 或普通文件夹,方便迁移
23+
24+
文件重复越多,节约空间越明显(同一个文件在不同版本间只存一份物理副本)。
25+
26+
## 功能
27+
28+
| 功能 | 说明 |
29+
|---|---|
30+
| 创建快照 | 扫描当前文件夹,生成文件级快照 |
31+
| 回滚快照 | 将指定版本还原到目标目录 |
32+
| 导出 ZIP | 导出为 ZIP 压缩包 |
33+
| 导出文件夹 | 导出为普通文件夹 |
34+
| 删除快照 | 删除指定版本记录 |
35+
36+
## 使用
37+
38+
```
39+
# 命令行 - 直接运行
40+
dotnet run --project src/LiteSnap.App
41+
42+
# 发布为单文件
43+
dotnet publish src/LiteSnap.App -c Release -r win-x64 --self-contained true \
44+
-p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=link
45+
46+
# 产物在 bin/Release/net10.0/win-x64/publish/LiteSnap.App.exe
47+
```
48+
49+
启动后点击「打开」选择包含 `.litesnap` 数据的文件夹,左侧列出所有版本,右侧查看文件详情,顶部工具栏执行操作。
50+
51+
## 技术栈
52+
53+
|| 技术 |
54+
|---|---|
55+
| 运行时 | .NET 10, C# |
56+
| 桌面 UI | Avalonia 12, Fluent Theme, CommunityToolkit.Mvvm |
57+
| 存储引擎 | LiteDB 5 (嵌入式 NoSQL) |
58+
| 内容寻址 | SHA-512, 文件级去重 |
59+
| 平台 | Windows / Linux / macOS |
60+
61+
## 构建
62+
63+
```bash
64+
dotnet build
65+
```
66+
67+
无需额外依赖,还原即用。
68+
69+
## 数据结构
70+
71+
详见 [docs/data-structure.md](docs/data-structure.md)
72+
73+
## License
74+
75+
MIT

0 commit comments

Comments
 (0)