一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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。执行以下命令验证:

  1. ls -ld /data/app/uploads 确认目录存在且权限可读
  2. find /data/app/uploads -maxdepth 0 -type d -perm /o=w 2>/dev/null 检查是否被其他进程写入中(避免备份时文件被修改)
  3. 若为数据库或日志类服务,建议临时停写或进入只读模式再备份

使用 tar 做全量快照备份

这是最常用也最稳妥的方式,适合中小规模数据。推荐加时间戳和压缩:

  1. tar --exclude='./tmp' --exclude='./cache' -czf /backup/uploads_$(date +%Y%m%d_%H%M).tar.gz -C /data/app uploads
  2. --exclude 可跳过临时目录,减小体积并提升一致性
  3. 备份目标路径 /backup/ 应独立于源目录所在磁盘,防止单盘故障导致双失

用 rsync 实现增量与远程同步

当数据量大或需频繁备份时,rsync 更高效,支持断点续传和异地容灾:

  1. 本地增量: rsync -av --delete --exclude='tmp/' /data/app/uploads/ /backup/uploads/
  2. 推送到远程服务器:rsync -avz --delete /data/app/uploads/ user@backup-server:/backup/app/
  3. --delete 保证目标与源严格一致;首次运行前建议加 --dry-run 预览

权限与恢复注意事项

备份还原后若容器无法读写,大概率是用户 UID/GID 不匹配:

  1. 备份前记录原目录属主:ls -ld /data/app/uploads,如显示 drwxr-xr-x 3 1001:1001
  2. 恢复时用 tar -xzf backup.tar.gz -C /data/app --same-owner 保留归属
  3. 若容器以非 root 用户运行(如 UID 1001),宿主机对应目录也应归属该 UID,避免权限拒绝

热门栏目