在 Ubuntu 中,overlay(通常指 overlayfs,或 Docker 的 overlay/overlay2 存储驱动)的“备份”方式取决于你指的是哪一种场景。下面我按常见情况分别说明。
如果你是用 overlayfs 挂载根文件系统(例如 live CD、只读根 + 可写层),备份的核心是只备份 upperdir(可写层)。
lowerdir=/ro
upperdir=/rw/upper
workdir=/rw/work
merged=/merged
# 只备份可写层
tar -czpf overlay-backup.tar.gz -C /rw/upper .
或:
rsync -aHAX --delete /rw/upper/ /backup/overlay-upper/
⚠️ 注意:
Ubuntu 上 Docker 默认使用 overlay2。
不要直接复制 /var/lib/docker
✅ 正确做法:
docker commit 或 docker savedocker commit mycontainer myimage:backup
docker save myimage:backup -o myimage.tar
或备份 volumes:
docker run --rm -v myvolume:/data -v /backup:/backup busybox \
tar czf /backup/volume.tar.gz -C /data .
如果必须备份整个 Docker 存储:
systemctl stop docker
rsync -aHAX --delete /var/lib/docker/ /backup/docker/
systemctl start docker
⚠️ 风险:
如果是 containerd + overlayfs:
systemctl stop containerd
rsync -aHAX /var/lib/containerd/ /backup/containerd/
rm -rf /rw/upper/*
tar -xzpf overlay-backup.tar.gz -C /rw/upper
| 场景 | 推荐方式 |
|---|---|
| Docker | docker save / volume 备份 |
| overlayfs | 只备份 upperdir |
| 系统级 | 镜像 / 快照(LVM、Btrfs) |
| 生产环境 | 停服 + rsync |
如果你能说明:
我可以给你一套精确备份脚本。