部署备份工具duplicati
NAS 数据守护神:用 Duplicati 构建免费的加密异地备份系统
前言:为什么你的 NAS 数据需要一个“异地容灾”方案?
你购买 NAS,是为了安全、集中地存储你最重要的数字资产:家庭照片、工作文档、影音收藏……你可能已经设置了 RAID 阵列来防止硬盘物理损坏。但这足够安全吗?
请思考以下场景:
- 火灾、盗窃或自然灾害:如果你的 NAS 设备本身遭遇物理损毁,RAID 也无能为力。
- 勒索软件攻击:恶意的加密病毒会同时感染你的电脑和 NAS,所有文件都将被锁定。
- 意外删除或逻辑错误:人为的误操作或软件 Bug 可能导致数据丢失。
这就是异地备份至关重要的原因。它遵循着经典的 3-2-1 备份原则:数据至少有 3 份副本,存储在 2 种不同类型的介质上,其中至少有 1 份存放在异地。
而 Duplicati,就是一个免费、开源、强大的工具,能让你的 NAS 轻松实现这一目标。它能将你的数据以加密、压缩、增量的方式,自动备份到几乎任何云存储服务商那里,为你的数据提供终极保护。
这篇博客将带你深入了解 Duplicati 的工作原理,并指导你如何通过 Docker 在 NAS 上轻松部署和配置它。
Duplicati 的核心工作原理
Duplicati 不是简单的“复制-粘贴”。它之所以强大和高效,得益于其精巧的设计:
数据分块与去重 (Deduplication)
- 在开始备份前,Duplicati 会将你的文件切成许多个固定大小的小数据块 (Block)。
- 它会计算每个数据块的哈希值。如果一个数据块(例如,某张照片的一部分)在之前的备份中已经存在,Duplicati 就不会再次上传它,而仅仅是记录一个引用。这对于备份虚拟机镜像、或者包含大量重复内容的文件夹效果极其显著,能极大节省存储空间。
增量备份 (Incremental Backup)
- 首次备份是“完全备份”。在此之后,Duplicati 只会备份那些被修改或新增的文件所对应的新数据块。这使得日常备份速度极快,且占用带宽极低。
AES-256 加密
- 这是 Duplicati 的灵魂功能。所有数据块在离开你的 NAS 之前,都会使用强大的 AES-256 算法进行加密。这意味着,即使你将数据备份到公共云盘(如 Google Drive, OneDrive),云服务商也无法窥探你的文件内容。你的隐私得到了绝对的保障。
压缩与打包
- 加密后的数据块会被压缩,并打包成一个个加密卷文件(通常是
.dblock文件),然后上传到你选择的云端目的地。
- 加密后的数据块会被压缩,并打包成一个个加密卷文件(通常是
Duplicati 的优缺点分析
| 优点 (Pros) | 缺点 (Cons) |
|---|---|
| ✅ 完全免费且开源 | ⚠️ 仍处于 Beta 阶段。虽然功能稳定,但长期未发布正式版,可能存在未知 Bug。 |
| ✅ 强大的加密 | ⚠️ 数据库是弱点。其本地数据库对备份至关重要,若损坏修复起来可能很麻烦。 |
| ✅ 极致的存储效率(去重) | ⚠️ 恢复速度可能较慢。特别是恢复大量小文件时,需要从云端下载多个卷并解密重组。 |
| ✅ 广泛的后端支持(几乎所有云) | ⚠️ 首次备份较慢。需要对所有文件进行分块、哈希、加密和压缩。 |
| ✅ 灵活的调度和保留策略 | |
| ✅ 跨平台,Web UI 管理方便 |
结论:Duplicati 是一个功能强大、值得信赖的免费备份工具,尤其适合注重隐私和存储成本的个人用户。但你需要了解它的“Beta”状态和对本地数据库的依赖性,并做好相应的维护。
实战篇:在 NAS 上通过 Docker 部署 Duplicati
在 NAS 上部署 Duplicati 的最佳方式是使用 Docker,它隔离了运行环境,干净又高效。这里以群晖 DSM 为例,但原理适用于任何支持 Docker 的 NAS。
步骤 1:创建必要的文件夹
通过 File Station 在你的 NAS 上创建以下文件夹:
- Duplicati 配置文件夹:用于存放 Duplicati 的数据库和配置文件。例如:
/volume1/docker/duplicati/config - 备份源数据文件夹:这是你想要备份的数据存放的地方。我们稍后会将其映射到容器中。例如:
/volume1/MyData
步骤 2:使用 Docker Compose 部署 (推荐)
通过 SSH 登录到你的 NAS。创建一个名为 docker-compose.yml 的文件,并填入以下内容。这是管理 Docker 应用的最佳实践。
1 | version: "3.8" |
配置详解:
PUID和PGID:这是运行容器的用户和用户组 ID。为了避免权限问题,你需要将其设置为对源数据文件夹有读取权限的用户的 ID。在 NAS 的 SSH 终端中输入id <你的用户名>即可查到。TZ:设置正确的时区,确保定时备份任务按时执行。volumes:这是最关键的部分。- /volume1/docker/duplicati/config:/config:将配置文件夹挂载到容器内部,实现数据持久化。- /volume1/MyData:/source/mydata:将你想要备份的实际数据文件夹(左侧)映射到容器内的一个路径(右侧)。你可以添加任意多行,来映射不同的源文件夹。
ports:将容器的 8200 端口映射到 NAS 的 8200 端口,以便我们访问 Web UI。
步骤 3:启动容器
在 docker-compose.yml 文件所在的目录,运行以下命令:
1 | docker-compose up -d |
Docker 将会自动下载镜像并根据你的配置启动容器。
步骤 4:配置你的第一个备份任务
- 在浏览器中访问
http://<你的NAS_IP地址>:8200。 - 你会看到 Duplicati 的主界面。选择“Add backup” -> “Configure a new backup”。
- General:给你的备份任务起个名字,例如“NAS 重要文档备份”。选择“AES-256 encryption”,并设置一个极其复杂且你能记住的密码。警告:丢失此密码等于丢失所有备份数据!
- Destination:选择你的云存储提供商。Duplicati 支持的列表非常长,包括 Google Drive, OneDrive, Dropbox, Amazon S3, FTP, WebDAV 等。根据提示完成授权和配置。
- Source Data:在左侧的树状图中,你会看到一个名为
source的文件夹,这正是你在docker-compose.yml中映射进去的。勾选你想要备份的子文件夹(如mydata,photos)。 - Schedule:设置你希望备份任务自动运行的时间,例如“每天凌晨3点”。
- Options:
- Remote volume size:建议设置为
50MB或100MB。这是上传到云端的加密卷的大小,太小会产生过多文件,太大则不利于断点续传。 - Backup retention:设置保留策略,例如“Keep a specific number of backups: 7”,意味着只保留最近7个版本的备份。这可以防止云端空间被无限占用。
- Remote volume size:建议设置为
- 保存配置,并可以手动点击“Run now”开始你的第一次备份。
结语
在 NAS 上部署 Duplicati,就像是为你的数据买了一份高额的“数字保险”。它以几乎零成本的方式,为你提供了企业级的加密和异地备份能力,让你在面对任何灾难时都能泰然处之。
虽然它仍是 Beta 版,但其强大的功能和灵活性,以及活跃的社区支持,使其成为 NAS 用户数据保护方案中不可或缺的一环。现在就动手,为你的宝贵数据加上这把坚不可摧的“安全锁”吧!
