Compare commits

46 Commits
v1.0 ... master

Author SHA1 Message Date
wukongdaily
46ecd0670b Update README.md 2025-06-21 16:28:21 +08:00
wukongdaily
db722e0d7b Update README.md 2025-05-08 09:34:48 +08:00
wukongdaily
204bfa2d62 Update README.md 2024-10-21 16:45:33 +08:00
wukongdaily
0268803569 Update README.md 2024-07-06 11:16:16 +08:00
wukongdaily
52d45f7a11 Update README.md 2024-07-06 11:09:08 +08:00
wukongdaily
1692101bec Update README.md 2024-07-06 10:40:55 +08:00
wukongdaily
eb43b12c01 Update README.md 2024-07-02 15:23:09 +08:00
wukongdaily
d41184ece9 Update README.md 2024-07-02 15:13:44 +08:00
wukongdaily
d6367520c7 Update README.md 2024-07-02 15:06:47 +08:00
wukongdaily
b2382ff5ef Update README.md 2024-07-02 14:22:48 +08:00
wukongdaily
60db853f48 Update README.md 2024-07-02 14:08:08 +08:00
wukongdaily
53673dfbfc Update README.md 2024-05-08 08:08:17 +08:00
wukongdaily
9f14d57b34 Update README.md 2024-05-08 08:05:31 +08:00
wukongdaily
17fa0fb6c0 Update README.md 2024-05-05 12:08:15 +08:00
wukongdaily
a0f7129f08 Update README.md 2024-04-12 10:40:27 +08:00
wukongdaily
091fc71a64 Update README.md 2024-04-07 09:23:13 +08:00
wukongdaily
5bb8b9432b Update README.md 2024-04-07 09:18:39 +08:00
wukongdaily
8e747c06e0 Update README.md 2024-04-05 15:09:11 +08:00
wukongdaily
c3bbdfe701 Update README.md 2024-04-04 11:48:15 +08:00
wukongdaily
b18be818c3 Update README.md 2024-04-04 11:22:52 +08:00
wukongdaily
61407bca29 Update README.md 2024-04-04 10:05:03 +08:00
wukongdaily
0aae39db18 Update README.md 2024-04-03 16:06:29 +08:00
wukongdaily
0e73fa9457 Update README.md 2024-04-03 15:19:49 +08:00
wukongdaily
da119874d2 Update README.md 2024-04-03 15:18:41 +08:00
wukongdaily
ee9ef4ec88 Update README.md 2024-04-03 15:18:23 +08:00
wukongdaily
e7799a6314 Update README.md 2024-04-02 15:34:06 +08:00
wukongdaily
f5bd7589d2 Update README.md 2024-04-02 15:28:32 +08:00
wukongdaily
0351387504 增加自定义路径备份方式 2024-04-02 15:13:24 +08:00
wukongdaily
b202fb0215 Update README.md 2024-04-01 13:57:59 +08:00
wukongdaily
5fa1797e84 Update README.md 2024-04-01 13:50:06 +08:00
wukongdaily
58b9389fa9 兼容MT2500/MT3000/MT6000的备份与还原 2024-04-01 13:48:06 +08:00
wukongdaily
a80e0e1ab0 Update README.md 2024-03-31 21:35:37 +08:00
wukongdaily
2ec43cf321 Update README.md 2024-03-31 13:07:20 +08:00
wukongdaily
b089c0b953 Update README.md 2024-03-31 13:04:04 +08:00
wukongdaily
9dc8bd7b22 Update README.md 2024-03-31 12:56:53 +08:00
wukongdaily
85e7e3a4ed Update README.md 2024-03-31 12:51:27 +08:00
wukongdaily
c29d9d920f remove etc 2024-03-30 22:30:22 +08:00
wukongdaily
33afc3a688 Update README.md 2024-03-30 22:20:20 +08:00
wukongdaily
c2a58ce3a6 Merge branch 'master' of https://github.com/wukongdaily/OpenBackRestore 2024-03-30 22:19:28 +08:00
wukongdaily
f6ab94e5f3 remove usr 2024-03-30 22:19:26 +08:00
wukongdaily
b1eb02f685 Update README.md 2024-03-30 22:11:02 +08:00
wukongdaily
7e23294de4 去掉root目录增加usr/share 2024-03-30 22:05:52 +08:00
wukongdaily
9b81be6831 增加一些目录 2024-03-30 21:51:34 +08:00
wukongdaily
009da41867 Update README.md 2024-03-30 16:22:55 +08:00
wukongdaily
72c46a4e07 Update README.md 2024-03-30 16:12:09 +08:00
wukongdaily
7af54f031d Update README.md 2024-03-30 16:10:22 +08:00
3 changed files with 164 additions and 32 deletions

