Duplicati:开源免费的备份解决方案,支持多种操作系统

    • #23322

      一、什么是 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 级别以上)
      • 需要多台机器备份到同一存储并共享去重
      • 纯命令行环境且追求极简

      📚 学习资源:

  • 抱歉,回覆主題必需先登入。