Статья

Сохранение бэкапов HA на Yandex Disc

GitHub - jcwillox/hassio-rclone-backup: Home Assistant addon to automatically sync backups to remote locations using RcloneHome Assistant addon to automatically sync backups to remote locations using Rclone - GitHub - jcwillox/hassio-rclone-backup: Home Assistant addon to automatically sync backups to remote locations using Rclonehttps://github.com/jcwillox/hassio-rclone-backup

Сразу скажу, что это дополнение не умеет подготавливать файлы с бэкапом, а может сохранять уже готовые в выбранное облако. Мне для моих целей подходил Яндекс-диск. Установить саму утилиту в HA довольно легко. Настроить периодичность ее запуска - тоже (об этом поговорим чуть позже). Главное - это создать конфигурационный файл, в котором будут храниться данные для работы с определённым облаком. Для этого надо будет установить rclone на компьютер и произвести из консоли его настройку, а потом просто скопировать готовый конфигурационный файл в HomeAssitsnt.

Для начала регистрируем аккаунт в Яндексе. Потом берём любой комп с браузером. Ставим на него rclone. Как именно это делать, читаем здесь:

InstallRclone Installationhttps://rclone.org/install/

Переходим в режим командной строки, и набираем

plaintext
Копировать
rclone config

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

name> yadisk # Придумываем имя

Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Alias for a existing remote
   \ "alias"
 2 / Amazon Drive
   \ "amazon cloud drive"

 ...

23 / Yandex Disk
   \ "yandex"
24 / http Connection
   \ "http"
Storage> 23 # Выбираем Yandex Disk

Yandex Client Id - leave blank normally.
client_id> # Оставляем пустым

Yandex Client Secret - leave blank normally.
client_secret> # Оставляем пустым

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y

После чего откроется браузер и будет предложено войти в свой аккаунт на Яндексе, и затем разрешить rclone работать с диском. Всё разрешаем, на всё соглашаемся. Дальше в командной строке наш диалог продолжится и будет примерно таким:

plaintext
Копировать
--------------------
[yadisk]
type = yandex
client_id = 
client_secret = 
token = {"access_token":"AQAAAA...hlXXPE","token_type":"bearer","refresh_token":"1:jIvyMr...cn589PQyfw","expiry":"2019-08-07T12:37:22.149859353+06:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
yadisk               yandex

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Теперь ищем в нашем домашнем каталоге файл rclone.conf В Windows он находится по пути:

C:\Documents and Settings\<ВашПользователь>\AppData\Roaming\rclone>

В этом файле будет вот такая секция:

plaintext
Копировать
[yadisk]
type = yandex
client_id = 
client_secret = 
token = {"access_token":"AQAAAA...hlXXPE","token_type":"bearer","refresh_token":"1:jIvyMr...cn589PQyfw","expiry":"2019-08-07T12:37:22.149859353+06:00"}

Её содержимое надо перенести на сервер, на котором у нас крутится HomeAssistant. Создаем файл /config/rclone.conf и копируем туда эту секцию. Теперь ставим само дополнение. Остаётся настроить только периодичность копирования файлов. В конфигурационном файле дополнения есть строка вида:

plaintext
Копировать
schedule: 1 5 * * *

Это и есть периодичность. Первая позиция - минуты, вторая - часы. Если интересно, что обозначают остальные позиции, можно почитать как работает cron в Linux.

plaintext
Копировать
jobs:
  - name: Sync Daily Backups
    schedule: 1 5 * * *
    command: sync
    sources:
      - /backup
    destination: yadisk:/ha
    include: []
    exclude: []
    flags: {}
dry_run: false
config_path: /config/rclone.conf

Параметр dry_run обязательно должен иметь значение false, иначе утилита будет выполнять "пробный запуск" без реального переноса файлов. Параметр destination выглядит так <имя секции из конфига rclone>:/<имя каталога в облаке>

Важные замечания

1. Создавать бэкапы дополнение не умеет. Только копирует новые и удаляет старые. Бэкапы, как и раньше, создаются с помощью

Home Assistant Google Drive Backup

2. Утилита работает средне. У меня (сервер на raspberryPi, подключенный по WiFi) на копирование одного файла в 140 Мб тратит около 20 минут. Раз в 7 дней случаются ошибки. Но работает. И ошибки, как я понимаю, вина Яндекса, а не rclone
3. Сначала я протупил и думал, что помимо самого дополнения, на сервер с HomeAssistant я должен самостоятельно установить rclone. Оказалось, что это не так и rclone находится внутри самого плагина.


Yandex DisK )
Точно. Ну вот что за напасть. Проверял, проверял.... э-э-эх
Поверьте, 140 мегабайт за 20 минут это еще относительно нормально, беда в том, что если бекап будет чуть больше (мегов в 200) то он может однажды просто не пролезть, проблема действительно на стороне яндекса (они, правда, в этом не признаются и однообразно врут что проблема в ПО).
Я не так давно довольно много поигрался в попытках настроить фотобэкап через rclone на яндекс (в итоге безуспешно), но обнаружил какую-то закономерность - относительно неплохо все работает до 30-40мегабайт размера файла, а дальше минное поле (яндекс например до околонуля сбрасывает скорость приема), может пролезть может нет.
Хуже, то, что rclone будет проводить попытки дослать файл на облако а оно его будет отбивать раз за разом.
Для повышения стабильности и пролезаемости можно поиграться с параметром rclone --timeout 10m (например), до каких-то пор поможет.
Я сейчас пытаюсь собственный аддон на эту тему написать и заметил такую интересную штуку. Допустим берём tar архив и мечем его не меняя имени через Яндекс API на диск - скорость очень низкая. Теперь берём этот же файл и мечем его на диск в файл без указания расширения. Скорость в десять раз выше (как через веб-форму). При этом через вэб-форму видно, что это архив. То же касается и других типов файлов.

Я так понимаю, Яндекс так борется с попытками использовать ЯДиск в коммерческих целях для каких-нибудь промышленных бакапов иили файлообменников.
Не проще тянуть файл с ha по локалке и отправлять на яндекс ?
А как старые удалять?

Вернуться назад
Вернуться назад