Repo Document

ImmortalWrt GitHub 自动备份(旧版参考)

说明:这篇文档保留为旧版参考,内容基于早期的 SSH + configs/ 明文快照方案。

docs/OpenWrt_AutoBackup.md更新于 2026年4月12日

ImmortalWrt GitHub 自动备份(旧版参考)

说明:这篇文档保留为旧版参考,内容基于早期的 SSH + configs/ 明文快照方案。 如果你只想了解当前推荐的备份与维护思路,请优先阅读:

  • docs/OpenWrt_Backup_Resotre.md
  • docs/System_Maintenance.md

概览

脚本功能:

  • 智能检测配置变化,只在配置修改时执行备份
  • 同时保存完整备份包和配置文件,便于恢复和追踪变更
  • 自动管理本地和远程备份数量
  • 内置稳定性检查,确保系统就绪后再执行备份

运行方式:

  • 每天 15:00 定时执行
  • 开机后自动检查并补跑(如有遗漏)

保留策略:

  • 本地: 3 个备份
  • GitHub: 30 个备份

备份文件说明

  1. tar.gz 压缩包(用于系统恢复)
  • 文件名: backup_20231213_150023.tar.gz
  • 内容: 完整的系统配置备份(sysupgrade 格式)
  • 用途:
    • LuCI 恢复: 系统备份/升级恢复备份
    • 命令行恢复: sysupgrade -r backup_20231213_150023.tar.gz
    • 这是你恢复系统的主要文件
  • 位置: GitHub 仓库根目录
  1. configs/ 文件夹(用于查看变更)
  • 内容: 从 tar.gz 解压出的 /etc/config/ 配置文件
  • 用途:
    • 在 GitHub 上查看每次修改了什么
    • Git Diff 高亮显示具体改动
    • 追溯历史配置
  • 示例: configs/network, configs/wireless, configs/firewall
  • 注意: 不能单独用于恢复,只是辅助查看
  1. 文件对应关系
备份仓库/
├── backup_20231213_150023.tar.gz  ← 完整备份包 (用于恢复)
├── configs/                        ← 配置文件夹 (用于查看)
│   ├── network                    ← /etc/config/network 副本
│   ├── wireless                   ← /etc/config/wireless 副本
│   ├── firewall                   ← /etc/config/firewall 副本
│   └── ...

简单理解: tar.gz 是"完整压缩包",configs/ 是"解压预览版"

部署步骤

按顺序部署即可,不需要把每一步切成新的阅读断点。

  1. 安装依赖

先判断系统版本:

  • OpenWrt 24.10 及更早稳定版:使用 opkg
  • OpenWrt 25.12 及更新版本 / 新分支:使用 apk

24.10 及更早稳定版

opkg update
opkg install git openssh-client openssh-keygen ca-bundle ca-certificates

25.12 及更新版本 / 新分支

apk update
apk add git openssh-client openssh-keygen ca-bundle ca-certificates
  1. 生成 SSH 密钥
ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
cat /root/.ssh/id_ed25519.pub   # 复制公钥到 GitHub → Settings → SSH and GPG keys
ssh -T git@github.com           # 测试连接
ssh -T -p 443 git@ssh.github.com   # 若 22 端口被封
  1. 配置 SSH(使用 443 端口)
cat > /root/.ssh/config <<'EOF'
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  StrictHostKeyChecking accept-new
EOF

chmod 600 /root/.ssh/config
chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_ed25519
chmod 644 /root/.ssh/id_ed25519.pub
  1. 部署备份脚本
# 下载脚本
wget -O /root/smart_backup.sh https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_REPO/master/scripts/smart_backup.sh
chmod +x /root/smart_backup.sh

# 编辑配置(必须修改)
vi /root/smart_backup.sh

必须修改的配置项:

# 修改为你的 GitHub 备份仓库地址
GIT_REMOTE="git@github.com:YOUR_USERNAME/YOUR_BACKUP_REPO.git"

