跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

怎么在Linux系统下利用Rsync增量备份Docker数据卷

可行,需先通过docker volume inspect确认卷路径并停止容器以保证数据一致,再用rsync -avh --delete --one-file-system等参数增量备份,建议按时间戳保留多版本并定期校验恢复。 用 rsync 增量备份 Docker 数据卷是可行的,但需注意:Docker 卷本身是宿主机上的目录(通常在
/var/lib/docker/volumes/
下),只要容器未运行或数据已同步落盘,就能安全地用 rsync 备份其底层目录。 确认数据卷实际路径并停止相关容器 Docker 卷不是黑盒,它对应宿主机的一个真实路径。先查清位置,再确保数据一致: 运行
docker volume inspect
,看
Mountpoint
字段,例如
/var/lib/docker/volumes/myapp_data/_data
停止使用该卷的容器:
docker stop myapp
(避免写入中备份导致不一致) 如无法停机,可临时暂停写入(如应用层切只读)或使用
--one-file-system
+
--inplace
配合短时停写窗口 用 rsync 执行带增量特性的备份 rsync 默认就是增量同步(只传变化的块),关键在参数组合保障可靠性与效率: 基础命令示例:
rsync -avh --delete --one-file-system /var/lib/docker/volumes/myapp_data/_data/ /backup/volumes/myapp_data/
-a :归档模式(保留权限、时间戳、软硬链等) -v :显示过程(调试用,生产可去) -h :人类可读大小 --delete :删除目标端存在但源端已删的文件(保持镜像一致) --one-file-system :不跨挂载点,防止误入 /proc 或其他分区 --exclude='**/tmp/**' --exclude='**/cache/**' :跳过临时/缓存目录(按需加) 加入时间戳与保留多版本(可选但推荐) 单纯覆盖备份有风险,建议按日期分目录保存多个快照: CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 用日期命名备份目录:
DEST="/backup/volumes/myapp_data_$(date +\%Y\%m\%d_\%H\%M)"
rsync -a --delete /var/lib/docker/volumes/myapp_data/_data/ "$DEST/"
配合
find /backup/volumes/ -name "myapp_data_*" -mtime +7 -delete
定期清理 7 天前的备份 或用 hardlink 方式节省空间(如用
rsync --link-dest
或封装工具 like
rsnapshot
) 自动化与校验(上线前必做) 脚本化后务必验证备份可用性: 写成 shell 脚本(如
backup-volume.sh
),加入
set -e
和日志记录 每次备份后运行简单校验:
diff -r /var/lib/docker/volumes/myapp_data/_data /backup/volumes/myapp_data/ | head -20
(抽样比对) 定期执行恢复测试:挑一个备份目录,复制到测试环境挂载为新卷,启动容器验证服务是否正常 把脚本加入 crontab(如每天凌晨 2 点):
0 2 * * * /path/to/backup-volume.sh >> /var/log/volume-backup.log 2>&1
不复杂但容易忽略:Docker 卷备份本质是备份普通目录,核心在于时机控制和路径准确。只要容器停写、路径找对、rsync 参数合理,增量备份就非常稳定高效。

相关文章