linux 系统-备份与恢复(优化版)
dump 支持分卷和增量备份(所谓增量备份是指备份上次备份后修改/增加过的文件,也称差异备份)。restore 命令用来恢复已备份的文件,可以从dump 生成的备份文件中恢复原文件。

😀前言
在日常运维中,系统稳定性与数据安全 是最核心的任务之一。Linux 系统虽然稳定,但任何硬件故障、误操作、病毒攻击都可能导致数据丢失。一旦没有备份,重装系统或恢复数据将会耗费大量时间和精力,甚至造成无法挽回的损失。
因此,掌握 Linux 备份与恢复 是每个运维工程师和学习者的必备技能。本章将从最常见的tar方法讲起,再深入讲解dump与restore工具,结合实际案例,让新手也能快速理解并上手。同时还会补充一些备份策略与注意事项,帮助你建立更安全、更高效的备份体系。
🏠个人主页:尘觉主页
文章目录
Linux 系统 — 备份与恢复 (优化版)
1. 为什么要做备份?
实体机不能做快照,系统一旦出现故障或数据损坏,可能需要重装系统,且会丢失数据。因此对重要系统和数据做定期备份是必需的,能在灾难发生时快速恢复服务并减少损失。
备份常见做法有两类(简单说明):
- 使用
tar把需要的文件或目录打包(适合文件级、目录级备份,操作灵活)。 - 使用
dump/restore(适合文件系统级别的全备与增量备份)。
示意图
2. 安装 dump / restore
在基于 RHEL/CentOS 的系统上,如果没有命令,可以用:
yum -y install dump
(安装完成后会同时有 dump 和 restore 命令)。
小提示:执行备份/恢复通常需要 root 权限。
3. dump:概念与常用选项
dump 用于对文件系统做备份(支持完整备份与按层级的增量备份)。所谓“增量”是指备份自上次备份后有改动的文件。
常用选项(说明和用途):
-0到-9:备份层级(0表示完整备份,1、2…表示增量层级,数字越大表示越“浅”的增量)。-f <文件名>:指定输出备份文件名(也可以是设备名,如/dev/st0)。-j:使用 bzip2 压缩输出(生成.bz2文件)。-u:备份完成后把信息写入/etc/dumpdates(用于记录何时做了哪个级别的备份,便于以后做增量)。-t:查看备份文件中有哪些文件(不还原,仅列出)。-C:在restore中使用,用来比较备份和现有文件差异(详见 restore)。-W/-w:W-显示需要备份的文件及其最后一次备份的层级,时间,日期。- w-与-W 类似,但仅显示需要备份的文件(用于判断增量内容)。
-T <日期>:指定作为备份的起始时间(一般不用到)。
注意:
dump做增量时依赖/etc/dumpdates的记录;对子目录/普通目录做增量时会报错(后面详解)。
4. dump 示例
完整备份 /boot 到 /opt/boot.bak0.bz2:
dump -0uj -f /opt/boot.bak0.bz2 /boot
解释:-0 完整备份;-u 更新 /etc/dumpdates;-j 用 bzip2 压缩;-f 指定输出文件;最后是要备份的挂载点 /boot。
在 /boot 增量备份(相对于上次 0 级备份的改动)并保存为 boot.bak1:
dump -1uj -f /opt/boot.bak1.bz2 /boot
说明:-1 指第一层增量(只备份自上次 0 级后变更的内容)。对比两次备份文件大小可以看出增量效果。
检查将要备份的文件/时间信息(不做备份,仅查看)
dump -W /boot
(输出会列出哪些文件/目录在上次备份之后发生变化)
查看 /etc/dumpdates(记录)
cat /etc/dumpdates
示例图 :
备份整个目录(只能做 0 级,即完整备份)
dump -0j -f /opt/etc.bak.bz2 /etc
提醒:对“子目录”做增量(层级 >0)会报错:
DUMP: Only level 0 dumps are allowed on a subdirectory。原因在于增量备份需要在文件系统级别维护元信息,子目录没有完整的文件系统上下文,因此只允许完整备份。解决办法见“常见问题”部分。
5. 使用 crontab 做无人值守备份
把备份脚本放文件里更稳妥(避免 crontab 中 % 的问题):
在 /usr/local/bin/dump_boot.sh 写入:
#!/bin/bash
DATE=$(date +%F)
/sbin/dump -0uj -f /opt/boot.bak0.$DATE.bz2 /boot
赋予执行权限:
chmod +x /usr/local/bin/dump_boot.sh
添加 crontab(每周日凌晨 2 点执行):
0 2 * * 0 /usr/local/bin/dump_boot.sh
建议把脚本的输出、错误重定向到日志,并做好轮转/清理策略,避免磁盘被备份文件占满。
6. restore:查看、比较与还原
restore 用来从 dump 的备份文件中恢复或查看内容。主要模式(四选一):
-t:查看模式(列出备份文件里有哪些文件)。-i:交互式(还原时询问用户,适合选择性恢复)。-r:还原模式(恢复文件到当前目录或到原路径,取决于运行位置与参数)。-C:比较模式(比较备份文件与当前文件系统中文件的差异)。
常用选项:-f <备份文件> 指定从哪个备份文件读取。
示例:比较备份和当前文件差异(测试)
先把 /boot/hello.java 改名或修改,示例命令:
restore -C -f /opt/boot.bak1.bz2
(会输出备份与当前文件的比较结果 ):
mv /boot/hello100.java /boot/hello.java 再改回来看看一样的情况
restore -C -f boot.bak1.bz2

