摘要:备份不等于安全,没有做过恢复测试的备份等于无效备份。本文基于Ubuntu 24.04 Server真实虚拟机实操,完整演示tar全量/增量备份、rsync同步、crontab定时备份,重点拆解系统配置单文件恢复遇到的连环BUG,包含 Not found in archive、tar解压成功文件不变、重定向权限报错、误删系统配置文件、apt依赖崩坏等第一手排错现场,适合Linux运维、课程实验参考。
一、前置准备
创建业务测试目录与测试文件,模拟线上业务配置、日志、数据库文件。
1 | # 创建业务测试目录 |
二、tar 全量备份 + 恢复
tar是运维最常用备份工具,但路径嵌套问题是高频踩坑点。
1. 普通用户目录全量备份
1 | # 备份整个 project 业务目录,附加日期后缀便于版本管理 |
2. 模拟误删业务目录
1 | rm -rf ~/project |
3. 从备份包恢复数据(核心实操)
1 | # ❌错误写法(原教程坑:会解压到 ~/home/ubuntu/project,目录嵌套,找不到业务目录) |
通俗问题原因 & 解决方案(必看)
- 出错根源:打包使用
~/project绝对路径,压缩包内部路径为home/ubuntu/project/xxx。直接解压会生成嵌套目录~/home/ubuntu/project,执行ls ~/project看不到恢复后的业务文件。 - –strip-components=2作用:删除前面2层目录
home、ubuntu,直接释放project目录到目标位置。 - 恢复校验:执行
ls ~/project,可以看到 config、log、data 目录即恢复成功。

4. 系统配置目录备份
修改系统配置前,务必备份/etc,防止改崩系统。
1 | sudo tar -zcvf etc_backup_$(date +%Y%m%d).tar.gz /etc/ |
⚠️生产红线规则:严禁整包解压覆盖 /etc 目录!
全盘覆盖会重置全部系统配置,网络、SSH、账号权限全部失效,服务器直接瘫痪。/etc备份只用来做单文件精准恢复。
三、tar 增量备份
全量备份占用磁盘大;增量备份只备份新增/变更文件,节省存储空间,适合日常定时备份。
1、第一次全量备份(生成快照文件)
1 | tar -zcvf project_all.tar.gz ~/project --listed-incremental=backup.snap |
2. 修改/新增测试文件
1 | echo "new_config=123" >> ~/project/config/app.conf |
3. 增量备份(仅备份改动内容)
1 | tar -zcvf project_inc.tar.gz ~/project --listed-incremental=backup.snap |
四、rsync 增量同步备份
Ubuntu24.04已经废弃老旧的dump/restore工具。rsync是互联网企业主流热备份、异地同步工具,支持增量、断点续传,业务数据备份大量使用。
1. 本地目录首次全量备份
1 | # 将 project 完整同步到 backup 备份目录 |
2. 修改文件后增量同步
1 | echo "update log" >> ~/project/log/service.log |
五、crontab 定时自动备份
企业服务器依靠定时任务实现无人值守自动备份,分为用户级、系统级。
1. 用户级定时任务(普通业务数据)
1 | # 编辑个人定时任务 |
添加内容(每日凌晨2点自动备份project业务目录)
1 | 0 2 * * * /usr/bin/tar -zcvf /home/$USER/project_auto_$(date +\%Y\%m\%d).tar.gz /home/$USER/project/ |
2. 系统级定时备份(系统配置/etc)
1 | sudo crontab -e |
添加内容(每周日凌晨3点备份/etc系统配置)
1 | 0 3 * * 0 /usr/bin/tar -zcvf /etc_backup_$(date +\%Y\%m\%d).tar.gz /etc/ |
六、生产规范精准恢复演练
运维铁律:未测试的备份都是无效备份。必须主动模拟故障,验证备份可恢复。
1.业务目录单文件恢复
场景:只丢失单个配置文件,不需要恢复整个目录,降低恢复风险。
1 | # 模拟误删核心配置文件 |
说明:tar单文件恢复只能识别压缩包内部原生路径;如果写系统路径
~/project/xxx,会抛出Not found in archive。恢复前必须查看包内路径。

优先确定文档在压缩包里的真实路径。
2.系统 /etc 配置单文件精准恢复
生产高频故障:人为改错SSH等系统配置,远程失联。禁止整包恢复/etc,只修复损坏的单个配置文件。
步骤1:查询备份包内文件完整路径
1 | # 筛选查看ssh配置文件在备份包内的路径 |
步骤2:模拟配置文件损坏
坑:
sudo echo xxx > 文件会报权限拒绝;重定向>是bash执行,sudo不会提升重定向权限,需要套sh -c。
1 | # 正确写法:sudo 无法直接配合 > 重定向,需要套 sh -c 提升整体权限 |
步骤3:单文件精准恢复
⚠️Ubuntu24.04重大隐形BUG:
如果磁盘上现有文件mtime(修改时间)比备份包内文件新,单纯加--overwrite不会覆盖,出现解压输出成功,但文件内容完全不变的假性恢复。
另外:严禁rm删除系统核心配置文件,删除后文件直接丢失,新版openssh没有现成模板可以复制,极易造成SSH瘫痪。
1 | # ✅针对文件彻底丢失的终极恢复方案:tar -O输出到stdout,重定向新建文件 |
步骤4:校验恢复结果并生效配置
注意:Ubuntu的ssh服务名叫
ssh,不是CentOS的sshd;配置严重损坏时reload无效,必须restart。
1 | # 校验配置已恢复为备份时的原始正确内容 |
七、实操踩坑完整复盘(博客重点)
- tar Not found in archive:恢复单文件必须写压缩包内部路径,不能写磁盘上的系统路径;先用
tar -ztvf查看包内文件。 - sudo + >重定向报Permission denied:sudo只提升命令,重定向属于shell行为;使用
sh -c 'xxx > file'整体提权。 - tar显示解压成功,文件内容不变:tar会对比文件修改时间,新文件不会被包内旧文件覆盖;文件丢失场景使用
tar -O输出stdout重定向重建。 - 服务名差异:CentOS为
sshd.service,Ubuntu24.04为ssh.service,混用会提示Unit not found。 - 不要rm系统核心配置:
/etc/ssh/sshd_config删除后没有模板可复制,直接SSH瘫痪。模拟故障只修改内容,不要删除文件。 - 切换root之后备份包找不到:备份放在普通用户家目录,root下相对路径失效;使用
find / -name "xxx.tar.gz"查找真实绝对路径。 - 不要盲目apt重装软件救配置:版本不一致会触发依赖锁死,把系统搞坏;优先从备份包抢救配置文件。
八、实战总结
- tar适合本地文件备份,rsync适合增量同步、异地备份;crontab实现定时自动化。
/etc系统备份禁止整包解压覆盖,只做单文件恢复,避免系统整体瘫痪。- 备份之后一定要做恢复演练,没有验证过的备份没有意义。
- 模拟故障尽量只修改内容,不删除系统核心文件,防止环境直接报废。
- 遇到解压成功但是业务不恢复,优先怀疑tar时间比对导致的假性恢复,不要一味增加各种参数。