可行,需先通过docker volume inspect确认卷路径并停止容器以保证数据一致,再用rsync -avh --delete --one-file-system等参数增量备份,建议按时间戳保留多版本并定期校验恢复。
用 rsync 增量备份 Docker 数据卷是可行的,但需注意:Docker 卷本身是宿主机上的目录(通常在
下),只要容器未运行或数据已同步落盘,就能安全地用 rsync 备份其底层目录。
确认数据卷实际路径并停止相关容器
Docker 卷不是黑盒,它对应宿主机的一个真实路径。先查清位置,再确保数据一致:
运行
,看
字段,例如
停止使用该卷的容器:
(避免写入中备份导致不一致)
如无法停机,可临时暂停写入(如应用层切只读)或使用
+
配合短时停写窗口
用 rsync 执行带增量特性的备份
rsync 默认就是增量同步(只传变化的块),关键在参数组合保障可靠性与效率:
基础命令示例:
-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日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
用日期命名备份目录:
配合
定期清理 7 天前的备份
或用 hardlink 方式节省空间(如用
或封装工具 like
)
自动化与校验(上线前必做)
脚本化后务必验证备份可用性:
写成 shell 脚本(如
),加入
和日志记录
每次备份后运行简单校验:
(抽样比对)
定期执行恢复测试:挑一个备份目录,复制到测试环境挂载为新卷,启动容器验证服务是否正常
把脚本加入 crontab(如每天凌晨 2 点):
不复杂但容易忽略:Docker 卷备份本质是备份普通目录,核心在于时机控制和路径准确。只要容器停写、路径找对、rsync 参数合理,增量备份就非常稳定高效。
/var/lib/docker/volumes/docker volume inspect Mountpoint/var/lib/docker/volumes/myapp_data/_datadocker stop myapp--one-file-system--inplacersync -avh --delete --one-file-system /var/lib/docker/volumes/myapp_data/_data/ /backup/volumes/myapp_data/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 -deletersync --link-destrsnapshotbackup-volume.shset -ediff -r /var/lib/docker/volumes/myapp_data/_data /backup/volumes/myapp_data/ | head -200 2 * * * /path/to/backup-volume.sh >> /var/log/volume-backup.log 2>&1