Про скрипт резервного копирования на Python

Про скрипт резервного копирования на Python

Приветствую!

Лирический пост про то, как я начал писать бэкап скрипт на Python🧑‍💻.

Присоединяйтесь к нашему каналу в телеграм: t.me/r4ven_me, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат: t.me/r4ven_me_chat.

Данный пост лишь отметка текущего статуса моей задумки по реализации универсального бэкап скрипта. В будущем будет отдельная заметка с подробным описанием его работы и практическими примерами😉.

Сразу предупреждаю, что я не разработчик и никогда не хотел им быть😌.

Про желаемый функционал

Кратко опишу хотелки от итогового исполняемого файла:

  • Предварительная проверка уже запущенного процесса бэкапа;
  • Предварительный анализ доступного дискового пространства;
  • Создание архивов с помощью tar;
  • Копирование файлов с помощью rsync;
  • Создание дампов БД MySQL/MariaDB с помощью mysqldump;
  • Создание дампов БД PostgreSQL с помощью pg_dump;
  • Обработка необходимых параметров через аргументы скрипта;
  • Обработка произвольных дополнительных параметров для используемых утилит.

Опциональные возможности:

  • Сжатие файлов с указанием формата (gzip, bzip2, xz) и уровня сжатия (от 1 до 9);
  • Возможность создания бэкапа с удаленных машин с помощью SSH;
  • Удаление старых копий бэкапов в соответствии с заданными параметрами и обработкой исключений;
  • Шифрование конечных файлов с помощью gpg;
  • Отправка уведомления со статусом завершения работы скрипта в систему мониторинга Zabbix;
  • Использование конфиг файла в формате yaml для удобной и безопасной передачи параметров скрипту;

Вроде пока все😏.

Небольшой рассказ

А теперь немного бла бла бла😀.

Мой опыт показывает, что в современном IT, особенно при работе с Linux, без программирования никуда. Поэтому я стал изучать скрипты на Bash, чтобы автоматизировать большое количество рутины, с которой сталкиваюсь ежедневно. Но администрирование Linux не одним Bash’ем едино. И я стал все больше думать про Python, который очень тесно связан с Linux. К слову, почти каждый десткопный дистрибутив Linux с GUI из коробки имеет в составе интерпретатор Python и ПО, использующее этот язык программирования.

Но вернемся к теме поста. Стоить сразу отметить, что ранее на питоне я толком ничего не писал. Только читал и правил конфиги некоторых программ в Linux🤷‍♂️.

Как-то давно я немного пытался учить Python самостоятельно по замечательной книге: “Программирование на Python в примерах и задачах” за авторством Васильева А.Н👍. Но в силу отсутствия практических задач, связанных со змеёй, я бросил это занятие примерно на трети.

А примерно пол года назад я прошел отличный курс по питону для начинающих. Ну т.е. для совсем (и не очень) чайников. Правда ориентирован он был на аналитиков данных, но не суть. Там давалась база. Курс длился 3 месяца, по 2 занятия в неделю (+1 дополнительное по желанию). Такой формат мне пришелся по душе.

К сожалению по завершению курса, количество практических задач, где можно было бы задействовать знания по python не увеличилось. И полученные навыки ожидаемо стали забываться.

Но в один “прекрасный” день, я вернулся к своей задумке о написании универсального скрипта резервного копирования для своих нужд. И изначально планировал делать это на Bash. Но немного поразмыслив, решил встряхнуть пыль с почти забытых знаний об удушающей змее. Благо с доступностью нейросетей процесс изучения языков программирования стал в разы проще и комфортнее.

Вооружившись ChatGPT я приступил к написанию говнокода🧐. На данный момент я реализовал почти весь желаемый мною функционал, кроме шифрования. Оставил это “на десерт”🥞 и сейчас как раз работаю над этим👷‍♂️.

Изначально я поставил цель создать максимально компактный инструмент с минимумом зависимостей. Концепцию ООП я не применял. Поэтому получился простой и топорный скрипт, автоматизирующий “грязную” работу😌.

Если вам стало интересно, то скрипт доступен в моем репозитории на GitHub. Но имейте ввиду, что он еще на стадии разработки🛠.

После доработки и некоторых тестов, планирую сделать отдельную заметку с подробным описанием по его использованию. Поэтому подписывайтесь на нашу телегу, чтобы не пропустить. Или заглядывайте в Вороний чат, если есть желание пообщаться по теме Linux’а и опенсорс”😉.

Спасибо, что читайте!

Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии