Про скрипт резервного копирования на 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’а и опенсорс”😉.
Спасибо, что читайте!