示例:查看备份文件中有哪些内容
restore -t -f /opt/boot.bak0.bz2
示例:按顺序恢复(增量备份必须按顺序恢复)
推荐先创建临时目录,先在临时目录恢复并测试,再替换生产目录:
mkdir /opt/boottmp
cd /opt/boottmp
restore -r -f /opt/boot.bak0.bz2 # 恢复到第 1 次完全备份状态
restore -r -f /opt/boot.bak1.bz2 # 再应用第 1 次增量
# 如果有更多增量文件,继续按时间顺序恢复
示例恢复图 :
重要:增量恢复必须从最近一次完整备份开始,然后按时间顺序依次恢复每个增量文件;若缺少中间的增量文件,恢复结果可能不完整或失败。
7. 如果你只想备份某个目录(tar 方法)
dump 对子目录不支持增量(见上文),所以对文件/目录级备份很多人直接用 tar:
完整备份 /etc(保留权限)并压缩为 gzip:
tar -czpPf /opt/etc-$(date +%F).tar.gz /etc
解释:
-c创建归档-z用 gzip 压缩(也可以-j用 bzip2)-p保持权限-P使用绝对路径(也可以去掉)-f指定文件名
从 tar 恢复(到临时目录):
mkdir /opt/etctmp
tar -xzpf /opt/etc-2025-09-01.tar.gz -C /opt/etctmp
8. 常见问题与排查
- 报错
Only level 0 dumps are allowed on a subdirectory:
说明你试图对子目录做非 0 级(增量)备份。解决:要么对整个挂载点(文件系统根)做增量备份,要么对该子目录使用tar做完整备份。 - 备份文件很大 / 占满磁盘:
使用压缩(-j/-z),并实现备份轮转(按天/周保留一定天数),或把旧备份移到异地存储。 - 备份后的文件恢复不完全 / 权限不对:
恢复时请确保以 root 执行,且使用dump/restore或tar时带上保留权限的选项(-p等)。 - 如何验证备份有效?
定期把备份恢复到临时目录并测试关键文件/服务,别只相信备份命令成功返回。 - 要不要把备份放到同一台服务器?
不要。重要数据应异地保存(另一台服务器、网络存储或云端),以防整机损坏或被盗。
9. 备份策略建议
- 最少做法:每周一次完整备份(
dump -0或 tar),每日做一次增量(dump -1/2)或文件级增量。 - 保留策略:比如保留最近 7 天的每日增量、最近 4 周的周备份、最近 6 个月的月备份。
- 自动化:把脚本放到
/usr/local/bin并用crontab调度,产生日志并自动清理旧文件。 - 异地与加密:重要备份通过
scp或 rsync 传到另一台机器;敏感数据考虑用gpg加密后再传。 - 定期演练:至少每月做一次恢复演练,确保能真正还原出可用数据。
10. 简洁的操作流程
- 决定要备份的对象(分区层级用
dump,目录/文件用tar)。 - 设计好命名与保存策略(包含日期与层级)。
- 写脚本并用 crontab 定时执行,脚本输出写入日志。
- 定期把备份搬到异地并加密(如需)。
- 定期测试恢复流程,确认备份可用。
😄总结
本文介绍了 Linux 下常见的两类备份方式:
- 文件/目录级备份:适合用
tar,简单直观。 - 文件系统级备份:适合用
dump/restore,支持完整备份和分层增量备份。
通过案例演示了如何:
- 使用
dump执行完整与增量备份; - 借助
/etc/dumpdates管理备份记录; - 使用
restore查看、比较和还原数据; - 结合
crontab实现自动化定时备份。
最后强调:
- 备份不是目的,能成功恢复才是关键 → 建议定期演练恢复流程。
- 不要把所有备份放在同一台机器 → 异地存储与加密至关重要。
- 良好的备份策略 → 全备 + 增量,配合自动化和轮转,才能既省空间又保证安全。
😁热门专栏推荐
想学习vue的可以看看这个
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
🤔欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)