最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Docker Bind Mount 备份策略如何做
时间:2026-09-04 09:46:49 编辑:袖梨 来源:一聚教程网
绑定挂载备份本质是直接备份宿主机真实目录,需确认路径有效、权限一致、服务停写;用tar做带时间戳压缩快照,rsync实现增量与远程同步;恢复时注意UID/GID匹配和--same-owner保留归属。
绑定挂载(Bind Mount)的备份本质是备份宿主机上的真实目录,不经过 Docker 卷管理层,所以方法直接、可控,但需特别注意路径有效性、权限一致性和服务停写时机。
确认挂载源路径并检查读写状态
先明确容器启动时用的宿主机路径,例如 -v /data/app/uploads:/app/uploads,那真实数据就在 /data/app/uploads。执行以下命令验证:
-
ls -ld /data/app/uploads确认目录存在且权限可读 -
find /data/app/uploads -maxdepth 0 -type d -perm /o=w 2>/dev/null检查是否被其他进程写入中(避免备份时文件被修改) - 若为数据库或日志类服务,建议临时停写或进入只读模式再备份
使用 tar 做全量快照备份
这是最常用也最稳妥的方式,适合中小规模数据。推荐加时间戳和压缩:
tar --exclude='./tmp' --exclude='./cache' -czf /backup/uploads_$(date +%Y%m%d_%H%M).tar.gz -C /data/app uploads-
--exclude可跳过临时目录,减小体积并提升一致性 - 备份目标路径
/backup/应独立于源目录所在磁盘,防止单盘故障导致双失
用 rsync 实现增量与远程同步
当数据量大或需频繁备份时,rsync 更高效,支持断点续传和异地容灾:
- 本地增量:
rsync -av --delete --exclude='tmp/' /data/app/uploads/ /backup/uploads/ - 推送到远程服务器:
rsync -avz --delete /data/app/uploads/ user@backup-server:/backup/app/ - 加
--delete保证目标与源严格一致;首次运行前建议加--dry-run预览
权限与恢复注意事项
备份还原后若容器无法读写,大概率是用户 UID/GID 不匹配:
- 备份前记录原目录属主:
ls -ld /data/app/uploads,如显示drwxr-xr-x 3 1001:1001 - 恢复时用
tar -xzf backup.tar.gz -C /data/app --same-owner保留归属 - 若容器以非 root 用户运行(如 UID 1001),宿主机对应目录也应归属该 UID,避免权限拒绝