Skip to content

Ubuntu 物理机系统快照与恢复指南 ​

核心痛点: 物理机(笔记本/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

脚本会自动执行以下操作:

  1. 安装 Timeshift。
  2. 自动检测 HDD 数据盘 (/srv/data) 并将其设为快照存储点。
  3. 配置排除规则 (排除 /home, /srv 等用户数据)。
  4. 设置定时任务: 每日自动备份 (Daily),保留最近 3 个快照。
  5. 创建名为 Initial_Backup_Before_Hub_Refactor 的首次快照。

🛠️ 3. 手动安装与配置 (备用) ​

如果脚本执行失败,或你想手动控制细节,请参考以下步骤。

3.1 安装 Timeshift ​

bash
sudo apt update
sudo apt install timeshift -y

3.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 Install

4.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 救援流程 ​

  1. 插入 U 盘,BIOS 选择 U 盘启动。
  2. 选择 "Try Ubuntu without installing" (试用 Ubuntu)。
  3. 进入桌面后,打开终端,安装 Timeshift:
    bash
    sudo add-apt-repository -y universe
    sudo apt update
    sudo apt install timeshift -y
  4. 打开 Timeshift:
    • 它会自动扫描硬盘上的快照。
    • 找到你之前的快照点。
    • 点击 Restore (恢复)。
    • 确保“Target Device”指向你物理机硬盘的系统分区。
  5. 等待进度条走完,拔掉 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/conf

6.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 盘,你的物理机就拥有了不输给虚拟机的“回档”能力,可以放心折腾了。

方舟 · Ark