2026-04-17 03:21:58 +04:00
2026-04-17 03:12:20 +04:00
2026-04-17 01:49:30 +04:00
2026-04-17 03:21:58 +04:00

rclone-backup

Скрипт для автоматизации бэкапов с помощью rclone в облако Яндекс.Диск с уведомлениями в ntfy.

Конфиг

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" # Лог-файл

Использование

Запуск бэкапа вручную:

./backup.sh my-backup.env

Добавление в Cron

Для ежедневного запуска в 05:00:

0 5 * * * /opt/rclone-backup/rclone-backup.sh /opt/rclone-backup/config.env

Docker

Структура:

.
├── rclone-backup/                # Скрипты и конфиги окружения
│   ├── rclone-backup.sh          # Основной скрипт
│   └── config.env                # Конфиг
├── rclone-data/rclone-backup.log # лог-файл
├── rclone-data/rclone.conf       # конфиг rclone
├── docker-compose.yml
└── Dockerfile                    # устаналиваем curl

Dockerfile:

FROM rclone/rclone:latest
RUN apk add --no-cache curl

docker-compose.yml:

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
      # лог-файл. предварительно создать touch ./rclone-backup.log
      - ./rclone-backup.log:/var/log/rclone-backup.log
      # конфиг самого rclone, хранящий настройки для облака
      - ./rclone-data/rclone.conf:/config/rclone/rclone.conf:ro
      # непосредственно сама директория с бэкапами для синхронизации
      - /opt/docker/samba/openwrt/:/mnt/backup/openwrt:ro
    entrypoint: ["/bin/sh", "/usr/local/bin/rclone-backup.sh"]
    command: ["/opt/rclone-backup/config.env"]

Использование

Скачиваем образ и собираем с curl:

docker pull rclone/rclone:latest
docker compose build --no-cache backup

Запускаем:

docker compose -f /opt/docker/rclone/docker-compose.yml run --rm rclone-backup

Вывод

Пример лога:

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

Успешная синхронизация

ntfy success

Ошибка при синхронизации

ntfy warning
S
Description
No description provided
Readme
433 KiB
Languages
Shell 100%