部署教程
Duplicati 部署教程:加密备份、远端存储与文件恢复
使用 Docker 部署 Duplicati,设置备份范围、加密口令和远端目标,恢复旧版本文件。
Duplicati 适合备份什么
网站附件、配置和数据库导出文件,可以交给 Duplicati 定时备份到 SFTP 或对象存储,并保留多个时间点。正在写入的数据库先用数据库工具导出,再备份导出文件。
注册推荐码:KuZhuJi
准备目录和登录密码
本篇使用 LinuxServer 镜像。先用 id 查看宿主用户的 UID、GID,下面 Compose 的 PUID、PGID 示例为 1000,需要按实际用户修改。
mkdir -p ~/services/duplicati
cd ~/services/duplicati
mkdir -p config restore-test
chmod 700 config restore-test
id
umask 077
printf 'SETTINGS_ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" > .env
printf 'DUPLICATI__WEBSERVICE_PASSWORD=%s\n' "$(openssl rand -hex 24)" >> .env
chmod 600 .env后台密码用于登录管理界面;SETTINGS_ENCRYPTION_KEY 用于加密本地敏感设置;备份任务的加密口令用于解密远端备份。三者分别保存,备份口令与存储凭据另外留在服务器之外。
启动容器并访问后台
先建立 /srv/backup-source,并让指定 UID 能读取;把需要备份的附件与数据库导出放到这个目录。保存 compose.yaml:
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
env_file:
- .env
environment:
PUID: "1000"
PGID: "1000"
TZ: Asia/Shanghai
ports:
- "127.0.0.1:8200:8200"
volumes:
- ./config:/config
- /srv/backup-source:/source:ro
- ./restore-test:/restore-test
restart: unless-stopped后台看到的来源路径是 /source,恢复目录是 /restore-test。来源只读挂载,恢复文件写入独立目录。
docker compose config --quiet
docker compose up -d
docker compose logs --tail=80 duplicatissh -L 18200:127.0.0.1:8200 user@your-server在本机打开 http://127.0.0.1:18200,使用 .env 中的后台密码登录。8200 只绑定服务器回环地址,不需要开放公网端口。
添加远端备份任务
新建备份任务,填写名称、独立加密口令和远端存储。SFTP、S3 兼容存储分别按表单设置地址与访问凭据,点击连接测试后选择 /source 中的目录。
先运行一份小范围备份,查看结果中的未读文件、权限错误和上传失败。数据库导出先写临时文件,成功后再改成正式文件;备份计划安排在导出完成之后。
同一个远端目录由一套 Duplicati 任务维护。迁移时先停掉旧实例的计划任务,再由新实例接管。保留每日、每周和每月历史时,按文件变化量与目标容量调整。
恢复一个旧版本文件
备份一个内容明确的文本文件,修改后再次备份。进入恢复页面,选第一个时间点,将文件恢复到 /restore-test,再检查内容。
find restore-test -maxdepth 3 -type f
sha256sum restore-test/example.txtexample.txt 换成实际文件名;先用 find 找到恢复后的层级。再恢复图片和数据库导出,数据库导入到独立实例检查。原实例丢失时,可以凭远端目标、凭据和加密口令,从远端重建恢复信息。
保存配置与迁移任务
本地 config 保存任务设置与数据库。停止容器后归档 config、.env 与 Compose 文件:
docker compose stop duplicati
mkdir -p local-config-backups
tar -czf "local-config-backups/duplicati-config-$(date +%F-%H%M%S).tar.gz" config .env compose.yaml
docker compose start duplicati将归档转移到服务器之外并限制访问。重建时沿用原 config 和设置加密密钥;升级前保存镜像版本及配置,更新后检查下一次计划任务的运行结果。
