Металл2024 Реклама
Метобр2024 Реклама

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

loopdetect
Идет загрузка
Загрузка
13.12.2023
995
5
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Статья относится к принтерам:
Prusa i4

Всем доброго времени суток. 

    В этой статье покажу how to организовать копирование автоматически создаваемых бэкапов octoprint (и не только) на Яндекс диск посредством Rclone.

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

    В последнее время у меня вернулся интерес к ковырянию с принтером, информации поступать стало очень много, заметки в документе-шпаргалке стали очень объемными и местами непонятными. Решил потихоньку структурировать все это дело здесь.

На статус первооткрывателя не претендую, просто делюсь своим опытом использования.

Предыстория:

    Имеется у меня значит старинный вундер-принтер Sunhockey Prusa i4 с полуторакилограммовым порталом экструдера и тяжеленным дрыгостолом, (привет 2016) который долгое время стоял невостребованным, так как у него с первого года эксплуатации сломался дисплей, с флешки им больше не попечатаешь. На проводе сидеть и таскать туда-сюда принтер мене было не радостно, а что-то делать с этим лень.¯\_(ツ)_/¯

    Недавно собрал яйца в кулак и у этого старика появился помощник в виде OctoPrint сервера упакованного в тв-приставку.

    Так как я пока пользователь линукса исключительно уровня HOW TO, то уже не раз положил настроенную-работоспособную систему на лопатки.

    О необходимости делать бэкапы естественно не вспоминаешь, пока не обделаешься))

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

    Первым делом я пытался реализовать автобэкап посредством плагина Google Drive Backup из репозитория OctoPrint, делал все по инструкции, но там все мудрено, создается приложение через google cloud platform для взаимодействия, к тому же, ничего не заработало, не стал разбираться, снес и забыл. R.I.P. 

    Потом меня осенило, что можно реализовать это внешним софтом. Нахрапом естественно ничего не вышло, пришлось пол дня заниматься тем самым HOW TO собирая из десяти инструкций и сообщений на форумах что-то работоспособное.

    Первой ссылкой в писке была статья о Rclone, в которой говорилось, что с его помощью можно удобно бэкапить заданные директории в облако.Софт кроссплатформенный, что в дальнейшем мне помогло в его конфигурации.

Приступим непосредственно к инструкции:

Для настройки потребуется:

  • YandexDisk данные для входа в аккаунт. (лично для меня самый удобный вариант, т.к. у меня это основное хранилище)
  • Windows система для получения токена от яндекс диска (думаю можно настроить все в linux, при наличии GUI и браузера, но у меня система только с CLI)
  • Rclone собственно программа для синхронизации нужной директории с облаком.

    Настроим автоматическое создание бэкапов в самом октопринт.

    Поможет в этом плагин Backup Scheduler, который устанавливается из встроенного менеджера плагинов, описывать процесс не буду, делается в один клик, приложу скрины из менеджера и как настроено у меня:

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

Пока активно вношу изменения в систему, бэкап делается при старте системы и ежедневно в 00:00 часов. (прожал исключение из бэкапа загруженных заданий печати и таймлапсов, для экономии места на диске)

В дальнейшем думаю будет достаточно еженедельного и при загрузке системы. 

#в linux бэкапы octoprint сохраняются в директорию пользователя:

octoprint:~/.octoprint/data/backup

#для пользователя root путь будет такой:

/home/octoprint/.octoprint/data/backup

Получаем конфиг с токеном для Rclone в Windows:

(опять же, повторюсь, возможно, для линукс систем с графическим интерфейсом и браузером - виндовс не нужен)

#Скачиваем Rclone для Windows с официального сайта

В скачанном архиве берем только файл rclone.exe кидаем его в корень диска С:\ (исключительно для удобства, ваш путь может быть любым)

Открываем командную строку CMD:

#переходим в директорию диска С

C:\Users\CAP>cd c:\

#запускаем конфигурацию Rclone 

c:\>rclone config

#жмем N (new remote)

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

#задаем имя (можем быть любым)

Enter name for new remote.name> yandex

#вываливается огромный список поддерживаемых сервисов (в данный момент 56) яндекс в этом списке под номером 53

Storage> 53
Option client_id.OAuth Client Id.Leave blank normally.Enter a value. Press Enter to leave empty. client_id> #оставляем пустым просто жмем enter

Option client_secret.OAuth Client Secret.Leave blank normally.Enter a value.Press Enter to leave empty.

client_secret> #оставляем пустым просто жмем enter

Edit advanced config?y) Yesn) No (default)y/n>n

Use web browser to automatically authenticate rclone with remote?    * Say Y if the machine running rclone has a web browser you can use.    * Say N if running rclone on a (remote) machine without web browser access.If not sure try Y. If Y failed, try N.y) Yes (default)n) Noy/n>y

#жмем "y" автоматически откроется браузер, логинимся под нужной учеткой, либо если уже залогинены просто даем разрешения на доступ приложению.

2023/12/12 19:01:43 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=N4aUpxx5y2023/12/12 19:01:43 NOTICE: Log in and authorize rclone for access2023/12/12 19:01:43 NOTICE: Waiting for code...

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)#получаем сообщение что все okay)Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)#возвращаемся в командную строку получаем сообщение что токен сгенерирован, сам токен, время окончания его работы.

