Streaming PAR2 recovery for Unicode directory trees
moon build cmd/main --target js
python examples/repair_demo.pynode /path/to/moonpar2.cjs create --recovery-blocks 8 backup.par2 documents photos
node /path/to/moonpar2.cjs inspect backup.par2
node /path/to/moonpar2.cjs verify backup.par2
node /path/to/moonpar2.cjs repair restored backup.par2moon add xmyd0915/moonpar2@0.4.0| 项目 | 0.4.0 |
|---|---|
| 文件与目录 | 最多 4096 个普通文件,含空文件;中文、日文、emoji 和多级相对路径 |
| 大文件 | 命令行默认流式处理;64 位长度与偏移,内存不随源文件总量线性增长 |
| 源块 | 最多 32768 个,块宽为 4 的倍数,自动选择或手动指定 |
| 恢复数据 | 最多 32 个不同恢复块,输入卷总计 64 MiB |
| 容错 | 坏包跳过、错位重同步、重复元数据、多卷合并、未知包忽略 |
| 分卷 | 索引与恢复分卷写出、同组自动发现、各恢复分卷自带两份元数据 |
| 路径保护 | 拒绝越界、绝对路径、设备名、冲突布局、符号链接与目录联接 |
node moonpar2.cjs create --recovery-blocks 8 --volume-blocks 2 backup.par2 documents photos
node moonpar2.cjs repair restored backup.par2moon fmt --check
moon check --target all --deny-warn
moon test --target js --deny-warn
moon test --target wasm-gc --deny-warn
moon build cmd/main --target js --deny-warn
python tests/conformance.py --par2 /path/to/par2 --report _build/conformance.json
python tests/capacity.py --mib 256 --par2 /path/to/par2 --report _build/capacity.json
python tests/streaming.py --mib 1024 --par2 /path/to/par2 --report _build/streaming.json
python tests/unicode_interop.py --par2 /path/to/par2
python tests/volumes.py --par2 /path/to/par2 --report _build/volumes.jsonpub(all) struct FileStatus {
name : String
healthy : Bool
missing : Bool
damaged_slices : Array[Int]
recoverable : Bool
}type RecoverySetfn RecoverySet::repair(self : RecoverySet, files : Map[String, Bytes]) -> Array[(String, Bytes)] raisefn RecoverySet::repair_stream(self : RecoverySet, size : (String) -> UInt64? raise, reader : (String, UInt64, Int) -> Bytes raise, writer : (String, UInt64, Bytes) -> Unit raise) -> Unit raisefn RecoverySet::verify_stream(self : RecoverySet, size : (String) -> UInt64? raise, reader : (String, UInt64, Int) -> Bytes raise) -> Array[FileStatus] raisefn safe_path(path : String) -> Bool