Linux 分区自动备份方案:Dump 与 Restore 实战

作者:袖梨 2026-07-08
dump是Linux分区自动备份的核心工具,专为已挂载文件系统设计,支持基于层级和时间戳的增量备份,需配合restore恢复,且必须使用-u参数更新/etc/dumpdates才能实现有效增量。

Linux 分区自动备份,dump 是核心工具,restore 是配套恢复手段。它专为文件系统(即分区)设计,天然支持增量备份和时间追踪,比 tar 更适合长期、可轮替的生产环境备份策略。

只对分区有效:/boot、/home、/var 等必须挂载点

dump 本质是基于文件系统元数据工作的,所以只能备份已挂载的完整分区(如 /dev/sda1 对应的 /boot),不能对任意目录(如 /opt/myapp)做增量备份。常见可备份目标:

  • /boot(小而关键,适合实验)
  • /home(用户数据集中,价值高)
  • /var(日志、数据库数据卷等)
  • / 根分区(需确保有足够空间存储备份文件)

注意:dump -0j -f /backup/etc.bak.bz2 /etc 虽能执行,但属于“伪备份”——它不记录到 /etc/dumpdates,后续无法用 -1 增量,也不推荐用于生产。

增量备份靠层级 + 时间戳驱动

dump 的增量逻辑依赖两个条件:一是指定非 0 级别(如 -1),二是该分区此前执行过更低级别(如 -0)的备份,并且 -u 参数已将记录写入 /etc/dumpdates

  • 首次全量:dump -0uj -f /backup/boot-0.bz2 /boot
  • 之后增量:dump -1uj -f /backup/boot-1.bz2 /boot
  • 验证状态:dump -W 查看哪些分区待备份、上次备份级别与时间
  • 查记录:cat /etc/dumpdates 确认时间戳是否更新

若跳过 -u 或误删 /etc/dumpdates,后续所有 -1 及以上命令都会退化为全量,失去增量意义。

用 crontab 实现无人值守定时备份

把 dump 命令写成脚本并加入计划任务,就能真正“自动”。例如每天凌晨 2 点执行增量备份:

/usr/local/bin/backup-boot.sh
#!/bin/bashDUMP_DIR="/backup"DATE=$(date +%Y%m%d)dump -1uj -f "${DUMP_DIR}/boot-${DATE}.bz2" /boot &&   echo "$(date): boot incremental backup OK" >> /var/log/dump.log ||   echo "$(date): boot backup FAILED" >> /var/log/dump.log

然后添加定时任务:

crontab -e
0 2 * * * /usr/local/bin/backup-boot.sh

建议搭配日志轮转(logrotate)和磁盘空间检查(如 df -h /backup),避免备份填满磁盘。

Restore 恢复不是“一键覆盖”,要分场景选模式

restore 不是简单解压,它提供四种互斥模式,按需使用:

  • restore -t -f /backup/boot-0.bz2 —— 先 查看 备份里有哪些文件
  • restore -C -f /backup/boot-0.bz2 —— 对比 当前 /boot 和备份内容差异(哪些被删、改、新增)
  • restore -i -f /backup/boot-0.bz2 —— 进入 交互式选择,只恢复其中几个文件(如仅还原 grub.cfg)
  • restore -r -f /backup/boot-0.bz2 —— 全量还原,会清空当前分区再写入,慎用!务必先卸载或进入 rescue 模式

恢复前请确认备份文件完整性:file /backup/boot-0.bz2 应显示 bzip2;必要时用 bzcat /backup/boot-0.bz2 | head -n5 快速抽检。

相关文章

精彩推荐