Brave
@47c132035ed7a1105a867946b99d67af 开源软件研究 公开
讨论 Duplicati:开源免费的备份解决方案,支持多种操作系统

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_PASSWORDWeb 界面登录密码

⚠️ 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 - 远程存储 URL
  • DUPLICATI__backup_name - 备份任务名称
  • 脚本可通过 stdout 输出修改 Duplicati 选项

6.4 从 GUI 导出命令行

💡 实用技巧: 您可以在图形界面中配置好备份任务(不启用调度),然后导出为命令行格式,方便集成到自己的任务调度系统(如 cron、Windows Task Scheduler)。


七、灾难恢复

数据恢复是备份的最终目的,Duplicati 提供多种恢复方案:

7.1 恢复所需条件

必需项说明
✅ 远程存储访问信息协议、地址、凭据
✅ 加密密码如果启用了加密(强烈建议记录并安全保管)
✅ 恢复环境安装了 Duplicati 的计算机
✅ 足够的存储空间用于存放恢复的文件

7.2 恢复方式

方式一:从配置恢复(推荐)

如果您之前导出并保存了备份配置文件,可以:

  1. 导入配置文件
  2. 重建本地数据库
  3. 浏览并选择要恢复的文件/版本

方式二:直接从远程存储恢复

即使没有配置文件,只要有存储访问信息和加密密码:

  1. 在 Duplicati 中选择"直接从备份恢复"
  2. 输入存储位置和凭据
  3. Duplicati 会下载必要的索引文件构建临时数据库
  4. 选择并恢复所需文件

方式三:使用恢复工具

Duplicati Recovery Tool 提供更细粒度的控制:

  1. 下载所有远程文件到本地
  2. 解密文件
  3. 逐步重建数据

7.3 灾难恢复最佳实践

📋 灾难恢复检查清单:

□ 定期导出并安全存储备份配置
□ 加密密码存储在独立于备份的安全位置(如密码管理器)
□ 定期进行恢复测试(至少每季度一次)
□ 验证备份完整性(使用 test 命令)
□ 记录所有存储位置的访问凭据
□ 制定并文档化恢复流程

八、与其他备份工具的对比

了解 Duplicati 的定位有助于做出正确的工具选择:

特性DuplicatiResticBorgBackupKopiaDuplicacy
开源✅ MIT✅ BSD✅ BSD✅ Apache⚠️ CLI免费
去重方式固定块可变块可变块可变块Lock-free
Web GUI✅ 内置✅ 内置✅ 付费
多客户端同存储
云存储支持🌟 丰富良好有限良好良好
学习曲线
Windows 支持🌟 优秀良好一般良好良好

Duplicati 的独特优势:

  • 📊 最友好的图形界面,适合非技术用户
  • ☁️ 最广泛的云存储支持
  • 🪟 最佳的 Windows 平台体验
  • 🆓 完全免费且开源

Duplicati 的局限:

  • 不支持多客户端备份到同一存储位置的去重
  • 固定块大小在某些场景下去重效率略低
  • 大规模数据集时数据库可能变大

九、总结与建议

Duplicati 是一款功能强大且灵活的备份工具,适用于各种备份需求。通过其强大的加密和压缩功能,用户可以放心地备份重要数据,并在需要时轻松恢复。

🎯 推荐使用场景:

  • ✅ 个人用户和小型企业的日常备份
  • ✅ 需要友好图形界面的用户
  • ✅ 备份目标为云存储的场景
  • ✅ Windows 用户的首选开源方案
  • ✅ 需要 AES-256 加密保护的敏感数据备份

⚠️ 可能需要考虑其他工具的场景:

  • 超大规模数据集(TB 级别以上)
  • 需要多台机器备份到同一存储并共享去重
  • 纯命令行环境且追求极简

📚 学习资源: