Duplicati:开源免费的备份解决方案,支持多种操作系统
一、什么是 Duplicati
Duplicati 是一款免费的开源备份工具,支持多种操作系统,包括 Windows、macOS 和 Linux。它的设计目标是提供简单易用的界面,同时具备强大的功能,满足不同用户的备份需求。
Duplicati 采用 MIT 开源许可证发布,这意味着用户可以自由使用、修改和分发该软件,无论是个人还是商业用途均无需支付任何费用。该项目在 GitHub 上活跃开发,拥有庞大的社区支持和持续的功能迭代。
截至 2025 年,Duplicati 已成立商业公司 Duplicati, Inc.,由原开发者 Kenneth Skovhede 担任 CTO,并获得 Open Core Ventures 的投资支持。这标志着 Duplicati 在保持开源核心的同时,也开始提供企业级功能和专业服务,进一步提升了产品的可靠性和长期发展前景。
二、核心设计理念
Duplicati 的架构遵循"零信任"(Trust No One, TNO)安全原则,这是理解其设计哲学的关键:
| 🔐 设计原则 | 📝 具体含义 |
|---|---|
| 客户端加密 | 所有数据在离开本地设备之前就已完成加密,存储提供商无法读取您的数据 |
| 密钥自持(BYOK) | 加密密钥完全由用户掌控,即使 Duplicati 公司也无法解密您的备份 |
| 端到端保护 | 从备份到恢复的全过程,数据始终处于加密状态 |
这种设计意味着:即便您的云存储账户被入侵、ISP 被监控,或者 Duplicati 的服务器遭到攻击,您的备份数据依然是安全的、不可读的。
三、主要功能
3.1 加密备份 🔒
Duplicati 使用 AES-256 加密算法,确保备份数据的安全性。即使备份文件被盗取,也无法轻易解密。
技术细节:
- 加密标准:采用 AES-256 认证加密,这是目前业界公认的最高安全级别对称加密算法
- 文件格式:默认使用开源的 AESCrypt 文件格式,兼容性强,任何支持 AESCrypt 的工具都可以解密
- GPG 支持:除内置加密外,还支持集成 GNU Privacy Guard (GPG),适合已有 GPG 密钥体系的用户
- 密钥管理:加密密码/密钥永远不会离开您的计算机,真正实现本地密钥控制
💡 安全提示:请务必安全保管您的加密密码。
一旦丢失,备份数据将无法恢复——这正是零信任架构的安全保障。3.2 增量备份与块级去重 📦
通过增量备份技术,Duplicati 只备份自上次备份以来发生变化的文件,节省存储空间和备份时间。
Duplicati 采用先进的块级(Block-Level)去重技术,这是其核心技术优势之一:
工作原理:
原始文件 → 分割成固定大小块(默认100KB)→ SHA-256 哈希计算 → 去重判断 → 压缩加密 → 上传| 🔧 技术特性 | 📋 说明 |
|---|---|
| 块大小 | 默认 100KB,可根据需求调整 |
| 哈希算法 | SHA-256,确保块的唯一性识别 |
| 跨文件去重 | 不同文件中的相同内容块只存储一次 |
| 跨版本去重 | 同一文件的不同版本共享未变化的块 |
实际效益:
- ✅ 文件重命名或移动后,备份几乎不产生新数据
- ✅ 大文件的小改动只上传变化的块
- ✅ 多个相似文件自动去重
- ✅ 避免传统"全量备份 + 增量备份"的复杂循环
3.3 多种存储支持 ☁️
支持多种存储后端,包括本地存储、FTP、SFTP、WebDAV 以及云存储服务(如 Amazon S3、Google Drive、OneDrive 等)。
Duplicati 支持的完整存储后端列表(2025年更新):
| 类别 | 支持的服务 |
|---|---|
| 标准协议 | FTP、SFTP (SSH)、WebDAV |
| 对象存储 | Amazon S3、Backblaze B2、IDrive e2、Wasabi、MinIO |
| 云存储 | Google Drive、Google Cloud Storage、Microsoft OneDrive、Dropbox、Box、MEGA |
| 企业级 | Microsoft Azure Blob Storage、Rackspace Cloud Files、OpenStack Swift |
| 去中心化 | Storj DCS(原 Tardigrade) |
| 区域服务 | 腾讯云 COS、阿里云 OSS |
| 本地/网络 | 本地文件夹、网络共享(SMB/CIFS)、USB 驱动器 |
⚠️ 注意事项:
- Sia 后端已移除:由于 Sia 网络进行了不兼容的硬分叉
- MEGA 后端标记为未维护:由于缺乏支持的库,建议迁移到其他存储
3.4 压缩功能 📁
备份文件可以进行压缩,进一步减少存储空间的占用。
Duplicati 在块级处理后对数据进行压缩,支持多种压缩算法:
- ZIP:默认压缩格式,兼容性最好
- 7z (LZMA2):更高压缩率,适合存储空间敏感场景
- 无压缩:适合已压缩文件(如视频、图片)为主的备份
压缩与加密的处理顺序:
原始数据 → 块分割 → 去重 → 压缩 → 加密 → 打包成卷 → 上传3.5 计划任务 ⏰
用户可以设置定时备份任务,确保数据定期备份,不遗漏任何重要信息。
Duplicati 提供灵活的调度选项:
- 📅 固定周期:每小时、每天、每周、每月
- 🎯 自定义 Cron 表达式:满足复杂调度需求
- 🔄 智能重试:错过的备份会在下次可能时自动运行
- 📊 带宽限制:可设置上传/下载速度限制,避免影响正常网络使用
3.6 远程文件锁定(2025年新功能)🆕
Duplicati 新增了远程文件锁定功能,为备份数据提供额外的保护层:
| 特性 | 说明 |
|---|---|
| 功能 | 备份完成后锁定远程存储上的必要文件,防止被删除或覆盖 |
| 配置 | 使用高级选项 --remote-file-lock-duration 设置锁定时长(如 30D 表示30天) |
| 支持后端 | Amazon S3、Azure Blob Storage、Backblaze B2、iDrive e2 |
| 应用场景 | 防勒索软件攻击、满足合规性要求、防止误删除 |
3.7 企业级管理功能(Duplicati Portal)🏢
2024年推出的 Duplicati Portal 云服务,为企业用户和 MSP(托管服务提供商)提供集中管理能力:
- 🖥️ 统一仪表板:在一处查看所有客户端机器的实时备份状态
- 📋 策略模板:创建备份策略后可推送到多个客户端
- 🏗️ 多组织支持:在一个订阅下管理多个隔离的子组织
- 🤖 后台代理:部署不可在主机上访问的后台代理,提高安全性
四、使用场景
4.1 个人用户 👤
适用于个人电脑的数据备份,如照片、文档、音乐等。
典型应用:
- 💾 重要文档和工作文件的定期云备份
- 📸 照片和视频的长期归档(配合 Backblaze B2 等低成本存储)
- 🔐 敏感个人数据的加密本地备份
- 💻 多台电脑之间的数据同步备份
4.2 小型企业 🏪
适用于小型企业的服务器和工作站备份,确保业务数据的安全。
典型应用:
- 📊 财务数据和客户资料的合规备份
- 🖥️ 员工工作站的自动化备份
- 🌐 小型服务器的异地容灾
- 📁 共享文件服务器的版本化备份
4.3 开发者和 IT 专业人员 👨💻
适用于需要频繁备份和恢复数据的开发环境和测试环境。
典型应用:
- 🗄️ 数据库的定期快照备份
- ⚙️ 配置文件和脚本的版本化存储
- 🐳 Docker 容器和卷数据的备份
- 🔄 CI/CD 环境的状态保存
4.4 家庭 NAS 用户 🏠
Duplicati 在家庭 NAS 环境中表现出色:
- 📦 Synology/QNAP 支持:通过 Docker 容器轻松部署
- 🔗 多设备集中备份:家庭成员的设备可统一备份到 NAS
- ☁️ NAS 到云的二级备份:实现 3-2-1 备份策略
- 💪 低资源占用:适合运行在 ARM 架构的入门级 NAS 上
五、安装与配置
5.1 下载与安装
从 Duplicati 官方网站 下载适用于您操作系统的安装包,并按照提示完成安装。
各平台安装方式:
| 平台 | 安装方式 |
|---|---|
| Windows | 下载 MSI 安装包,双击运行向导安装 |
| macOS | 下载 DMG 文件,拖拽到应用程序文件夹 |
| Linux (Debian/Ubuntu) | sudo apt install duplicati 或下载 .deb 包 |
| Linux (RHEL/CentOS) | 下载 .rpm 包安装 |
| Docker | 使用官方或 LinuxServer.io 镜像 |
5.2 Docker 部署(推荐用于服务器环境)🐳
使用 Docker Compose 部署 Duplicati:
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
container_name: duplicati
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- DUPLICATI__WEBSERVICE_PASSWORD=your_secure_password
volumes:
- ./config:/config # 配置文件存储
- ./backups:/backups # 本地备份目标
- /path/to/source:/source # 要备份的源数据
ports:
- 8200:8200
restart: unless-stopped关键配置说明:
| 环境变量 | 说明 |
|---|---|
PUID/PGID | 容器运行用户的 UID/GID,确保文件权限正确 |
TZ | 时区设置,影响备份调度时间 |
DUPLICATI__WEBSERVICE_PASSWORD | Web 界面登录密码 |
⚠️ Docker 部署注意事项:
- 需要备份的目录必须挂载到容器内
- 配置数据存储在
/config(LinuxServer 镜像)或/data(官方镜像) - 首次启动时会生成 JWT 签名密钥和随机密码,建议通过环境变量预设密码
5.3 初始配置
启动 Duplicati 后,按照向导设置备份任务,包括选择备份源、目标存储、加密方式等。
配置向导步骤:
1️⃣ 通用设置
- 为备份任务命名
- 设置加密密码(强烈建议启用)
- 选择加密算法(推荐 AES-256)
2️⃣ 选择备份目标
- 选择存储类型(本地/云存储/协议)
- 输入连接凭据
- 测试连接
3️⃣ 选择源数据
- 添加要备份的文件夹
- 设置排除规则(如临时文件、缓存)
- 使用过滤器精确控制
4️⃣ 调度设置
- 设置自动备份时间
- 配置保留策略
5️⃣ 高级选项
- 带宽限制
- 压缩级别
- 卷大小设置
5.4 定时备份
设置备份计划,确保数据定期备份。
保留策略配置示例:
智能保留策略:
- 保留最近 7 天的每日备份
- 保留最近 4 周的每周备份
- 保留最近 12 个月的每月备份
- 永久保留每年备份六、命令行与自动化
Duplicati 提供完整的命令行接口(CLI),适合自动化和脚本集成:
6.1 基本命令格式
# Linux/macOS
duplicati-cli <command> [storage-URL] [arguments] [advanced-options]
# Windows
Duplicati.CommandLine.exe <command> [storage-URL] [arguments] [advanced-options]6.2 常用命令
| 命令 | 功能 |
|---|---|
backup | 执行备份操作 |
restore | 恢复文件 |
list | 列出备份版本 |
find | 搜索备份中的文件 |
compare | 比较不同版本差异 |
delete | 删除旧备份版本 |
repair | 修复本地数据库 |
test | 验证备份完整性 |
compact | 压缩远程存储 |
vacuum | 清理本地数据库 |
6.3 脚本钩子
Duplicati 支持在备份操作前后执行自定义脚本:
--run-script-before=/path/to/pre-backup.sh # 备份前执行
--run-script-after=/path/to/post-backup.sh # 备份后执行
--run-script-timeout=120s # 脚本超时时间脚本中可访问的环境变量(前缀 DUPLICATI__):
DUPLICATI__OPERATIONNAME- 当前操作类型DUPLICATI__REMOTEURL- 远程存储 URLDUPLICATI__backup_name- 备份任务名称- 脚本可通过 stdout 输出修改 Duplicati 选项
6.4 从 GUI 导出命令行
💡 实用技巧: 您可以在图形界面中配置好备份任务(不启用调度),然后导出为命令行格式,方便集成到自己的任务调度系统(如 cron、Windows Task Scheduler)。
七、灾难恢复
数据恢复是备份的最终目的,Duplicati 提供多种恢复方案:
7.1 恢复所需条件
| 必需项 | 说明 |
|---|---|
| ✅ 远程存储访问信息 | 协议、地址、凭据 |
| ✅ 加密密码 | 如果启用了加密(强烈建议记录并安全保管) |
| ✅ 恢复环境 | 安装了 Duplicati 的计算机 |
| ✅ 足够的存储空间 | 用于存放恢复的文件 |
7.2 恢复方式
方式一:从配置恢复(推荐)
如果您之前导出并保存了备份配置文件,可以:
- 导入配置文件
- 重建本地数据库
- 浏览并选择要恢复的文件/版本
方式二:直接从远程存储恢复
即使没有配置文件,只要有存储访问信息和加密密码:
- 在 Duplicati 中选择"直接从备份恢复"
- 输入存储位置和凭据
- Duplicati 会下载必要的索引文件构建临时数据库
- 选择并恢复所需文件
方式三:使用恢复工具
Duplicati Recovery Tool 提供更细粒度的控制:
- 下载所有远程文件到本地
- 解密文件
- 逐步重建数据
7.3 灾难恢复最佳实践
📋 灾难恢复检查清单:
□ 定期导出并安全存储备份配置
□ 加密密码存储在独立于备份的安全位置(如密码管理器)
□ 定期进行恢复测试(至少每季度一次)
□ 验证备份完整性(使用 test 命令)
□ 记录所有存储位置的访问凭据
□ 制定并文档化恢复流程八、与其他备份工具的对比
了解 Duplicati 的定位有助于做出正确的工具选择:
| 特性 | Duplicati | Restic | BorgBackup | Kopia | Duplicacy |
|---|---|---|---|---|---|
| 开源 | ✅ MIT | ✅ BSD | ✅ BSD | ✅ Apache | ⚠️ CLI免费 |
| 去重方式 | 固定块 | 可变块 | 可变块 | 可变块 | Lock-free |
| Web GUI | ✅ 内置 | ❌ | ❌ | ✅ 内置 | ✅ 付费 |
| 多客户端同存储 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 云存储支持 | 🌟 丰富 | 良好 | 有限 | 良好 | 良好 |
| 学习曲线 | 低 | 中 | 中 | 中 | 中 |
| Windows 支持 | 🌟 优秀 | 良好 | 一般 | 良好 | 良好 |
Duplicati 的独特优势:
- 📊 最友好的图形界面,适合非技术用户
- ☁️ 最广泛的云存储支持
- 🪟 最佳的 Windows 平台体验
- 🆓 完全免费且开源
Duplicati 的局限:
- 不支持多客户端备份到同一存储位置的去重
- 固定块大小在某些场景下去重效率略低
- 大规模数据集时数据库可能变大
九、总结与建议
Duplicati 是一款功能强大且灵活的备份工具,适用于各种备份需求。通过其强大的加密和压缩功能,用户可以放心地备份重要数据,并在需要时轻松恢复。
🎯 推荐使用场景:
- ✅ 个人用户和小型企业的日常备份
- ✅ 需要友好图形界面的用户
- ✅ 备份目标为云存储的场景
- ✅ Windows 用户的首选开源方案
- ✅ 需要 AES-256 加密保护的敏感数据备份
⚠️ 可能需要考虑其他工具的场景:
- 超大规模数据集(TB 级别以上)
- 需要多台机器备份到同一存储并共享去重
- 纯命令行环境且追求极简
📚 学习资源: