Decentralization? We're still early!

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

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

    發布人 Brave 2024-08-09 14:03

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

    📚 学习资源:

    Brave 回复 11 months ago 1 成員 · 0 回复
  • 0 回复

歡迎留言回复交流。

Log in to reply.

讨论開始
00 回复 2018 年 6 月
現在