164 lines
3.4 KiB
Markdown
164 lines
3.4 KiB
Markdown
# OpenWrt Backup Manager (APK Version)
|
||
|
||
Автономный набор скриптов для бэкапа и восстановления конфигурации и пакетов на OpenWrt.
|
||
|
||
## Возможности
|
||
|
||
#### Бэкап
|
||
|
||
- системных конфигов
|
||
- пользовательских файлов
|
||
- списка установленных пакетов (`apk`)
|
||
|
||
#### Восстановление
|
||
|
||
- конфигурации через sysupgrade
|
||
- пакетов из сохранённого списка
|
||
|
||
#### Поддержка удалённого хранилища
|
||
|
||
- `NFS`
|
||
- `SMB`
|
||
|
||
#### Очистка старых бэкапов (локально и удалённо)
|
||
|
||
## Структура
|
||
|
||
```bash
|
||
.
|
||
├── .env # конфиг-файл
|
||
├── backup-manager.sh # основной скрипт
|
||
├── backup-configs.sh # сбор конфигураций
|
||
├── backup-apk.sh # работа с пакетами
|
||
├── README.md
|
||
```
|
||
|
||
## Настройка
|
||
|
||
Скопируйте пример настроек:
|
||
|
||
```bash
|
||
cp ./.env-example ./.env
|
||
```
|
||
|
||
Отредактируйте переменные в `.env`:
|
||
|
||
### Хранилище
|
||
|
||
```bash
|
||
STORAGE_TYPE="nfs" # nfs или smb
|
||
S_HOST="nfs.lan"
|
||
S_PATH="/mnt/media1/backup"
|
||
```
|
||
|
||
### Для SMB
|
||
|
||
```bash
|
||
SMB_USER="guest"
|
||
SMB_PASS="guest"
|
||
```
|
||
|
||
### Политика хранения
|
||
|
||
```bash
|
||
LOCAL_KEEP=10 # сколько хранить локально
|
||
HOST_KEEP=30 # сколько дней хранить удалённо
|
||
```
|
||
|
||
### Что бэкапить
|
||
|
||
```bash
|
||
C_LIST="
|
||
/etc/config
|
||
/etc/xray
|
||
/root/.ssh
|
||
...
|
||
"
|
||
```
|
||
|
||
### Что исключить
|
||
|
||
```bash
|
||
C_EXCLUDE="
|
||
/opt/.backup-manager/local_backups
|
||
/etc/xray/ipset
|
||
"
|
||
```
|
||
|
||
### Конфликтующие пакеты
|
||
|
||
Удаляются перед восстановлением:
|
||
|
||
```bash
|
||
H_REPLACE="wpad dnsmasq"
|
||
```
|
||
|
||
## Использование
|
||
|
||
### Создать бэкап
|
||
|
||
```bash
|
||
./backup-manager.sh backup
|
||
```
|
||
|
||
#### Что происходит:
|
||
|
||
- создаётся архив `.tar.gz`
|
||
- сохраняется список пакетов `.lst`
|
||
- копируется на удалённое хранилище (если доступно)
|
||
|
||
### Восстановление
|
||
|
||
```bash
|
||
./backup-manager.sh restore
|
||
```
|
||
|
||
#### Далее интерактивно:
|
||
|
||
1. Выбор источника (локальный / удалённый)
|
||
2. Выбор типа:
|
||
- конфигурация
|
||
- пакеты
|
||
|
||
## Как работает бэкап пакетов
|
||
|
||
#### Скрипт:
|
||
|
||
- определяет пакеты, установленные пользователем
|
||
- исключает зависимости
|
||
|
||
|
||
## Зависимости
|
||
|
||
#### Для NFS
|
||
|
||
```bash
|
||
apk add nfs-utils kmod-fs-nfs kmod-fs-nfs-v3 kmod-fs-nfs-v4
|
||
```
|
||
|
||
#### Для SMB
|
||
```bash
|
||
apk add cifsmount kmod-fs-cifs
|
||
```
|
||
|
||
## Особенности
|
||
- Используется временная директория: `/tmp`
|
||
- При восстановлении пакетов:
|
||
- временно правится DNS (Cloudflare)
|
||
- Для восстановления конфигурации используется:
|
||
```bash
|
||
sysupgrade -r backup.tar.gz
|
||
```
|
||
|
||
## Очистка
|
||
|
||
#### Автоматически:
|
||
- старые локальные бэкапы
|
||
- удалённые файлы старше `HOST_KEEP` дней
|
||
|
||
|
||
## Пример cron
|
||
|
||
```bash
|
||
0 3 * * * /opt/.backup-manager/backup-manager.sh backup
|
||
``` |