备份与恢复 Debian Overlay 系统
一、先确认你的 Overlay 类型
- 容器场景:如 Docker 使用 Overlay2,可只备份容器镜像/卷与关键配置,不必整机上卷。
- 系统场景:如 initramfs 早期 overlay、自定义 OverlayFS 根分区,需按“整系统”方式备份与恢复。
二、容器场景的备份与恢复(Docker Overlay2)
- 备份镜像与容器
- 列出并保存镜像:docker images -q | xargs docker save > images.tar
- 提交运行中容器为镜像:docker commit <容器ID> my-container-backup
- 保存该镜像:docker save my-container-backup > container-backup.tar
- 备份卷数据
- 查看卷:docker volume ls
- 备份卷到宿主机:docker run --rm -v <卷名>:/data -v $PWD:/backup alpine tar czf /backup/<卷名>.tar.gz -C /data .
- 备份关键配置
- 容器编排:备份 /etc/docker/daemon.json、docker-compose.yml 等
- APT 源与密钥:备份 /etc/apt/ 下相关文件(如 sources.list、sources.list.d、trusted.gpg.d 等)
- 恢复
- 加载镜像:docker load < images.tar;docker load < container-backup.tar
- 启动容器:docker run … 或 docker-compose up -d
- 恢复卷:docker run --rm -v <卷名>:/data -v $PWD:/backup alpine tar xzf /backup/<卷名>.tar.gz -C /data
三、系统场景的备份与恢复(整系统或自定义 OverlayFS)
- 准备与定位
- 查看挂载:mount | grep overlay;确认 lowerdir、upperdir、workdir 与挂载点
- 备份关键配置:/etc/fstab 与 Overlay 相关目录(如 /var/lib/overlay2/upper、/var/lib/overlay2/workdir)
- 方式一 整系统打包(推荐)
- 使用 rsync(更利于增量):
- 首次:sudo rsync -aAXv --exclude={“/dev/“,”/proc/”,“/sys/“,”/tmp/”,“/run/“,”/mnt/”,“/media/*”,“/lost+found”} / /path/to/backup/rootfs
- 增量:sudo rsync -aAXv --delete / /path/to/backup/rootfs
- 或使用 tar(便于离线存档):
- 首次:sudo tar -cvpzf /path/to/backup/rootfs-$(date +%F).tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/run --exclude=/lost+found /
- 方式二 仅备份 Overlay 层(仅当 lower 为只读基础系统)
- 备份 upper 与 work:
- sudo rsync -a /var/lib/overlay2/upper /path/to/backup/overlay2-upper
- sudo rsync -a /var/lib/overlay2/workdir /path/to/backup/overlay2-workdir
- 同时备份 /etc/fstab 与挂载配置
- 恢复
- 整系统恢复(到新磁盘或新根):
- 挂载新根到 /mnt:sudo mount /dev/sdXn /mnt
- 解包:sudo tar -xzvf rootfs-*.tar.gz -C /mnt
- 若有单独的 boot 分区:sudo mount /dev/sdXm /mnt/boot
- 绑定挂载并切换根:
- sudo mount --bind /dev /mnt/dev;sudo mount --bind /proc /mnt/proc;sudo mount --bind /sys /mnt/sys;sudo mount --bind /run /mnt/run
- sudo chroot /mnt
- 检查并修正 /etc/fstab 中的根分区与 Overlay 挂载项
- 安装引导(示例):grub-install /dev/sdX;update-grub
- 退出并重启:exit;sudo umount -R /mnt;sudo reboot
- 仅 Overlay 层恢复(需保证 lower 一致):
- 先按原样挂载 lower(只读基础系统)
- 恢复 upper 与 work:sudo rsync -a /path/to/backup/overlay2-upper /var/lib/overlay2/upper;sudo rsync -a /path/to/backup/overlay2-workdir /var/lib/overlay2/workdir
- 修正 /etc/fstab 后重启或重新挂载
四、验证与自动化
- 备份后验证
- 校验归档:tar -tzf rootfs-*.tar.gz | head;或 rsync -a --dry-run / /path/to/backup/rootfs
- 在测试环境做一次恢复演练,确认引导、网络、服务与数据可用
- 自动化与异地
- 定时任务:crontab -e 添加每日增量(示例)
- 0 2 * * * rsync -aAX --delete / /backup/rootfs-$(date +%F)/
- 远程/离线:将备份同步到 NFS/SSH/对象存储,保留多份与多地点副本
五、故障排查要点
- 文件系统健康:对底层分区执行 fsck 检查与修复
- 挂载参数:核对 lowerdir、upperdir、workdir 与挂载选项是否正确
- 权限与空间:检查目录权限与 df 可用空间
- 日志定位:查看 /var/log/syslog 中与 OverlayFS 相关的错误
- 恢复后:必要时重新挂载或重启服务,确认状态正常