在 CentOS 中,overlay(通常指 OverlayFS,或 Docker 使用的 overlay/overlay2 存储驱动)的“备份”方式,取决于你指的是哪一种 overlay 场景。下面按常见情况说明。
Docker 默认在 CentOS 上使用 overlay2 存储驱动,数据一般在:
/var/lib/docker/overlay2
不要直接 cp overlay2 目录,而应:
# 导出镜像
docker save -o images.tar $(docker images -q)
# 导出容器
docker export -o container.tar <container_id>
或对所有容器:
for c in $(docker ps -aq); do
docker export -o $c.tar $c
done
docker run --rm -v <volume_name>:/data -v /backup:/backup busybox \
tar cvf /backup/volume.tar /data
systemctl stop docker
tar czvf docker-backup.tar.gz /var/lib/docker
systemctl start docker
⚠️ 必须在 Docker 停止时做,否则数据不一致。
例如你手动挂载了:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
你只需要备份:
tar czvf overlay-backup.tar.gz /upper /work
或者直接备份 /merged(最终视图):
rsync -a /merged/ /backup/merged/
⚠️ 不建议在挂载状态下直接 tar upperdir,最好先 umount。
这类系统通常是只读底 + 可写层:
/ (overlay)
├── lowerdir=/mnt/sysroot
├── upperdir=/var/lib/overlay
# 查看 overlay 挂载
mount | grep overlay
# 备份 upperdir
tar czvf overlay-upper.tar.gz /var/lib/overlay
cp -r /var/lib/docker/overlay2| 场景 | 推荐备份 |
|---|---|
| Docker | docker save + volume 备份 |
| 手动 overlay | 备份 upperdir |
| 系统 overlay | 备份 upperdir |
如果你能告诉我:
我可以给你精确的一条命令备份方案。