118 lines
3.7 KiB
Markdown
118 lines
3.7 KiB
Markdown
# rclone-backup
|
|
|
|
Скрипт для автоматизации бэкапов с помощью rclone в облако Яндекс.Диск с уведомлениями в ntfy.
|
|
|
|
## Конфиг
|
|
|
|
```bash
|
|
SOURCE="/mnt/backup/data" # Источник
|
|
REMOTE="yandex:backup_folder" # Назначение
|
|
MAX_AGE="24h" # Срок актуальности файлов
|
|
BW_LIMIT="5M" # Ограничение скорости
|
|
NTFY_URL="https://ntfy.sh/topic" # Ссылка на топик ntfy
|
|
AUTH="user:password" # Заголовок с авторизацией для ntfy
|
|
SERVICE="MyServer" # Имя сервиса для заголовка
|
|
FILTER="{*.tar.gz,*.zst,*.lst}" # Маска для файлов
|
|
LOG_FILE="/var/log/rclone-backup.log" # Лог-файл
|
|
ADVANCED_CLOUD_FLAG="" # Дополнительные флаги для выбранного облака
|
|
```
|
|
|
|
## Использование
|
|
|
|
### Запуск бэкапа вручную:
|
|
|
|
```bash
|
|
./backup.sh config.env
|
|
```
|
|
|
|
### Добавление в Cron
|
|
|
|
Для ежедневного запуска в 05:00:
|
|
|
|
```bash
|
|
0 5 * * * /opt/rclone-backup/rclone-backup.sh /opt/rclone-backup/config.env
|
|
```
|
|
|
|
## Docker
|
|
|
|
|
|
Структура:
|
|
|
|
```bash
|
|
.
|
|
├── rclone-backup/ # Скрипты и конфиги окружения
|
|
│ ├── rclone-backup.sh # Основной скрипт
|
|
│ └── config.env # Конфиг
|
|
├── rclone-data/
|
|
│ ├── rclone-backup.log # лог-файл
|
|
│ └── rclone.conf # конфиг rclone
|
|
├── docker-compose.yml
|
|
└── Dockerfile # устаналиваем curl
|
|
```
|
|
|
|
`Dockerfile`:
|
|
|
|
```Dockerfile
|
|
FROM rclone/rclone:latest
|
|
RUN apk add --no-cache curl
|
|
```
|
|
|
|
`docker-compose.yml`:
|
|
|
|
```yaml
|
|
services:
|
|
rclone-backup:
|
|
build: .
|
|
container_name: rclone-backup
|
|
restart: "no"
|
|
volumes:
|
|
# сам скрипт
|
|
- ./rclone-backup/rclone-backup.sh:/usr/local/bin/rclone-backup.sh:ro
|
|
# конфиг для скрипта
|
|
- ./rclone-backup/config.env:/opt/rclone-backup/config.env:ro
|
|
# директория с конфигом и логом rclone
|
|
- ./rclone-data:/config/rclone:rw
|
|
# непосредственно сама директория с бэкапами для синхронизации
|
|
- /opt/docker/samba/openwrt/:/mnt/backup/openwrt:ro
|
|
entrypoint: ["/bin/sh", "/usr/local/bin/rclone-backup.sh"]
|
|
command: ["/opt/rclone-backup/config.env"]
|
|
```
|
|
|
|
### Использование
|
|
|
|
Скачиваем образ и собираем с `curl`:
|
|
```bash
|
|
docker pull rclone/rclone:latest
|
|
docker compose build --no-cache rclone-backup
|
|
```
|
|
|
|
Запускаем:
|
|
```bash
|
|
docker compose -f /opt/docker/rclone/docker-compose.yml run --rm rclone-backup
|
|
```
|
|
|
|
## Вывод
|
|
|
|
Пример лога:
|
|
|
|
```log
|
|
2026/04/16 21:28:11 Cloning BananaWrt
|
|
2026/04/16 21:28:15 NOTICE: Yandex backup_bananawrt: 0 differences found
|
|
2026/04/16 21:28:15 NOTICE: Yandex backup_bananawrt: 82 matching files
|
|
2026/04/16 21:28:51 Cloning Proxmox
|
|
2026/04/16 21:29:25 NOTICE: Yandex backup_proxmox: 0 differences found
|
|
2026/04/16 21:29:25 NOTICE: Yandex backup_proxmox: 51 matching files
|
|
```
|
|
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
<p align="center"><b>Успешная синхронизация</b></p>
|
|
<img src="./assets/ntfy_success.jpg" alt="ntfy success" width="400">
|
|
</td>
|
|
<td>
|
|
<p align="center"><b>Ошибка при синхронизации</b></p>
|
|
<img src="./assets/ntfy_warning.jpg" alt="ntfy warning" width="400">
|
|
</td>
|
|
</tr>
|
|
</table> |