Compare commits

..

37 Commits
v1.0 ... master

Author SHA1 Message Date
e4b924ddf1 Update restore.sh 2024-07-09 10:40:14 +08:00
d7b461a225 Update restore.sh 2024-07-02 13:34:46 +08:00
79553ad690 Update restore.sh 2024-07-02 13:32:33 +08:00
974cb98bc2 增加适合1panel使用的 2024-07-02 13:26:41 +08:00
4b186b0e6c 更新 README.md 2024-05-05 12:06:47 +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
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
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
c29d9d920f remove etc 2024-03-30 22:30:22 +08:00
wukongdaily
33afc3a688
Update README.md 2024-03-30 22:20:20 +08:00
c2a58ce3a6 Merge branch 'master' of https://github.com/wukongdaily/OpenBackRestore 2024-03-30 22:19:28 +08:00
f6ab94e5f3 remove usr 2024-03-30 22:19:26 +08:00
wukongdaily
b1eb02f685
Update README.md 2024-03-30 22:11:02 +08:00
7e23294de4 去掉root目录增加usr/share 2024-03-30 22:05:52 +08:00
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
7af54f031d Update README.md 2024-03-30 16:10:22 +08:00
5 changed files with 220 additions and 32 deletions

14
1panel/backup.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/sh
backup() {
# 检查是否传入自定义路径
current_date=$(date "+%Y-%m-%d_%H-%M")
echo "备份时间:$current_date"
local backup_path=${1:-/tmp/upload}
mkdir -p "$backup_path/${current_date}"
cd "$backup_path/${current_date}" || exit
tar --strip-components=1 -czvf backup.tar.gz -C /ahost overlay
echo "系统备份文件已保存至 $backup_path/${current_date}/backup.tar.gz"
echo "请及时下载保存到电脑 供恢复时使用"
}
backup "$1"

74
1panel/restore.sh Normal file
View File

@ -0,0 +1,74 @@
#!/bin/sh
# 定义颜色输出函数
red() { echo -e "\033[31m\033[01m[WARNING] $1\033[0m"; }
green() { echo -e "\033[32m\033[01m[INFO] $1\033[0m"; }
yellow() { echo -e "\033[33m\033[01m[NOTICE] $1\033[0m"; }
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"; }
# 检查文件传输是否已安装
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
# 先恢复到一键iStoreOS风格化
wget -O /tmp/restore.sh https://gitee.com/wukongdaily/gl_onescript/raw/master/restore.sh && sh /tmp/restore.sh
fi
}
# 恢复标准的iStoreOS
normal_restore() {
# 提示用户输入要恢复的文件路径
green "恢复的文件路径(默认: /tmp/upload/backup.tar.gz) "
green "因此您可以使用 系统————文件传输 功能将backup.tar.gz上传,然后在此处【回车】即可完成恢复"
read -p "或者您有别的目录,也可以在此处输入要恢复的备份文件路径:" file_path
# 如果用户没有输入,使用默认路径
if [ -z "$file_path" ]; then
file_path="/tmp/upload/backup.tar.gz"
fi
# 检查文件是否存在
if [ -f "$file_path" ]; then
# 恢复overlay
tar -xzvf "$file_path" -C /
green "✅恢复已完成, 系统正在重启....."
reboot
else
red "文件不存在,请确保文件路径正确并重试。"
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
;;
*)
normal_restore
;;
esac
}
restore

View File

@ -1,2 +1,63 @@
# 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
```
> 备份仓库
```bash
wget -O backup.run https://mirror.ghproxy.com/https://raw.githubusercontent.com/wukongdaily/OpenBackRestore/master/backup/backup.run && sh backup.run
```
> 每次备份都是完整的,可以经常备份,比如每月备份一次
### 🤔 如何自定义备份的路径?方法如下
https://github.com/wukongdaily/OpenBackRestore/wiki
### 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
```
> 备份仓库
```bash
wget -O restore.run https://mirror.ghproxy.com/https://raw.githubusercontent.com/wukongdaily/OpenBackRestore/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)
# 💰打赏作者💰
<img src="https://github.com/wukongdaily/tvhelper-docker/assets/143675923/1f92c5ba-1b6b-4967-a1ab-20697159badc" width="30%" />

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