2023/12/12 19:08:42 NOTICE: Got codeConfiguration complete.
Options:- type: yandex- token {"access_token":"y0_AgOdZzp_D8A","token_type":"bearer","refresh_token":"1:eR2t4Rs**************vYw:2q_AHyQ","expiry":"2024-12-11T19:08:42.9959556+05:00"}
Keep this "yandex" remote?y) Yes this is OK (default)e) Edit this remoted) Delete this remotey/e/d>y

#закончили

Current remotes:Name                 Type====                 ====yandex               yandex

#все ок)) жмем "q" выходим из режима конфигурации

#командой rclone config file смотрим путь где сохранился файл с нашим токеном:

c:\>rclone config fileConfiguration file is stored at:C:\Users\CAP\AppData\Roaming\rclone\rclone.conf

#командой type открываем конфиг, нежно копируем все содержимое)

c:\>type C:\Users\CAP\AppData\Roaming\rclone\rclone.conf

[yandex]type = yandextoken {"access_token":"y0_AgA**************************OPovkAHyQ","expiry":"2024-12-11T19:08:42.9959556+05:00"}

#windows нам больше не понадобится, Rclone можно удалять))

    Этап с получением токена у меня занял больше всего времени, все инструкции что мне попадались были к старым версиям софта, там и команды отличались и процесс был другой. Так же, я думал, что нужно создать приложение для взаимодействия с облаком как это было в мануале к плагину google drive backup (тот этап где нужно (не нужно) вводить client_id> и client_secret>)    

Далее осталось самое простое: установить Rclone, настроить, автоматизировать))

Установим Rclone в linux:

#не забываем обновить списки пакетов из репозиториев)

octoprint@OctoBox:~$ sudo apt update

#устанавливаем Rclone

octoprint@OctoBox:~$ sudo apt install rclone

#по завершению установки смотрим путь где должен храниться файл конфигурации

octoprint@OctoBox:~$ rclone config fileConfiguration file is stored at:/home/octoprint/.config/rclone/rclone.confoctoprint@OctoBox:~$

#нежно копируем путь, создаем по нему файл конфигурации

octoprint@OctoBox:~$ nano /home/octoprint/.config/rclone/rclone.conf

#в файл вставляем (Ctrl+U) скопированный в Windows конфиг с токеном, сохраняем (Ctrl+O), подтверждаем (enter), выходим (Ctrl+X)

#получаем подтверждение Oauth и заодно доступ к диску (*после lsd указываем то имя которое указали при получении токена [yandex]) команда выведет корневой каталог директорий.

octoprint@OctoBox:~$ rclone lsd yandex:

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

#создаем директорию для бэкапов, например (имя можно любое)

octoprint@OctoBox:~$ rclone mkdir yandex:octobackup

#синхронизируем содержимое локального каталога(директория в которую складывает свои бэкапы octoprint) с директорией созданной нами в облаке:

octoprint@OctoBox:~$ rclone sync ~/.octoprint/data/backup yandex:octobackup

#проверяем наш успешный успех командой (ну или в браузере смотрим содержимое и радуемся проделанной работе)

octoprint@OctoBox:~$ rclone lsl yandex:octobackup
    777321 2023-12-11 20:23:30.056598219 Wazzzzup-backup-20231211-202328.zip
    235755 2023-12-12 00:00:06.081267319 Wazzzzup-daily-20231212-000005.zip
octoprint@OctoBox:~$

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)#это еще не все, теперь нам нужно автоматизировать копирование каталога (кидаем все это дело в крон и дело в шляпе)

#в файл автоматизации пишем команды:

octoprint@OctoBox:~$ crontab -e

#первая команда запускает копирование директории каждый день в 00:05 *минута *час *день *месяц *день_недели ( что не нужное, просто оставляем звездочку)

5 0 * * * rclone copy ~/.octoprint/data/backup yandex:octobackup

#вторая команда запускает копирование при каждом старте системы, либо можно указать как удобно будет именно вам:## @reboot - при загрузке, только один раз;## @yearly, @annually - раз год;## @monthly - раз в месяц;## @weekly - раз в неделю;## @daily, @midnight - каждый день;## @hourly - каждый час.

@reboot rclone copy ~/.octoprint/data/backup yandex:octobackup

#используем атрибут copy вместо sync по причине того, что при синхронизации, если из локальной директории файлы удалить, то они удалятся и с директории на облаке, а при копировании сравнивается содержимое каталогов и загружаются только те фалы, которые отсутствуют в облаке.

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)#сохраняем (Ctrl+O), подтверждаем (enter), выходим (Ctrl+X)

На этом инструкция заканчивается, надуюсь она получилась, понятной, подробной и не нудной.

Всех обнял, покружил и на место поставил.

Всем рабочих и стабильных систем, счастья, любви, бобра и ласки))

Как спасти осьминога от вымирания (Автобэкап OctoPrint в Яндекс диск через Rclone)

пы.сы. Это моя первая статья, не кусайтесь)

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама