如何备份Ubuntu Overlay数据
小樊
34
2025-12-23 23:59:40
Ubuntu Overlay 数据备份指南
先判断你的场景
- 系统级 OverlayFS 挂载:如将 OverlayFS 挂载到 /mnt/overlay 用于分层读写,备份时应直接针对该挂载点进行归档或同步。
- Docker 容器层:Docker 使用 overlay2 存储驱动,容器可写层位于 /var/lib/docker/overlay2//diff。直接打包该目录可备份容器内“新增/修改”的数据,但需先停容器,并注意容器重启后 可能变化。
- 仅想备份容器内业务数据:更稳妥的做法是进入容器,将业务数据目录(如 /var/lib/your-app)用 tar/rsync 备份,或使用卷(Volume)挂载到宿主机后备份宿主机上的卷目录。
- 原则:OverlayFS 是联合视图,真正需要备份的是“可写层”和“业务数据”,而不是只读的 lower 层。
备份方法
- 使用 tar 归档(适合一次性快照)
- 系统级挂载点示例:
sudo tar -czvf /backup/overlay.tar.gz -C /mnt/overlay .
- Docker 可写层示例(先停容器):
sudo tar -czvf /backup/container_layer.tar.gz -C /var/lib/docker/overlay2//diff .
- 恢复:
sudo tar -xzvf /backup/overlay.tar.gz -C /mnt/overlay
- 使用 rsync 同步(适合增量/定期备份)
- 系统级挂载点示例:
sudo rsync -aAX --delete /mnt/overlay/ /backup/overlay/
- Docker 可写层示例(先停容器):
sudo rsync -aAX --delete /var/lib/docker/overlay2//diff/ /backup/container_layer/
- 恢复:
sudo rsync -aAX --delete /backup/container_layer/ /var/lib/docker/overlay2//diff/
- 使用 dd 镜像(仅整盘/分区级,不推荐用于 Overlay 层)
- 示例:
sudo dd if=/dev/sdX of=/backup/disk.img bs=4M status=progress
说明:dd 适合块设备/分区备份,不适合直接备份某个 Overlay 目录。
恢复与验证
- 系统级 OverlayFS
- 恢复命令:
sudo tar -xzvf /backup/overlay.tar.gz -C /mnt/overlay
或
sudo rsync -aAX /backup/overlay/ /mnt/overlay/
- 若需重建挂载:
sudo mount -t overlay overlay
-o lowerdir=/path/to/lower,upperdir=/path/to/upper,workdir=/path/to/work
/mnt/overlay
- Docker 可写层
- 建议流程:停容器 → 备份/恢复 diff → 启动容器。
- 注意:容器重启后 可能变化,恢复前请确认目标层或改用卷/绑定挂载备份业务数据。
- 完整性校验
- 列出并核对备份文件:ls -lh /backup/
- 校验归档:tar -tzvf /backup/overlay.tar.gz | head
- 可选:对关键数据做哈希校验(如 sha256sum)。
注意事项与最佳实践
- 备份“可写层”而非只读层:OverlayFS 的 lowerdir 多为只读基础层,变化集中在 upperdir;直接备份挂载点或 Docker 的 diff 目录即可。
- 一致性与可用性:执行备份前尽量将应用置于静默/停止状态,避免热备份导致的数据不一致。
- 排除无关目录:用 rsync 排除 /dev、/proc、/sys、/tmp、/run、/mnt、/media、/lost+found 等虚拟或临时文件系统路径。
- 保留权限与属性:使用 tar/rsync 的归档属性选项(如 -p/-a/-A/-X),确保 uid/gid、权限、扩展属性 正确还原。
- 定期演练恢复:定期做恢复演练与校验,确保备份可用;对敏感数据启用加密与异地存放。