Duplicati 是开源备份工具,跑起来是个本地服务加一个网页界面。选源目录,选目标,设个口令,它就按增量方式把文件加密压缩后存到你指定的位置。目标可以是本地文件夹,也可以是 S3、WebDAV 这类远端。
一个 exe 起服务,界面在浏览器里
它没有传统安装向导,解压后双击 Duplicati.Server.exe 就在这台机器上起一个网页服务,端口 8200。自带 .NET 运行时,机器上不用另装框架。
Windows 包 duplicati-2.4.0.1_stable_2026-10-07-win-x64-gui.zip 107,725,131 字节(102.7 MB)
解压后目录 253 MB(含 .NET 运行时)
服务进程到端口可连 4.02 秒
默认端口 8200,只监听 127.0.0.1
包内 bat 首次启动(含建数据目录) 5.5 秒
包内带了启动 bat,双击后它起服务、等端口,然后开浏览器。第一次打开落在登录页。页面只有一个密码框。
数据目录权限这一关,第一次启动就会拦你
2.4 版加了数据目录权限校验:如果数据目录是从父目录继承来的权限,它会直接拒绝启动,控制台抛异常退出。
报错类型 UserInformationException
原因 The data folder does not have secure permissions
处置一 ConfigureTool secure-datafolder --datafolder <目录> --apply
处置二 启动参数 --allow-insecure-datafolder
第一条在这个环境里报 Failed to set permissions: Attempted to perform an unauthorized operation,因为进程没有修改 ACL 的权限。第二条直接放行,可用。所以包里那个 bat 默认带了这个参数,否则用户解压后双击就是一片报错。
顺带一个细节:登录口令可以在启动时用 --webservice-password= 预设,实测生效。不预设的话,首次启动它会随机生成一串口令,只打在控制台窗口里,最小化窗口的用户基本找不到。
第一次全量:77 个文件 1.11 秒
用它自带的命令行跑备份,参数是目标 URL、源目录和口令。目标写成 file:/// 开头的本地路径。
源目录 77 个文件,10,640,544 字节(10.15 MB)
备份耗时 Duration of backup: 00:00:01.1112470
Files added 77
产物 duplicati-20261021T204805Z.dlist.zip.aes 7,021 字节
duplicati-b23482b52...dblock.zip.aes 10,550,173 字节
duplicati-i958224a5...dindex.zip.aes 6,509 字节
备份目录合计 10,563,703 字节(10.07 MB)
本地数据库 253,952 字节
10.15 MB 进、10.07 MB 出,几乎没压缩。原因是测试数据里有 10 个 1 MB 的随机二进制文件,这类内容本来就压不动。换成文档和日志,压缩率会明显不同,这一项没有单独测。
恢复这一步最值得看,77 个文件哈希全对
备份能不能用,得看恢复。恢复命令指向同一个备份目录,指定恢复到哪个空目录,然后逐文件比对 SHA256。
恢复请求 77 files need to be restored (10.15 MiB)
耗时 Duration of restore: 00:00:01(整体 2.77 秒)
结果 Restored 77 (10.15 MiB) files to D:/.../restore
逐文件校验 77 / 77 SHA256 完全一致,0 个不一致
这一步没有任何差异,说明加密分卷、索引和还原链路是通的。备份文件在磁盘上是 .zip.aes 分卷,分 dlist / dblock / dindex 三类,不能当普通 zip 解开,必须用 Duplicati 恢复。这也意味着口令丢了没有找回通道。
增量只加 10 KB
改一个已有文件、再加一个新文件,再跑一次备份,看它认不认得出变化。
第二次耗时 Duration of backup: 00:00:00.8021657
Files added 1
Files changed 1
备份目录新增 10,103 字节
备份目录合计 10,573,806 字节,6 个文件
改动量 10 KB 出头,等于只存了那两个文件的新块加上一份索引与清单。全量那次的 10.07 MB 没有被重写。文件数从 3 个变成 6 个,多出来的是一组新的 dlist / dblock / dindex。
| 轮次 | 动作 | 耗时 | 备份目录体积 |
|---|---|---|---|
| 第一次 | 全量 77 个文件 | 1.11 秒 | 10,563,703 字节 |
| 第二次 | 改 1 个 + 加 1 个 | 0.80 秒 | 10,573,806 字节 |
| 恢复 | 还原 77 个文件 | 1 秒 | 哈希 77/77 一致 |
新版界面在推云控制台,旧界面还能用
2.4 版默认的新界面在 /ngclient/,登录后会先进 Connect to console 引导页,主按钮是「连接 Duplicati 云控制台」。跳过入口是左上角一行小字,点对了才进主界面。
旧界面还留着,地址是 /ngax/index.html,21,979 字节的那套 Angular 页面。左侧菜单是 Home / Add backup / Restore / Settings / About,首页表格的列包括 Destination Type / Last Run / Source size / Destination size / Duration。本文截图用的是这套。
新建备份走 Add backup,第一步二选一:配置新备份,或从文件导入。后面的五步依次是任务名与口令,然后是目标类型与路径,再是源目录,最后是计划与选项。
几个坑,提前说清楚
数据目录权限那一条前面已经写了,包里 bat 带 --allow-insecure-datafolder 就是为它。第二点是命令行备份的 --db 参数:指定的却是 D 盘路径,实际数据库落到了 %LOCALAPPDATA%\Duplicati\ 下一个随机名的 .sqlite,恢复时必须指同一个文件,否则它认不出这次备份的历史。
第三点是界面自动化:五步向导的表单里有隐藏字段,脚本点不进去,最后改用命令行完成备份与恢复。所以本文的界面部分只做展示,真实数据全部来自命令行,这点不遮掩。
没测的部分也列一下:远端目标(S3 / WebDAV / OneDrive)、带宽限速与保留策略,还有 GB 级大文件与百万级文件数。想拿来备份整个硬盘的,这几项得自己先试。











