Podman容器持久化数据备份最佳实践:Vaultwarden与Duplicati配置
备份Vaultwarden容器数据:Duplicati卷访问方案与最佳实践
两种方案对比
1. 同Pod共享卷
- 优势:两个容器直接共享Pod内的卷,无需重复配置主机路径,配置相对集中。
- 劣势:Pod内容器生命周期绑定,Vaultwarden重启会连带Duplicati重启;若备份为定时任务,Duplicati长期驻留Pod存在冗余;单独调整Duplicati的配置或版本会影响Vaultwarden的运行。
2. 独立容器重复映射主机卷
- 优势:两个容器完全独立,各自管理生命周期,Duplicati可按需启动(比如定时任务模式)或长期运行,调整备份策略无需改动Vaultwarden的配置。
- 劣势:需确保两个容器的主机卷映射路径完全一致,且要匹配运行权限(比如两者的UID/GID要兼容,避免出现文件访问权限报错)。
最佳实践:独立容器 + 重复映射主机卷
这是生产环境中更实用的方案,理由如下:
- 解耦管理:Vaultwarden是密码服务,Duplicati是备份服务,分属不同功能域,独立管理更灵活。比如你可以单独升级Duplicati版本,或修改备份调度规则,完全不影响Vaultwarden的正常运行。
- 权限匹配:确保两个容器的运行用户对主机卷有读写权限。比如Vaultwarden默认用UID 1000运行,Duplicati容器也可以指定
--user 1000来对齐权限,避免备份时出现权限不足的问题。 - Quadlet配置示例:
Vaultwarden的Quadlet文件(vaultwarden.container):
Duplicati的Quadlet文件([Container] Name=vaultwarden Image=vaultwarden/server:latest Volume=/host/path/vaultwarden-data:/data User=1000:1000duplicati.container):
把Vaultwarden的主机卷映射到Duplicati的[Container] Name=duplicati Image=linuxserver/duplicati:latest Volume=/host/path/vaultwarden-data:/source/vaultwarden Volume=/host/path/duplicati-config:/config User=1000:1000 Environment=DUPLICATI__WEB__LISTEN_ADDRESS=0.0.0.0:8200/source/vaultwarden路径,方便在Duplicati后台选择备份源。 - 备份关键注意事项:
- SQLite文件在写入状态下直接备份容易损坏,建议先给Vaultwarden发送
SIGUSR1信号生成数据库快照:
等待3-5秒后再执行备份,此时Duplicati备份的是快照文件(podman exec vaultwarden kill -SIGUSR1 1/data/db.sqlite3.tmp),能保证数据完整性。 - 可以给Duplicati配置定时任务,自动执行“触发快照+备份”的流程。
- SQLite文件在写入状态下直接备份容易损坏,建议先给Vaultwarden发送
内容的提问来源于stack exchange,提问作者Chumpy
相关产品推荐
相关产品推荐

