首页/云/云与容器速查/数据卷备份与迁移(tar 打包)
容器与 Docker106 条

数据卷备份与迁移(tar 打包)

通用做法:用临时容器把卷打包成 tar.gz 存到宿主,跨机器迁移时反向解包。备份用只读挂载、恢复用可写挂载,避免打错方向毁原数据。

云与容器速查云更新于 2026-10-13

数据卷备份与迁移是什么

数据卷备份的通用做法是用临时容器同时挂载数据卷与宿主机目录,在容器内把卷内容打包成归档文件输出到宿主机;跨机器迁移时把归档拷到新机器,建同名卷后反向解包即可。要点是方向不能写反:备份时卷挂只读、宿主目录挂可写;恢复时卷挂可写、归档挂只读。数据库这类应用必须先在应用层停写或停库,否则归档能解开,但恢复时一致性校验会失败。

基本信息

备份方式临时容器同时挂数据卷(只读)与宿主目录(可写),输出归档
恢复方式反向操作:卷挂可写、归档挂只读,解包回卷
跨机迁移把归档传到新机器后建同名卷解包,或直接共享 NFS 卷
一致性要求数据库类卷先停应用或停库;纯文件类可只读挂载后直接打包
权限归档属主取决于执行容器的用户,恢复后需核对属主与权限

典型使用场景

  • 升级前的数据退路:先备份数据卷,再改配置或替换镜像
  • 更换宿主机时搬运数据,避免重新初始化业务数据
  • 环境复制:把生产数据脱敏后拷到测试环境做验证
  • 合规留存:按周期把业务数据打包归档到独立存储
  • 卷被误删或损坏后的恢复手段,也是最后的兜底路径

备份卷

备份卷
docker run --rm \
  -v appdata:/data:ro \
  -v "$PWD":/backup \
  alpine tar czf /backup/appdata-2026.tgz -C /data .

恢复卷

恢复卷
docker volume create appdata
docker run --rm \
  -v appdata:/data \
  -v "$PWD":/backup:ro \
  alpine tar xzf /backup/appdata-2026.tgz -C /data

环节与风险点

环节挂载方式风险点
备份卷只读,宿主目录可写方向写反会改坏源数据
恢复卷可写,归档只读归档挂成可写会被解包内容覆盖
数据库卷先停应用或停库不停写打出的包一致性无法保证
跨机迁移新机器建同名卷再解包卷名不一致导致应用找不到数据
权限恢复后核对属主应用以非 root 运行时可能无权读取
Windows PowerShell 下宿主目录用 ${PWD} 更稳;路径含中文或空格时先切到纯英文短路径再执行,能避开大部分路径解析问题。
备份必须做恢复演练:只备份不验证的团队,往往在真正需要恢复时才发现归档是空的、解不开,或者恢复出来的数据不可用。

易错点

  • 不停库直接打包数据库卷:备份能解包,但恢复时日志校验或页校验失败,数据不可用
  • 恢复时把只读与可写挂载写反:归档被覆盖,或原卷被挂成只读导致解包失败
  • 备份文件与数据放在同一台机器的同一块盘上,磁盘或机器损坏时备份一起丢失
  • 恢复时直接覆盖旧卷不做现场保留,一旦解包出错就无法回退到恢复前状态

数据来源与参考

  • Docker Docs:Volumes(Back up, restore, or migrate data)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