View File

@@ -1,2 +1,95 @@
# OpenBackRestore
OpenWrt Backup Restore
# iStoreOS/OpenWrt一键备份与恢复脚本 <img alt="GitHub release (by tag)" src="https://img.shields.io/github/downloads/wukongdaily/OpenBackRestore/v1.0/total?label=%E4%B8%8B%E8%BD%BD%E6%AC%A1%E6%95%B0&labelColor=%2332CD32&color=black">
## 🤔 这是什么?
该项目可以轻松备份iStoreOS已安装的软件和配置,当系统恢复出厂设置或重置后,可以一键恢复原来的软件和配置。<br>
### 特别说明对于iStoreOS系统而言docker的数据分区基本上被用户主动迁移到另一个分区因此无需备份因为重置系统并不会删除用户自己新建的分区。若用户没有迁移docker的数据分区那么我们的备份已经包含
## 💡 特色功能
- 💻 支持`一键生成备份档案 包括已安装软件及其配置`
- 💻 支持`一键恢复备份档案 包括已安装软件及其配置`
- 💻 支持`已安装软件及其配置:包含应用商店和第三方安装的ipk/run`
- 🔑 支持`同时支持终端命令行方式和iStore应用商店手动安装方式`
- 支持的OpenWrt系统列表如下
- 1、软路由iStoreOS(x86_64 | ARM64) ✅
- 2、兼容机型MT3000/2500/6000 ✅
- 3、所有OpenWrtsquashfs-combined
- 4、OpenWrtext4-combined
> 只要是squashfs-combined类型的openwrt固件,理论上都可以兼容的。因为它们都是用了overlayfs文件系统的。
> 特别说明GL-iNET这三款机型的恢复工作是分两步走。<br>
> 1、执行`sh restore.run `后先恢复到iStoreOS风格,执行完毕后会**提示用户上传你的备份档案。**<br>
> 2、再次执行`sh restore.run `后,提示恢复成功并重启,方可完成✅
## 🚀 方法一 命令行方式
### 1. 生成备份`/tmp/upload/backup.tar.gz`
```bash
wget -O backup.run https://cafe.cpolar.cn/wkdaily/OpenBackRestore/raw/branch/master/backup/backup.run && sh backup.run
```
> 每次备份都是完整的,可以经常备份,比如每月备份一次
### 🤔 如何自定义备份的路径?方法如下
https://github.com/wukongdaily/OpenBackRestore/wiki
* 下载脚本
```bash
wget -O backup.run https://cafe.cpolar.cn/wkdaily/OpenBackRestore/raw/branch/master/backup/backup.run
```
### 举例说明 假设要备份到 `/mnt/sata1-4`目录
* 执行备份
```bash
sh backup.run /mnt/sata1-4
```
### 2. 恢复备份
**使用前提** 将备份档案提前上传到 `/tmp/upload/` 目录,如图<br><br>![huifu](https://github.com/wukongdaily/OpenBackRestore/assets/143675923/cd111f10-e6aa-4011-a046-b3004f77c7eb)
> 确定备份文件已经上传了 再执行如下命令即可恢复,恢复完成后会自动重启
### ❤️恢复命令如下
```bash
wget -O restore.run https://cafe.cpolar.cn/wkdaily/OpenBackRestore/raw/branch/master/backup/restore.run && sh restore.run
```
## 🚀 方法二 手动方式
> 1、在release页面下载backup.run或restore.run<br>
https://github.com/wukongdaily/OpenBackRestore/releases/latest <br>
> 2、打开iStore应用商店,点击手动安装,将run文件拖拽上去即可执行。<br>
![image](https://github.com/wukongdaily/OpenBackRestore/assets/143675923/54fdc034-ed4f-4f81-8aa7-0de556e0c3e2)
# 在1panel的计划任务里做定时备份iStoreOS系统
```
bash -c "$(curl --insecure -fsSL https://cafe.cpolar.cn/wkdaily/OpenBackRestore/raw/branch/master/1panel/backup.sh)" -- /ahost/mnt/mmc1-4/backupSystem
```
- 其中 `/ahost/mnt/mmc1-4/backupSystem` 按需修改为备份文件保存的位置<br>
<img width="952" alt="1Panel 2024-07-02 14-49-18888" src="https://github.com/wukongdaily/OpenBackRestore/assets/143675923/d022bbc2-425b-426d-9809-0546744a3a95"><br>
## 前提条件❤️❤️❤️
> https://github.com/wukongdaily/OrangePiShell 这个项目的第三条命令<br>
> 因为默认情况下istoreos的应用商店里的1panel 并没有映射全部目录,只映射了/mnt<br>
> 所以无法完成/overlay的备份。因此需要稍微改动一下。详见上述脚本
<img width="216" alt="root@iStoreOS: ~ | :bin:login (iStoreOS) 2024-07-02 15-08-17" src="https://github.com/wukongdaily/OpenBackRestore/assets/143675923/7bf39fb5-5f8c-41e9-b75a-628f3763f7f4">
# 恢复1panel计划任务产生的iStoreOS的备份
```
bash -c "$(curl --insecure -fsSL https://cafe.cpolar.cn/wkdaily/OpenBackRestore/raw/branch/master/1panel/restore.sh)"
```
# 扩展问题:如何备份到NAS挂cifs即可。方法如图
## 使用前提iStoreOS和NAS处于同一个网段。经典模型软路由+无线路由器ap模式
## 使用前提第二种情况NAS处于软路由的上一级。举例光猫拨号的光猫连接了NAS后面接了软路由iStoreOS软路由作为二级路由器也同样可以访问NAS。
<img width="919" alt="cifs" src="https://github.com/wukongdaily/OpenBackRestore/assets/143675923/a185f505-76fe-4512-b5fe-35e9c28ee1e7">
# iStoreOS 如何挂载威联通NAS的共享文件夹。如图所示 注意大小写
![qnapp](https://github.com/wukongdaily/OpenBackRestore/assets/143675923/d4372306-5f14-4609-85cf-5b214d8f288d)
![QNAP-TBS 2024-07-06 11-00-14](https://github.com/wukongdaily/OpenBackRestore/assets/143675923/99f8d5ec-c4da-4858-8846-2191b648d30b)
## ❤️赞助作者 ⬇️⬇️
[![点击这里赞助我](https://img.shields.io/badge/点击这里赞助我-支持作者的项目-orange?logo=github)](https://wkdaily.cpolar.cn/01)

View File

@@ -7,16 +7,21 @@ light_magenta() { echo -e "\033[95m\033[01m[NOTICE] $1\033[0m"; }
light_yellow() { echo -e "\033[93m\033[01m[NOTICE] $1\033[0m"; }
backup() {
mkdir -p /tmp/upload/backup
cd /tmp/upload/backup
# 检查是否传入自定义路径
local backup_path=${1:-/tmp/upload}
mkdir -p "$backup_path"
cd "$backup_path" || exit
# 备份软件源配置
cp /etc/opkg/distfeeds.conf distfeeds.conf
opkg list-installed >packages-list.txt
# 备份已安装软件列表
opkg list-installed > packages-list.txt
tar -czvf overlay_backup.tar.gz /overlay
tar -czvf etc_backup.tar.gz --exclude='/etc/config/wireless' /etc
tar -czvf backup.tar.gz distfeeds.conf packages-list.txt overlay_backup.tar.gz etc_backup.tar.gz
rm -rf distfeeds.conf packages-list.txt overlay_backup.tar.gz etc_backup.tar.gz
green "系统备份文件已保存至 /tmp/upload/backup/backup.tar.gz"
light_yellow "请及时下载保存到电脑,恢复时使用 系统——文件传输 上传至/tmp/upload目录,再调用恢复脚本即可"
# 将所有备份打包成一个文件
tar -czvf backup.tar.gz distfeeds.conf packages-list.txt overlay_backup.tar.gz
# 清理临时文件
rm -rf distfeeds.conf packages-list.txt overlay_backup.tar.gz
green "系统备份文件已保存至 $backup_path/backup.tar.gz"
light_magenta "请及时下载保存到电脑 供恢复时使用"
}
backup
backup "$1"

View File

@@ -7,28 +7,62 @@ blue() { echo -e "\033[34m\033[01m[MESSAGE] $1\033[0m"; }
light_magenta() { echo -e "\033[95m\033[01m[NOTICE] $1\033[0m"; }
light_yellow() { echo -e "\033[93m\033[01m[NOTICE] $1\033[0m"; }
restore() {
mkdir -p /tmp/upload/backup/
# 检查backup.tar.gz文件是否存在
if [ -f /tmp/upload/backup.tar.gz ]; then
tar -xzvf /tmp/upload/backup.tar.gz -C /tmp/upload/backup
cd /tmp/upload/backup
# 恢复软件源
cp distfeeds.conf /etc/opkg/distfeeds.conf
# 恢复已安装列表
opkg update
cat packages-list.txt | cut -f 1 -d ' ' | xargs opkg install
# 恢复/overlay 配置
tar -xzvf overlay_backup.tar.gz -C /
# 恢复/etc 配置
tar -xzvf etc_backup.tar.gz -C /
green "恢复已完成, 系统正在重启....."
reboot
# 检查文件传输是否已安装
check_istoreos_style_installed() {
# 检查luci-app-filetransfer的一些关键文件是否存在
CHECK_FILES="/usr/lib/lua/luci/controller/filetransfer.lua
/usr/lib/lua/luci/view/filetransfer
/usr/lib/lua/luci/model/cbi/filetransfer"
# 设置一个标记,用来表示文件是否找到
FOUND=0
for FILE in $CHECK_FILES; do
if [ -e "$FILE" ]; then
FOUND=1
break
fi
done
if [ $FOUND -eq 1 ]; then
echo "luci-app-filetransfer is installed."
else
# 如果文件不存在,提醒用户并退出脚本
light_magenta "请将恢复文档backup.tar.gz 上传到 /tmp/upload 目录 再重试。"
exit 1
# 先恢复到一键iStoreOS风格化
wget -O /tmp/restore.sh https://gitee.com/wukongdaily/gl_onescript/raw/master/restore.sh && sh /tmp/restore.sh
fi
}
restore
# 恢复标准的iStoreOS
normal_restore() {
mkdir -p /tmp/upload/restore
# 检查backup.tar.gz文件是否存在
if [ -f /tmp/upload/backup.tar.gz ]; then
tar -xzvf /tmp/upload/backup.tar.gz -C /tmp/upload/restore
cd /tmp/upload/restore
# 恢复overlay
tar -xzvf overlay_backup.tar.gz -C /
green "恢复已完成, 系统正在重启....."
reboot
else
red "请将恢复文档backup.tar.gz上传到/tmp/upload目录再重试。"
exit 1
fi
}
restore() {
model_info=$(cat /tmp/sysinfo/model)
green "型号:$model_info"
case "$model_info" in
*2500* | *3000* | *6000*)
check_istoreos_style_installed
normal_restore
;;
*)
echo "Router name does not contain '3000', '6000', or '2500'."
normal_restore
;;
esac
}
restore