Compare commits

4 Commits
Author SHA1 Message Date
root 7d6b840df5 feat: added .env-example file 2026-04-14 13:29:35 +04:00
root 6f71ff4131 feat: move config to .env 2026-04-14 13:29:14 +04:00
root b13e334365 docs: update readme 2026-04-14 13:28:47 +04:00
root a60e93e05b chore: added .env 2026-04-14 13:27:26 +04:00
4 changed files with 71 additions and 61 deletions
+37
View File
@@ -0,0 +1,37 @@
# "smb" or "nfs"
STORAGE_TYPE="nfs"
# ip or hostname
S_HOST="nfs.lan"
# /path/to/backup
S_PATH="/mnt/media1/backup"
SMB_USER="guest"
SMB_PASS="guest"
LOCAL_KEEP=10
HOST_KEEP=30
S_MOUNT="/tmp/share"
C_LIST="
/etc/config
/etc/xray
/etc/unbound
/root/.ssh
/opt/.xray-config
/opt/.backup-manager
/etc/nftables.d/10-netmap.nft
/etc/nftables.d/15-pbr-mark.nft
/etc/hotplug.d/iface/99-xray-restart
/etc/zabbix_agentd.conf
/etc/dropbear
/etc/banner
/etc/init.d/xray
/etc/crontabs/root
"
C_EXCLUDE="/opt/.backup-manager/local_backups"
H_REPLACE="wpad dnsmasq"
+1
View File
@@ -1 +1,2 @@
local_backups/ local_backups/
.env
+23 -18
View File
@@ -1,4 +1,4 @@
# OpenWrt Backup Manager # OpenWrt Backup Manager (OPKG Version)
Автономный набор скриптов для бэкапа и восстановления конфигурации и пакетов на OpenWrt. Автономный набор скриптов для бэкапа и восстановления конфигурации и пакетов на OpenWrt.
@@ -8,7 +8,7 @@
- системных конфигов - системных конфигов
- пользовательских файлов - пользовательских файлов
- списка установленных пакетов (opkg) - списка установленных пакетов (`opkg`)
#### Восстановление #### Восстановление
@@ -17,8 +17,8 @@
#### Поддержка удалённого хранилища #### Поддержка удалённого хранилища
- NFS - `NFS`
- SMB (CIFS) - `SBM`
#### Очистка старых бэкапов (локально и удалённо) #### Очистка старых бэкапов (локально и удалённо)
@@ -26,6 +26,7 @@
```bash ```bash
. .
├── .env # конфиг-файл
├── backup-manager.sh # основной скрипт ├── backup-manager.sh # основной скрипт
├── backup-configs.sh # сбор конфигураций ├── backup-configs.sh # сбор конфигураций
├── backup-opkg.sh # работа с пакетами ├── backup-opkg.sh # работа с пакетами
@@ -34,7 +35,13 @@
## Настройка ## Настройка
Отредактируй переменные в backup-manager.sh: Скопируйте пример настроек:
```bash
cp ./.env-example ./.env
```
Отредактируйте переменные в `.env`:
### Хранилище ### Хранилище
@@ -96,8 +103,8 @@ H_REPLACE="wpad dnsmasq"
#### Что происходит: #### Что происходит:
- создаётся архив .tar.gz - создаётся архив `.tar.gz`
- сохраняется список пакетов .lst - сохраняется список пакетов `.lst`
- копируется на удалённое хранилище (если доступно) - копируется на удалённое хранилище (если доступно)
### Восстановление ### Восстановление
@@ -117,30 +124,28 @@ H_REPLACE="wpad dnsmasq"
#### Скрипт: #### Скрипт:
- определяет пакеты, установленные после прошивки - определяет пакеты, установленные пользователем
- исключает зависимости - исключает зависимости
- сохраняет только "пользовательские" пакеты
## Зависимости ## Зависимости
#### Для NFS #### Для NFS
```sh ```bash
opkg install kmod-fs-nfs kmod-fs-nfs-v3 kmod-fs-nfs-v4 nfs-utils opkg install nfs-utils kmod-fs-nfs kmod-fs-nfs-v3 kmod-fs-nfs-v4
``` ```
#### Для SMB #### Для SMB
```sh ```bash
opkg install kmod-fs-cifs cifs-utils opkg install cifsmount kmod-fs-cifs
``` ```
## Особенности ## Особенности
- Используется временная директория: /tmp - Используется временная директория: `/tmp`
- При восстановлении пакетов: - При восстановлении пакетов:
- временно правится DNS (Cloudflare) - временно правится DNS (Cloudflare)
- Для восстановления конфигурации используется: - Для восстановления конфигурации используется:
```sh ```bash
sysupgrade -r backup.tar.gz sysupgrade -r backup.tar.gz
``` ```
@@ -148,11 +153,11 @@ sysupgrade -r backup.tar.gz
#### Автоматически: #### Автоматически:
- старые локальные бэкапы - старые локальные бэкапы
- удалённые файлы старше HOST_KEEP дней - удалённые файлы старше `HOST_KEEP` дней
## Пример cron ## Пример cron
```sh ```bash
0 3 * * * /opt/.backup-manager/backup-manager.sh backup 0 3 * * * /opt/.backup-manager/backup-manager.sh backup
``` ```
+10 -43
View File
@@ -1,50 +1,17 @@
#!/bin/sh #!/bin/sh
# "smb" or "nfs" DIR=$(cd "$(dirname "$0")" && pwd)
STORAGE_TYPE="nfs" ENV_FILE="$DIR/.env"
# ip or hostname if [ -f "$ENV_FILE" ]; then
S_HOST="nfs.lan" . "$ENV_FILE"
else
# /path/to/backup echo " [!] Error: .env file not found at $ENV_FILE"
S_PATH="/mnt/media1/backup" exit 1
fi
SMB_USER="guest"
SMB_PASS="guest"
LOCAL_KEEP=10
HOST_KEEP=30
HNAME=$(uci get system.@system[0].hostname) HNAME=$(uci get system.@system[0].hostname)
DATE=$(date +%Y-%m-%d_%H-%M) DATE=$(date +%Y-%m-%d_%H-%M)
S_MOUNT="/tmp/share"
C_LIST="
/etc/config
/etc/xray
/etc/unbound
/root/.ssh
/opt/.xray-config
/opt/.backup-manager
/etc/nftables.d/10-netmap.nft
/etc/hotplug.d/iface/99-xray-restart
/etc/zabbix_agentd.conf
/etc/dropbear
/etc/banner
/etc/init.d/xray
"
C_EXCLUDE="
/opt/.backup-manager/local_backups
/etc/xray/ipset
/etc/xray/ipnet
"
H_REPLACE="wpad dnsmasq"
DIR=$(cd "$(dirname "$0")" && pwd)
#DIR="/opt/.backup-manager"
L_BACKUP_DIR="$DIR/local_backups" L_BACKUP_DIR="$DIR/local_backups"
SCR_BACKUP="$DIR/backup-configs.sh" SCR_BACKUP="$DIR/backup-configs.sh"
SCR_OPKG="$DIR/backup-opkg.sh" SCR_OPKG="$DIR/backup-opkg.sh"
@@ -71,8 +38,8 @@ check_network() {
check_dependencies() { check_dependencies() {
printf "Checking %s dependencies... " "$STORAGE_TYPE" printf "Checking %s dependencies... " "$STORAGE_TYPE"
local pkgs="" local pkgs=""
[ "$STORAGE_TYPE" = "nfs" ] && pkgs="nfs-utils" [ "$STORAGE_TYPE" = "nfs" ] && pkgs="nfs-utils kmod-fs-nfs kmod-fs-nfs-v3 kmod-fs-nfs-v4"
[ "$STORAGE_TYPE" = "smb" ] && pkgs="cifsmount" [ "$STORAGE_TYPE" = "smb" ] && pkgs="cifsmount kmod-fs-cifs"
local missing="" local missing=""
for pkg in $pkgs; do for pkg in $pkgs; do
opkg list-installed | grep -q "^$pkg " || missing="$missing $pkg" opkg list-installed | grep -q "^$pkg " || missing="$missing $pkg"