Appearance
Linux快照恢复
核心痛点: 物理机(笔记本/MiniPC)没有虚拟机的“快照”功能,折腾系统(安装驱动、Docker、桌面环境)容易把系统搞挂且难以复原。 解决方案: 使用 Timeshift 构建类 macOS "Time Machine" 的系统还原点。
🛑 1. 核心原则:系统与数据分离
在使用 Timeshift 之前,必须建立一个正确的认知: 快照只保护“系统”,不保护“数据”。
- ✅ 快照范围 (System):
/etc,/usr,/boot,/root,/var(部分)- 例如:安装的软件、修改的配置文件、驱动程序、内核更新。
- ❌ 排除范围 (Data):
/home/你的用户名,/srv(建议的数据目录),/mnt- 例如:你的代码、文档、Docker 挂载卷、数据库文件。
为什么? 如果你把
/home也快照了,当你因为系统崩溃回滚到 3 天前,你这两天写的代码文档也会一起“穿越”回去消失掉!
🚀 2. 自动化配置与备份 (推荐)
针对无头服务器 (Headless Server),我们准备了一键配置脚本,自动完成安装、排除规则设置和首次备份。
2.1 获取脚本
脚本位置: scripts/setup_timeshift.sh
2.2 执行脚本
将脚本上传到服务器后,执行:
bash
chmod +x setup_timeshift.sh
./setup_timeshift.sh脚本会自动执行以下操作:
- 安装 Timeshift。
- 自动检测 HDD 数据盘 (
/srv/data) 并将其设为快照存储点。 - 配置排除规则 (排除
/home,/srv等用户数据)。 - 设置定时任务: 每日自动备份 (Daily),保留最近 3 个快照。
- 创建名为
Initial_Backup_Before_Hub_Refactor的首次快照。
🛠️ 3. 手动安装与配置 (备用)
如果脚本执行失败,或你想手动控制细节,请参考以下步骤。
3.1 安装 Timeshift
bash
sudo apt update
sudo apt install timeshift -y3.2 首次快照 (CLI)
bash
# 1. 查看可用设备
sudo timeshift --list-devices
# 2. 创建快照 (指定存储在 sdb1,请根据实际情况替换)
# 如果 /srv/data 挂载在 /dev/sdb1
sudo timeshift --create --comments "Manual Backup" --snapshot-device /dev/sdb1📸 4. 日常操作 SOP
4.1 创建“保命”快照 (手动)
在执行任何危险操作(如:升级系统、安装显卡驱动、修改 fstab、大规模配置 Docker)之前,必须执行一次手动快照。
bash
# 语法: sudo timeshift --create --comments "备注信息"
# 示例: 准备安装 Docker 前
sudo timeshift --create --comments "Before Docker Install"4.2 查看快照
bash
sudo timeshift --list输出示例:
text
/dev/sda1 is mounted at: /run/timeshift/backup
Num Name Tags Comments
-------------------------------------------------------------------
0 > 2024-02-03_10-00-00 O D Fresh Install Initialized
1 > 2024-02-03_14-30-00 O Before Docker Install4.3 恢复系统 (当系统还能进入终端时)
如果你装软件报错、配置乱了,但还能 SSH 连进去:
bash
# 1. 恢复到指定快照 (会提示你选择)
sudo timeshift --restore
# 2. 按照屏幕提示操作:
# - 选择快照编号
# - 确认恢复的目标分区 (通常默认即可)
# - 按 Enter 开始恢复
# - 完成后重启🚑 5. 灾难救援 (当系统进不去时)
这是物理机最怕的情况:开机黑屏、Grub 报错、SSH 连不上。 这时候你需要一把“万能钥匙”。
5.1 准备“救命 U 盘” (One-time Setup)
准备一个闲置 U 盘 (8G+),制作成 Ubuntu Live USB(安装盘)。
- 工具推荐: Ventoy (拖入 ISO 即可,无需反复格式化)。
5.2 救援流程
插入 U 盘,BIOS 选择 U 盘启动。
选择 "Try Ubuntu without installing" (试用 Ubuntu)。
进入桌面后,打开终端,安装 Timeshift:
bashsudo add-apt-repository -y universe sudo apt update sudo apt install timeshift -y打开 Timeshift:
- 它会自动扫描硬盘上的快照。
- 找到你之前的快照点。
- 点击 Restore (恢复)。
- 确保“Target Device”指向你物理机硬盘的系统分区。
等待进度条走完,拔掉 U 盘,重启。
- 见证奇迹: 你的系统完整回到了坏掉之前的状态。
🛡️ 6. 其他“保命”习惯
除了 Timeshift,养成以下习惯能规避 90% 的风险:
6.1 危险命令“空转”测试
在执行 rm -rf 或复杂命令前,先用 ls 或 echo 确认路径。
bash
# 危险
rm -rf /srv/docker/nginx/conf
# 安全习惯
ls /srv/docker/nginx/conf # 先看一眼,确认里面是你想要删的东西
rm -rf /srv/docker/nginx/conf6.2 配置文件修改三部曲
永远不要直接修改系统关键配置(如 /etc/ssh/sshd_config, /etc/fstab, /etc/nginx/nginx.conf)。
bash
# 1. 备份 (Backup)
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.20240203
# 2. 修改 (Edit)
sudo vim /etc/ssh/sshd_config
# 3. 验证 (Test) - 很多服务都有测试命令
sudo sshd -t # 测试 ssh 配置
# 或者重启服务看状态
sudo systemctl restart ssh
sudo systemctl status ssh如果报错,立刻还原: sudo cp /etc/ssh/sshd_config.bak.20240203 /etc/ssh/sshd_config
📝 总结
| 场景 | 解决方案 | 难度 |
|---|---|---|
| 预防 | 遵守“系统/数据分离”,定期 Timeshift 快照 | ⭐ (一次配置) |
| 小故障 | SSH 登录后 timeshift --restore | ⭐⭐ |
| 大故障 | U 盘启动 -> Timeshift 恢复 | ⭐⭐⭐ |
拥有了 Timeshift + 救命 U 盘,你的物理机就拥有了不输给虚拟机的“回档”能力,可以放心折腾了。
