更新项目功能说明书
先进、高性能且功能强大的差异备份软件
需要使用 Docker 容器编译项目。
docker build -t ohdev/ohdiff .
docker run -it -v $(pwd):/ohdiff --name ohdiff-dev ohdev/ohdiff
项目支持 x86-64 native 编译和 aarch64 交叉编译。native 编译方便本地测试;交叉编译用来支持在开发板上运行。
以下编译指令都是在容器内执行。
mkdir -p /ohdiff/build/x86-64 cd /ohdiff/build/x86-64 cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../.. ninja
编译结果就存放在当前目录中。ohdiff 为主可执行文件。
ohdiff
mkdir -p /ohdiff/build/aarch64 cd /ohdiff/build/aarch64 cmake -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=../../aarch64-toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release ../.. ninja
编译结果就存放在当前目录中。ohdiff 为主可执行文件。项目使用静态编译,可执行文件直接复制到板子上就能跑。
项目的默认构建方式。
给 cmake STATIC_BUILD 指定为 OFF。
STATIC_BUILD
cmake -G Ninja -DSTATIC_BUILD=OFF ../..
./ohdiff backup --backup <backup-dir> --src <source-dir>
例如:
./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1
如果目录发生改变,要进行增量备份,再次调用备份命令即可。例如:
./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1 # 全量备份 # A1 目录发生一些改变后 ./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1 # 增量备份
ohdiff 会把备份数据放到 /backups/backup1/*.data,并生成 /backups/backup1/*.index 作为索引。
/backups/backup1/*.data
/backups/backup1/*.index
./ohdiff restore ---backup <backup-dir> --dst <destination-path> [--layer <N>] [--pick <picked path>]
例如恢复最新备份的全部数据:
./ohdiff restore --backup /backups/backup1 --dst /mnt/sdcard/A1-restored
可以仅恢复部分文件,使用 --pick 选项指定,例如:
--pick
./ohdiff restore --backup /backups/backup1 --dst /mnt/sdcard/A1-restored --pick /a.txt
使用 --layer 选项可以指定特定的历史版本,例如恢复到第 3 次备份的版本:
--layer
./ohdiff restore --backup /backups/backup1 --dst /mnt/sdcard/A1-restored --layer 3
使用 --timepoint 选项可以指定特定的时间点,例如恢复到 2024 年 6 月 29 日 18 点 8 分备份的数据:
--timepoint
./ohdiff restore --backup /backups/backup1 --dst /mnt/sdcard/A1-restored --timepoint "2024-06-29T18:08:00"
使用 --start(-s) 和 --end(-e) 选项指定合并的备份版本范围。例如合并第1次到第3次备份:
--start(-s)
--end(-e)
./ohdiff merge --backup /backups/backup1 -s 1 -e 3
使用 --compression <level> 选项可以在备份时进行压缩,减小备份体积。level 表示压缩等级。例如,--compression 2 产生的备份比 --compression 1 更小。--compression off 表示不压缩。默认压缩等级为 1。
--compression <level>
level
--compression 2
--compression 1
--compression off
./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1 --compression 2
使用 --no-low-mem 可以关闭低内存占用模式,更充分的释放备份性能。
--no-low-mem
./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1 --no-low-mem
使用 --threads 或者 -t 可以指定备份时的线程数。
--threads
-t
./ohdiff backup --backup /backups/backup1 --src /mnt/sdcard/A1 --threads 4
使用 list 命令可以查看备份的历史版本。
list
./ohdiff list --backup <backup-dir>
demos/visualizer/visualizer <backup-dir> > index.html
安装 bun
bun
curl -fsSL https://bun.sh/install | bash
下载前端依赖
cd /ohdiff/demos/webclient bun install
运行前端
cd /ohdiff/demos/webclient bun run dev
运行后端
/ohdiff/build/demos/webapi/webapi <backup-dir> <source-dir>
前端端口 5173,后端端口 15428。如果在远程服务器上运行后端,需要把端口映射到本地。
参考开发指南。
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
先进、高性能且功能强大的差异备份软件
决赛内容
软件架构
开发环境
需要使用 Docker 容器编译项目。
构建 Docker 镜像
运行 Docker 容器
编译
项目支持 x86-64 native 编译和 aarch64 交叉编译。native 编译方便本地测试;交叉编译用来支持在开发板上运行。
以下编译指令都是在容器内执行。
目标平台
Native 编译
编译结果就存放在当前目录中。
ohdiff
为主可执行文件。交叉编译
编译结果就存放在当前目录中。
ohdiff
为主可执行文件。项目使用静态编译,可执行文件直接复制到板子上就能跑。链接方式
静态链接
项目的默认构建方式。
动态链接
给 cmake
STATIC_BUILD
指定为 OFF。备份
备份
例如:
如果目录发生改变,要进行增量备份,再次调用备份命令即可。例如:
ohdiff 会把备份数据放到
/backups/backup1/*.data
,并生成/backups/backup1/*.index
作为索引。恢复备份
例如恢复最新备份的全部数据:
可以仅恢复部分文件,使用
--pick
选项指定,例如:使用
--layer
选项可以指定特定的历史版本,例如恢复到第 3 次备份的版本:使用
--timepoint
选项可以指定特定的时间点,例如恢复到 2024 年 6 月 29 日 18 点 8 分备份的数据:合并历史备份
使用
--start(-s)
和--end(-e)
选项指定合并的备份版本范围。例如合并第1次到第3次备份:场景特化
压缩模式
使用
--compression <level>
选项可以在备份时进行压缩,减小备份体积。level
表示压缩等级。例如,--compression 2
产生的备份比--compression 1
更小。--compression off
表示不压缩。默认压缩等级为 1。关闭低内存占用
使用
--no-low-mem
可以关闭低内存占用模式,更充分的释放备份性能。指定线程数
使用
--threads
或者-t
可以指定备份时的线程数。备份可视化
List
使用
list
命令可以查看备份的历史版本。Visualizer
WebUI
安装
bun
下载前端依赖
运行前端
运行后端
前端端口 5173,后端端口 15428。如果在远程服务器上运行后端,需要把端口映射到本地。
开发指南
参考开发指南。
团队信息