# 可选:修改本地备份目录
BACKUP_DIR="/root/Immortalwrt-AutoBackup"

# 可选:调整备份保留数量
MAX_LOCAL_BACKUPS=3    # 本地保留数量
MAX_REMOTE_BACKUPS=30  # GitHub 保留数量
  1. 配置定时任务(每天 15:00)
echo "0 15 * * * /root/smart_backup.sh >> /root/smart_backup.log 2>&1" >> /etc/crontabs/root
/etc/init.d/cron restart
  1. 配置开机自检(可选)
vi /etc/rc.local
# 在 exit 0 之前添加:
/root/smart_backup.sh &
exit 0

如何恢复备份

按你习惯的入口选择一种恢复方式即可。

  1. LuCI Web 界面(推荐)

  2. 从 GitHub 仓库下载 backup_YYYYMMDD_HHMMSS.tar.gz 文件

  3. 登录路由器管理界面(默认 http://192.168.1.1)

  4. 进入 系统备份/升级恢复备份

  5. 选择下载的 tar.gz 文件并上传

  6. 等待系统自动重启

  7. SSH 命令行

# 下载备份到路由器
cd /tmp
wget https://github.com/用户名/仓库/raw/master/backup_20231213_150023.tar.gz

# 恢复配置
sysupgrade -r backup_20231213_150023.tar.gz
reboot
  1. 恢复历史版本
# SSH 登录路由器
ssh root@192.168.1.1
cd /root/Immortalwrt-AutoBackup

# 查看历史记录
git log --oneline --all
# 输出:
# abc1234 Update: network, wireless (2023-12-13)
# def5678 Update: firewall (2023-12-10)

# 恢复到指定版本
git checkout abc1234
sysupgrade -r backup_20231213_150023.tar.gz

查看配置变更历史

  1. 在 GitHub 网页查看

  2. 打开你的备份仓库

  3. 进入 configs/ 文件夹

  4. 点击任意配置文件(如 network

  5. 点击 History 查看修改历史和差异对比

  6. 通过 Git 命令查看

cd /root/Immortalwrt-AutoBackup

# 查看某个配置文件的修改历史
git log --oneline configs/network

# 查看具体某次修改内容
git show abc1234:configs/network

# 比较两个版本差异
git diff abc1234 def5678 -- configs/network

验证和测试

  1. 手动运行测试
/root/smart_backup.sh              # 手动执行一次
tail -n 50 /root/smart_backup.log  # 查看日志输出
  1. 常见问题

推送失败,SSH 连接超时

ssh -T git@github.com              # 测试 GitHub 连接
cat /root/.ssh/config              # 检查 SSH 配置

日志显示"无变更",没有生成备份

这是正常现象。脚本采用智能检测机制,只在配置实际发生变化时才执行备份。修改任意配置文件后重新运行即可触发备份。

强制执行备份(忽略变更检测)

cd /root/Immortalwrt-AutoBackup
rm -rf configs/ .git
/root/smart_backup.sh

日志示例

成功备份:

[2023-12-13 15:00:01] ========== Starting Smart Backup ==========
[2023-12-13 15:00:01] System uptime is sufficient (>10m).
[2023-12-13 15:00:01] Network is UP.
[2023-12-13 15:00:12] Configuration changes detected!
[2023-12-13 15:00:12] Generated Commit Message: Update: network, wireless (2023-12-13)
[2023-12-13 15:00:18] Backup successfully pushed.

无变更:

[2023-12-13 15:00:10] No configuration changes detected in /etc/config.
[2023-12-13 15:00:10] Skipping backup push.

注意事项

  1. 恢复系统:必须使用 tar.gz 压缩包,configs/ 文件夹仅用于查看变更
  2. 恢复前备份:恢复旧配置前建议先备份当前配置
  3. 版本兼容性:确保备份的系统版本与当前系统版本兼容
  4. 大文件管理:OpenClash 等应用的大文件(规则、数据库)会占用较多空间